Azure AD B2C自定义策略连接Autodesk Forge时遇AADB2C90289错误
排查Azure AD B2C自定义策略对接Autodesk Forge的AADB2C90289错误
咱们先从你给出的错误和Application Insights日志入手分析:AADB2C90289是B2C对接第三方身份提供商时的通用连接失败错误,而日志里的Microsoft.Cpim.Protocols.PartnerProtocolException说明问题出在OAuth2协议交互层面,不是简单的网络连通性问题。下面是具体的排查方向和解决方法:
1. 先揪出最可能的核心问题:响应类型配置错误
看你日志里的MSG片段显示"ResponseType":"id_token",这大概率是问题所在!Autodesk Forge的OAuth2只支持授权码流程(Authorization Code Flow),而不是implicit流程(直接返回id_token到前端)。你需要修改自定义策略里的TechnicalProfile配置:
- 将
<ResponseType>从id_token改成code - 确保配置了正确的
TokenEndpoint(Forge的token端点是https://developer.api.autodesk.com/authentication/v2/token),让B2C能拿授权码去交换access token和用户信息
2. 验证OAuth2端点的正确性
Autodesk Forge的端点和Facebook完全不同,务必检查你替换后的<ClaimsProvider>配置:
- 授权端点:
https://developer.api.autodesk.com/authentication/v2/authorize - Token端点:
https://developer.api.autodesk.com/authentication/v2/token - 用户信息端点:
https://developer.api.autodesk.com/userprofile/v1/users/@me
要确保这些地址没有拼写错误(比如漏了v2或者userprofile路径)。
3. 核对客户端凭证与回调URL
- 检查B2C里配置的Client ID/Secret是否和Autodesk Forge开发者控制台里的完全一致,注意Secret不要有多余空格或特殊字符遗漏
- 确认Forge应用的回调URL和B2C要求的完全匹配:格式为
https://<你的B2C租户名>.b2clogin.com/<你的B2C租户名>.onmicrosoft.com/oauth2/authresp,这个必须在Forge控制台的应用设置里添加,否则Forge会拒绝回调请求
4. 检查范围(Scope)配置
Autodesk Forge需要特定的范围才能返回用户信息,确保你的策略里配置了正确的scope:
<InputClaim ClaimTypeReferenceId="scope" DefaultValue="openid profile"/>
openid和profile是获取用户基本信息的必要范围,不要遗漏。
5. 验证声明映射是否匹配
Forge的用户信息接口返回的字段和Facebook不同,要确保你的<OutputClaims>映射正确,比如:
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="username"/> <OutputClaim ClaimTypeReferenceId="userId" PartnerClaimType="userId"/>
如果映射了Forge没有返回的字段,也会导致协议交互失败。
快速验证步骤
先手动用Postman走一遍Forge的OAuth2流程:
- 调用授权端点获取授权码
- 用授权码调用token端点获取access token
- 用access token调用用户信息端点获取用户数据
如果这几步都能成功,说明Forge应用本身没问题,问题肯定出在B2C策略的配置细节上。
内容的提问来源于stack exchange,提问作者Alvaro Ortega Pickmans
相关产品推荐
相关产品推荐

