Azure 在AAD凭据下记录API调用
我有一堆API在Azure中运行在一个APIM后面,它需要我的AAD进行OIDC身份验证,一切正常,但我想知道监视/记录哪个用户调用哪个API的最佳方式是什么。这些信息在APIM的OIDC服务生成的JWT中可用,因此我希望它是可能的 默认的APIM服务分析记录一些基本信息,例如,在不做任何特殊操作的情况下,每个调用都会以随机生成的(持久的?)用户id记录在用户“匿名”下 我可以创建一组APIM用户,将相应的订阅密钥分发给我的AAD用户,并在发出请求时将密钥添加到他们的头中。有了这个,这些电话就会被记录在他们的名字下,这正是我想要的。问题是它似乎并不特别安全。是什么阻止了订阅密钥的共享和/或AAD用户凭据与APIM订阅密钥之间的不匹配 正确的方法是什么?可以从APIM/AAD内部完成,还是需要使用事件中心之类的工具 编辑: 我找到了一个可行的解决方案。通过启用Application Insights,以下入站API策略将JWT令牌的名称字段存储为跟踪Azure 在AAD凭据下记录API调用,azure,logging,azure-active-directory,azure-api-management,apim,Azure,Logging,Azure Active Directory,Azure Api Management,Apim,我有一堆API在Azure中运行在一个APIM后面,它需要我的AAD进行OIDC身份验证,一切正常,但我想知道监视/记录哪个用户调用哪个API的最佳方式是什么。这些信息在APIM的OIDC服务生成的JWT中可用,因此我希望它是可能的 默认的APIM服务分析记录一些基本信息,例如,在不做任何特殊操作的情况下,每个调用都会以随机生成的(持久的?)用户id记录在用户“匿名”下 我可以创建一组APIM用户,将相应的订阅密钥分发给我的AAD用户,并在发出请求时将密钥添加到他们的头中。有了这个,这些电话就会
<trace source="MyApi" severity="information">
<message>@(context.Request.Headers.GetValueOrDefault("Authorization","No auth header").AsJwt()?.Claims.GetValueOrDefault("name", "No name field"))</message>
</trace>
@(context.Request.Headers.GetValueOrDefault(“授权”,“无授权标头”).AsJwt()?.Claims.GetValueOrDefault(“名称”,“无名称字段”))
如果JWT不包含字段名并拒绝API调用(可能是错误的请求),也许我还应该添加一个策略
无论如何,这听起来像是一种方法,但不是一种合适的解决方案,而不是一个独特的问题。你是对的,这是不可能开箱即用的。我可以看到两种解决方案:
你能添加你的解决方案作为答案吗?但它是解决方案吗。我的意思是,它是有效的,但可能不是真正干净的。