ルールでログイベントをエクスポートする

Auth0ルールを作成して、ユーザーのサインアップ、ログイン、ユーザーの位置などの特定のイベントをキャプチャし、そのデータを希望する分析サービスに送信することができます。以下から、いくつかのサービスのリンクを選ぶことができます。

ルール例

以下が、いくつかのルール例になります。ほとんどの場合、ルールを実行する前に、サービスから取得した書き込みキー値をルールのグローバル構成オブジェクトに保存する必要があります。以下の例では、書き込みキー値が必要です。

さらに例を見たい場合は、GitHubで「Auth0ルールリポジトリ」を参照してください。

Keen

Keenは、アプリで生成されたイベントをキャプチャし、分析するサービスを提供します。この例では、ルールはIPアドレス(位置を推定するため)、ユーザーID、ユーザー名などコンテキストに基づいた情報を送信します。このルールでは、user.signedUpプロパティを使用してイベントタイプを追跡します。プロパティがtrueに設定されると、イベントをログインと推定します。そうしないと、イベントを新しいサインアップと推定し、trueに設定します。したがって、ユーザーが次にログインする際、イベントはログインとして記録されます。

function(user, context, callback) {

  var request = require('request');

  if(user.signedUp){
    return callback(null, user, context);
  }

  var writeKey = configuration.KEENIO_WRITE_KEY;
  var projectId = configuration.KEENIO_PROJECT_ID;
  var eventCollection = 'signups';

  var keenEvent = {
    userId: user.user_id,
    name: user.name,
    ip: context.request.ip //Potentially any other properties in the user profile/context
  };

  request.post({
      method: 'POST',
      url: 'https://api.keen.io/3.0/projects/' + projectId + '/events/' + eventCollection,
      headers: {
        "Authorization: " + writeKey,
        'Content-type': 'application/json'
      },
      body: JSON.stringify(keenEvent),
      }, 
      function (e, r, body) {
        if( e ) return callback(e,user,context);
        //We assume everything went well
        user.persistent.signedUp = true;
        return callback(null, user, context);
       });
}

Was this helpful?

/

Segment

Segmentは、単一のAPIで大量のアナリティクスを提供します。この例では、ルールはSegmentにサインアップとログインイベントを送信します。SegmentのNode.jsライブラリを使用して、Auth0データを記録します。

function(user, context, callback) {
  var Analytics = require('analytics-node');
  var analytics = new Analytics(configuration.WRITE_KEY, { flushAt: 1 });

  // Note: Set { flushAt: 1 } and use analytics.flush to ensure
  // the data is sent to Segment before the rule/Webtask terminates

  // Identify your user
  analytics.identify({
      userId: user.user_id,
      traits: {
      email: user.email,
      signed_up: user.created_at,
      login_count: user.logins_count
    },
    "context": {
      "userAgent": context.request.UserAgent,
      "ip": context.request.ip
    }
  });
  analytics.track({
    userId: user.user_id,
    event: 'Logged In',
    properties: {
      clientName: context.clientName,
      clientID: context.clientID,
      connection: context.connection
    },
    "context": {
      "userAgent": context.request.UserAgent,
      "ip": context.request.ip
    }
  });
  analytics.flush(function(err, batch){
    callback(null, user, context);
  });
}

Was this helpful?

/

Splunk

Splunkは、データの検索、監視、および調査を行うためのWebインターフェースを提供します。この例では、ルールはSplunkにサインアップとログインイベントを送信します。SplunkのREST APIを使用して、Auth0データを記録します。SplunkのAPIはベーシックとトークンベースの認証をサポートします。この例では、トークンベースの認証を使用します。

上のKeenでの例のように、このルールでは、user.app_metadata.signedUpプロパティを使用してイベントタイプを追跡します。

function (user, context, callback) {
  const request = require('request');

  user.app_metadata = user.app_metadata || {};
  const endpoint = 'https://http-inputs-mysplunkcloud.example.com:443/services/collector'; // replace with your Splunk HEC endpoint;

  //Add any interesting info to the event
  const hec_event = {
    event: {
      message: user.app_metadata.signedUp ? 'Login' : 'Signup',
      application: context.clientName,
      clientIP: context.request.ip,
      protocol: context.protocol,
      userName: user.name,
      userId: user.user_id
    },
    source: 'auth0',
    sourcetype: 'auth0_activity'
  };

  request.post({
    url: endpoint,
    headers: {
      'Authorization': 'Splunk ' + configuration.SPLUNK_HEC_TOKEN
    },
    strictSSL: true, // set to false if using a self-signed cert
    json: hec_event
  }, function(error, response, body) {
    if (error) return callback(error);
    if (response.statusCode !== 200) return callback(new Error('Invalid operation'));
    user.app_metadata.signedUp = true;
    auth0.users.updateAppMetadata(user.user_id, user.app_metadata)
      .then(function () {
        callback(null, user, context);
      })
      .catch(function (err) {
        callback(err);
      });
  });

}

Was this helpful?

/

もっと詳しく