【问题标题】:Does Azure Active Directory B2C work with Oauth or Open ID?Azure Active Directory B2C 是否与 Oauth 或 Open ID 一起使用?
【发布时间】:2017-04-10 00:34:05
【问题描述】:

我在 Web 应用程序中成功实现了 Azure Active Directory 用于用户管理/身份验证/登录,如下示例: Azure Sample AAD with Flask

我决定尝试 Azure Active Directory B2C,因为它集成了各种社交应用程序。但是,我无法让烧瓶应用程序使用 OAuth 2.0 工作,因为 Azure AD B2C 似乎与 OAuth 2.0 不兼容。我找到了一些说明 Azure AD B2C 需要 Open ID Connect 的文档。

能否请您确认 Azure Active Directory B2C 是否需要 Open ID Connect,或者它是否也适用于 OAuth 2.0?

谢谢

【问题讨论】:

  • 应该知道 OpenID [1.0|2.0} 和 OpenID Connect 之间存在差异

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


【解决方案1】:

值得一提的是,Azure Active Directory B2C (AAD B2C) 支持 both OpenID ConnectOAuth 2.0,因为它使用这两种协议来交换信息和安全令牌。但是,AAD B2C "extends" 这些协议通过引入策略来处理注册、登录和一般帐户管理的用户体验。

这是什么意思?首先,这意味着您无法创建自己的注册/登录体验,您只能将用户重定向到正确的策略 (which you to some extent can customize)。您不能为此创建自己的注册/登录 UI,并且您只能为所提供的基于 Web 的 UI 设置样式/品牌。

所以为了验证使用AAD B2C你可以关注this guide,它应该很容易适应Python。您只需将用户重定向到 AAD B2C 的 /authorize 端点,然后 validate the JWT you receive

【讨论】:

    【解决方案2】:

    Azure AD B2C 支持 OpenID Connect 和 OAuth 2.0,如官方 reference protocols documentation 中所述。

    为了能够使用 OAuth 2.0 和 Flask 通过 Azure AD B2C 登录用户,您需要调整示例以遵循此示例中使用的 OAuth 2.0 方法:An Android application with Azure AD B2C using OAuth。您需要适应的关键事项:

    • 您需要指定 B2C 授权和令牌端点:https://login.microsoftonline.com/tfp/TENANT_NAME/POLICY_NAME/oauth2/v2.0/authorizeExample from Android sample
    • 您需要将应用程序/客户端 ID 添加为范围。 Example from Android sample
    • 您将无法调用 Graph 的 /me 端点进行令牌验证和获取用户详细信息。您需要自己验证令牌并从中提取声明(最好通过一个优秀的 JWT 开源库,因为这并非易事,不幸的是,我目前不知道有什么可以推荐的)。

    编辑

    我创建了一个python sample for Azure AD B2C 并使用python-jose 进行令牌验证和声明检索。看看吧。

    【讨论】:

      【解决方案3】:

      根据文档here,Azure AD B2C 支持 OpenID Connect 和 OAuth 2.0 协议。

      Azure Active Directory (Azure AD) B2C 提供身份即服务 通过支持两种行业标准协议为您的应用程序:OpenID 连接和 OAuth 2.0。该服务符合标准,但任何两个 这些协议的实现可能会有细微的差别。

      【讨论】:

      • 谢谢。该文档还指出:“如果您要构建托管在服务器上并通过浏览器访问的 Web 应用程序,我们建议使用 OpenID Connect。如果您想使用 Azure AD B2C 将身份管理添加到您的移动或桌面应用程序,您应该使用 OAuth 2.0 而不是 OpenID Connect。” link。我正在尝试确定这是 必须 使用 Open Id Connect 还是 recommended 真的意味着它是可选的。
      • 为了澄清我之前的评论,我正在构建一个 Flask Web 应用程序,因此 推荐 方法是 Open Id Connect。但是,对于本机应用程序(移动或桌面),明显的必需方法是 OAuth 2.0。所以,我需要澄清一下推荐的 web 应用方法是否真的必需。我成功地将 Flask-OAuthlib 与 Azure AD 一起使用,但是当我切换到 Azure AD B2C 时,Flask-OAuthlib 在 AAD B2C 上出现了问题。我更喜欢使用 Flask-OAuthlib,但不确定我是否必须将 flask-oidc 用于 Open Id Connect,这就是错误的原因。
      • 如果其他人遇到类似问题,请回复,答案是 Web 应用程序不需要 Open Id Connect。
      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2016-08-13
      相关资源
      最近更新 更多