【问题标题】:Logging calls to Identity Provider with custom policies in Azure AD B2C在 Azure AD B2C 中使用自定义策略记录对身份提供者的调用
【发布时间】:2019-11-28 06:37:06
【问题描述】:

我正在尝试使用自定义策略在 Azure AD B2C 中集成自定义 OpenID Connect 身份提供程序。 但是,在使用授权代码从 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 不在我的控制之下,因此我无法将它们记录在那里。

【问题讨论】:

  • 大多数情况下,IDP 使用 302 重定向。您可以从开发者工具中看到这些调用和响应。
  • 确实,但我看不到获取访问令牌的调用,或对声明端点的调用

标签: azure oauth-2.0 azure-ad-b2c openid-connect


【解决方案1】:

虽然我没有找到记录更多信息的方法,但我能够通过使用反向代理拦截对外部 IdP 的所有调用来解决我的问题。这表明b2c正在使用client_secret_post获取访问令牌,而IdP仅支持client_secret_basic

【讨论】:

  • 您是如何实际解决问题的,有没有办法将 B2C 配置为使用 client_secret_basic?
  • @JussiPalo 是的,您可以在 OpenId Connect 提供商的技术配置文件的元数据中使用 <Item Key="token_endpoint_auth_method">client_secret_basic</Item>。我不记得我在哪里找到的,因为文档中没有提到它,但我创建了一个问题来添加它:github.com/MicrosoftDocs/azure-docs/issues/35662
  • 谢谢,太糟糕了,它对我的​​ LinkedIn 和 Google IdP 没有任何影响,通过自定义策略配置时仍然提供 AADB2C90289。
  • 您如何在 b2c 和 IDP 之间放置反向代理 - 将您的自定义策略指向代理?还是有代理所有 b2c 调用的挂钩?
  • @felickz 确实将自定义策略指向了代理
【解决方案2】:

我有相同的错误/症状,但我的根本原因不同。就我而言,我的 B2C 策略是使用 GET 而不是 POST 发送令牌请求,并且 IDP 服务器仅支持 POST。为了纠正这个问题,我必须在我的 OAuth2 技术配置文件的元数据部分设置以下内容。

<Item Key="HttpBinding">POST</Item>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多