2017-04-02 51 views
1

我成功地实施了Azure中的Active Directory用户管理/认证/注册的Web应用程序,下面这个例子: Azure Sample AAD with FlaskAzure Active Directory B2C是否使用Oauth或Open ID?

我决定尝试一下,因为它集成了各种社交应用的Azure的Active Directory的B2C。但是,由于Azure AD B2C似乎与OAuth 2.0不兼容,因此无法使用OAuth 2.0工作。我发现一些说明Azure AD B2C需要Open ID Connect的文档。

您能否确认Azure Active Directory B2C是否需要Open ID Connect,或者它是否可以与OAuth 2.0一起使用?

由于

+0

应该意识到OpenID [1.0 | 2.0}和OpenID Connect –

回答

2

基于文档here上,天青AD B2C支持ID连接和OAuth 2.0协议。 OpenID的 连接和OAuth 2.0:

Azure的活动目录(AD天青)由B2C支持两个行业标准协议提供身份为您的应用程序服务 。该服务符合标准,但这些协议的任何两个实现可能会有细微差别。

+0

之间的区别谢谢。该文档还指出:“如果您正在构建托管在服务器上并通过浏览器访问的Web应用程序,我们建议使用OpenID Connect。如果您想通过使用Azure AD B2C将身份管理添加到移动或桌面应用程序,应该使用OAuth 2.0而不是OpenID Connect。“ [链接](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oidc)。我试图找出这是一个*必须*使用Open Id Connect或*推荐*真的意味着它是可选的。 – scurry

+0

为了澄清我以前的评论,我正在构建一个Flask网络应用程序,所以*推荐*方法是Open Id Connect。但是,本机应用程序(移动或桌面)的明显*必需*方法是OAuth 2.0。所以,我需要澄清一下,对于网络应用的*推荐*方法是否真的*是必需的*。我成功地使用了Azure AD中的Flask-OAuthlib,但是当我切换到Azure AD B2C时,Flask-OAuthlib与AAD B2C存在问题。我宁愿使用Flask-OAuthlib,但不知道我是否必须使用flask-oidc来打开Id连接,这是错误的原因。 – scurry

+0

要回复其他人是否遇到类似问题,答案是Open Id Connect对于Web应用程序*不是必需的。 – scurry

4

Azure AD B2C支持官方reference protocols documentation中提到的OpenID Connect和OAuth 2.0。

为了能够使用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

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

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

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

相关问题