Azure自定义声明提供者配置遇AADSTS1100001不可重试错误
解决AADSTS1100001错误及日志追踪方案
一、排查AADSTS1100001错误的核心步骤
- 验证自定义声明配置:确认你在应用注册的「令牌配置」中已添加
correlationId和customRoles这两个自定义声明。AAD仅允许返回预先配置的自定义声明,未配置的字段会触发无效请求错误。 - 修正响应字段合法性:确保返回的
claims中无undefined值。你的代码中correlationId可能从query获取到undefined,建议优先从请求body提取,并设置默认空字符串避免无效值。 - 显式设置HTTP响应状态码:在函数响应中明确设置
status: 200,AAD要求自定义声明提供者必须返回200 OK响应,否则会判定请求无效。 - 检查JSON格式与拼写:确认
@odata.type的拼写完全正确(注意大小写和命名空间),响应JSON不能存在语法错误(如多余逗号、缺失引号)。
二、优化后的函数代码示例
import { AzureFunction, Context, HttpRequest } from "@azure/functions" const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> { context.log(`request method: ${req.method}`); context.log(`request headers: ${JSON.stringify(req.headers)}`); context.log(`request body: ${JSON.stringify(req.body)}`); // 优先从请求body获取correlationId,避免返回undefined const correlationId = req.body?.data?.authenticationContext?.correlationId || ""; context.log(`correlationId: ${correlationId}`); const user = req.body?.data?.authenticationContext?.user; context.log(`user: ${JSON.stringify(user)}`); const responseBody = { data: { "@odata.type": "microsoft.graph.onTokenIssuanceStartResponseData", actions: [ { "@odata.type": "microsoft.graph.tokenIssuanceStart.provideClaimsForToken", claims: { correlationId, customRoles: ["Writer", "Editor"] } } ] } }; // 输出响应日志,便于排查格式问题 context.log(`response body: ${JSON.stringify(responseBody)}`); context.res = { status: 200, // 显式返回200状态码 body: responseBody }; }; export default httpTrigger;
三、获取底层错误追踪的方法
- 函数应用日志:进入函数应用的「监控」->「日志」,运行查询
traces | where message contains "response body",查看函数返回的完整响应内容,确认是否符合AAD格式要求。 - Azure AD登录日志:进入Azure AD的「日志」->「登录日志」,搜索错误中的Correlation ID(
cbcd178c-4859-40c5-9193-43693382f315),点击记录的「详情」->「错误」部分,通常会显示具体失败原因(如未配置自定义声明)。 - 启用AAD诊断日志:将Azure AD诊断日志发送到Log Analytics工作区,运行查询
AuditLogs | where CorrelationId == "cbcd178c-4859-40c5-9193-43693382f315",获取更详细的错误上下文。
内容的提问来源于stack exchange,提问作者Ryan Pierce Williams
相关产品推荐
相关产品推荐

