Azure B2C用户旅程SigninLogs显示通用错误,如何监控API调用等异常?
问题解答
一、为何SigninLogs仅显示通用错误?
Azure B2C的SigninLogs设计定位是记录身份验证流程的顶层结果,而非用户旅程中每个中间步骤的细粒度执行细节:
- 出于安全考量,B2C会将用户旅程中后端环节(如API调用失败)的异常统一映射为通用身份验证错误(如"Invalid Username or Password..."),避免向外部泄露内部流程的敏感信息。
SigninLogs的Schema仅聚焦于身份验证最终状态、用户标识、客户端信息等核心结果数据,不会存储用户旅程中间步骤(如API连接器调用)的具体异常详情。
二、如何通过Log Analytics监控用户旅程的API连接器异常?
可以通过以下几种方式实现细粒度监控:
1. 利用AuditLogs查询API连接器调用详情
Azure B2C的AuditLogs会记录用户旅程的全步骤执行信息,包括API连接器的调用状态、错误描述。在Log Analytics中使用Kusto查询筛选异常事件:
AuditLogs | where OperationName has "API Connector" | where ResultType != "Success" | project TimeGenerated, OperationName, ResultDescription, TargetResources, InitiatedBy.UserPrincipalName
该查询会返回所有API连接器调用失败的事件,包含具体错误信息、触发时间和关联用户。
2. 配置自定义策略的日志输出(针对自定义用户旅程)
如果使用自定义策略,可以在API连接器步骤中添加日志记录逻辑,将API请求/响应、错误详情写入Log Analytics的自定义表或Events表。例如在策略中添加日志输出的技术配置:
<TechnicalProfile Id="WriteAPIErrorLog"> <DisplayName>Record API Connector Error</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureBlobProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="StorageContainer">b2c-api-logs</Item> <Item Key="StorageAccountName">your-storage-account</Item> <Item Key="AzureSubscriptionId">your-subscription-id</Item> <Item Key="ResourceGroupName">your-resource-group</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="correlationId" /> <InputClaim ClaimTypeReferenceId="apiErrorDetails" /> </InputClaims> </TechnicalProfile>
后续可通过Azure Blob与Log Analytics的集成,将日志同步到工作区进行查询分析。
3. 关联Application Insights与Log Analytics数据
如果已通过Application Insights捕获API连接器的具体错误,可将AI数据导入Log Analytics工作区,通过CorrelationId关联SigninLogs和AI日志,实现端到端问题定位:
SigninLogs | where ResultDescription contains "Invalid Username or Password" | join kind=inner ( AppEvents | where Name == "APIConnectorFailure" ) on CorrelationId | project TimeGenerated, UserPrincipalName, SigninLogs.ResultDescription, AppEvents.Properties.ErrorDetails
4. 创建异常告警规则
基于Log Analytics中的API连接器失败事件创建告警规则:
- 选择
AuditLogs作为数据源,设置筛选条件(如ResultType != "Success"且OperationName has "API Connector") - 配置触发阈值(如5分钟内出现1次失败)和通知方式(邮件、Teams等),实现异常实时告警。
内容的提问来源于stack exchange,提问作者Erkan Y.
相关产品推荐
相关产品推荐

