2016-10-21 2 views
0

私はApplication Insightsを使用して、APIのテレメトリを収集しています。認証されたクライアント(モバイルアプリなど)のみがAPIのリソースにアクセスできます。これは、OAuth2クライアントの資格情報フローを使用しています。システムにユーザーがいません。APIの認証されたユーザーコンテキストを設定していますか?

ユーザコンテキストのAuthenticatedUserIdの値にclient_id(実際にはユーザを表しているのではなく、「認証済みのアプリケーションまたはデバイス」)を設定するのは意味がありますか?

現在、私たちはカスタムフィールドとしてclient_idを保存していますが、テレメトリのコンテキスト内で送信される「ユーザー」セクションがあることがわかりました。

public class ClientIdTelemetryInitialiser : TelemetryInitializerBase 
{ 
    public ClientIdTelemetryInitialiser(IHttpContextAccessor contextAccessor) 
     : base(contextAccessor) 
    { } 

    protected override void OnInitializeTelemetry(
      HttpContext platformContext, 
      RequestTelemetry rootRequestTelemetry, 
      ITelemetry telemetry) 
    { 
     var claims = platformContext.User.Claims; 
     var clientId = claims.SingleOrDefault(x => x.Type.Equals("client_id", StringComparison.InvariantCultureIgnoreCase)); 

     // Old way of doing it 
     rootRequestTelemetry.Context.Properties["client_id"] = clientId.Value; 

     // New way of doing it?? 
     rootRequestTelemetry.Context.User.AuthenticatedUserId = clientId.Value; 
    } 
} 

答えて

1

はい、context.userのIDフィールドを使用して、必要な種類のIDを使用できます。

これらのフィールドを使用すると、ポータルの "ユーザー"ベースのグラフの一部は、前に何も表示していなかった場合にはに点灯する必要があります。

また、ユーザーが認証される前に物事を追跡するために使用できるuser.AnonymousIdもあります(そのようなことがあった場合)。

関連する問題