ルールでログイベントをエクスポートする
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?