Azure Active Directory B2C是否可以使用Oauth或Open ID?

时间:2017-04-02 17:31:12

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

我按照此示例成功实施了Azure Active Directory,以便在Web应用中进行用户管理/身份验证/登录: 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?

由于

3 个答案:

答案 0 :(得分:4)

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进行令牌验证和声明检索。看看吧。

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:2)

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

  

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