我正在使用Application Insights来收集API的遥测。只有经过身份验证的客户端(如移动应用)才能访问API的资源。这是使用OAuth2客户端凭据流。系统中没有用户。
将client_id
(实际上不代表用户而非代表“经过身份验证的应用程序或设备”)设置为用户上下文中的AuthenticatedUserId
值是否有意义?
目前我们将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;
}
}
答案 0 :(得分:1)
是的,您可以使用context.user
ID字段来使用您想要的任何类型的ID。
如果你使用这些字段,那么" user"如果以前没有显示任何内容,门户中的基础图表应为您点亮。
还有一个user.AnonymousId可用于在用户进行身份验证之前跟踪事物,如果有这样的话。