我正在尝试使用自定义策略将自定义OpenID Connect身份提供程序集成到Azure AD B2C中。 但是,使用授权码从IdP重定向回后,自定义用户流失败,并显示以下错误(使用MSAL.js):
login failure {"_error":"server_error","_errorDesc":"AADB2C90289: We encountered an error connecting to the identity provider. Please try again later.\r\nCorrelation ID: 97809cc4-04e8-47a3-9263-de57260e7979\r\nTimestamp: 2019-07-18 15:47:32Z\r\n","_scopes":""}
我已经启用了到Application Insights的日志记录,但是唯一可以找到的相关信息是:
{
""Kind"": ""HandlerResult"",
""Content"": {
""Result"": true,
""RecorderRecord"": {
""Values"": [
{
""Key"": ""SendErrorTechnicalProfile"",
""Value"": ""OAuth2ProtocolProvider""
},
{
""Key"": ""Exception"",
""Value"": {
""Kind"": ""Handled"",
""HResult"": ""80131500"",
""Message"": ""We encountered an error connecting to the identity provider. Please try again later."",
""Data"": {
""IsPolicySpecificError"": false
}
}
}
]
},
""Statebag"": {
""SE"": {
""c"": ""2019-07-18T13:46:21.1438143Z"",
""k"": ""SE"",
""v"": """",
""p"": true
}
}
}
},
是否可以记录对Idp的实际网络调用以查看出了什么问题? Idp不在我的控制之下,因此我无法在其中记录它们。
答案 0 :(得分:0)
虽然我找不到记录更多信息的方法,但是我可以通过使用反向代理拦截对外部IdP的所有调用来解决我的问题。这表明b2c正在使用client_secret_post
来获取访问令牌,而IdP仅支持client_secret_basic
。
答案 1 :(得分:0)
我有相同的错误/症状,但我的根本原因不同。就我而言,我的 B2C 策略是使用 GET 而不是 POST 发送令牌请求,并且 IDP 服务器仅支持 POST。为了纠正这个问题,我必须在我的 OAuth2 技术配置文件的元数据部分设置以下内容。
<Item Key="HttpBinding">POST</Item>