Azure active directory 使用Microsoft identity provider登录失败,适用于其他提供商

Azure active directory 使用Microsoft identity provider登录失败,适用于其他提供商,azure-active-directory,azure-ad-b2c,Azure Active Directory,Azure Ad B2c,使用Microsoft identity provider登录失败,无法与其他人一起工作 我有一个Azure AD B2C租户,拥有我希望使用的SingIn和SignUp策略 使用Angular2 SPA进行用户管理 该策略为三个身份提供程序配置: 谷歌 微软 电子邮件注册 当我使用Azure门户中的立即运行按钮来运行此策略时,我将获得默认的登录对话框,并且我可以使用谷歌或电子邮件登录。(我的意思是,我会像预期的那样重新定向到我的应用程序的重定向页面。)但是,当我尝试使用Microsoft

使用Microsoft identity provider登录失败,无法与其他人一起工作

我有一个
Azure AD B2C
租户,拥有我希望使用的
SingIn和SignUp
策略 使用Angular2 SPA进行用户管理

该策略为三个
身份提供程序配置:

  • 谷歌
  • 微软
  • 电子邮件注册
当我使用Azure门户中的
立即运行
按钮来运行此策略时,我将获得默认的登录对话框,并且我可以使用
谷歌
电子邮件登录
。(我的意思是,我会像预期的那样重新定向到我的应用程序的重定向页面。)但是,当我尝试使用
Microsoft
在提供程序中,我最终出现了一个错误页面,地址如下:


https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The+为+输入+参数+'redirect_uri'+提供的+值+无效。+预期+值+为+'https://login.live.com/oauth20_desktop.srf“+或+a+URL+,其中+与+此+客户端+应用程序的+重定向+URI+注册+匹配。&state=StateProperties%3deyJTSUQiOiJ4LW1zLWNwaW0tcmM6Ndcymmqynjitotk1Y100YTjLwFmWntWndgYodlHmzM0IIwiveleijoim2Y2ZDVMjATMDINC00ZDA3Lweyzdit2U3YWqWOWrHogQ5in0


我发现问题与无效的
重定向\u uri
有关。但是我认为
redirect\u uri
是由我配置的所有身份验证程序共享的应用程序级设置。为什么我的
redirect\u uri
设置适用于
Google
Email注册
,而不适用于
Microsoft

您必须使用正确的重定向URL配置Microsoft应用程序

如合同所述:

在重定向URI字段中输入{tenant}/oauth2/authrep。将{tenant}替换为租户的名称(例如,contosob2c.onmicrosoft.com)

你为什么要这么做:(克里斯·帕吉特提供)

Azure AD B2C门户中配置的重定向URI表示客户端应用程序的回复地址。这使得Azure AD B2C可以向您的客户端应用程序返回ID令牌。在应用程序注册门户中配置的重定向URI表示Azure AD B2C租户的回复地址。这样,Microsoft帐户身份提供商就可以将安全令牌返回给Azure AD B2C租户

因此,您的应用程序正在将身份验证联合到Azure AD B2C。 B2C然后进一步联合到Microsoft帐户身份提供商。 因此,当用户a使用Microsoft帐户登录时,他们将使用令牌发送回B2C,B2C对此进行验证。 如果一切正常,他们将登录到B2C,并发送回您的应用程序。 因此,从MSA身份提供商的角度来看,B2C是客户。
因此,那里的重定向URL必须指向B2C。

如文档所述,您应该输入
https://login.microsoftonline.com/te/重定向URI字段中的{tenant}/oauth2/authrep

但我认为重定向uri是一个应用程序级设置 通过我配置的所有身份验证程序。为什么我的 重定向uri设置适用于Google和电子邮件注册,但不适用于 微软

你说得对,重定向uri是一个应用级标准。在所有IDP重定向URI中应该是相同的。但是这个Redirec URI是由Azure设置的。不是你的申请这意味着您可以使用其他IDP通过AAD B2C登录到您的应用程序,而不是直接登录到您的应用程序。因此,重定向URI必须是
https://login.microsoftonline.com/te/{tenant}/oauth2/authrep
,而不是应用程序本身中的
重定向uri

URI不等于URL。重定向URI只是Azure AD在OAuth 2.0请求中将用户代理重定向到的唯一标识符。它不是重定向URL,Azure AD身份验证端点
https://login.microsoftonline.com/
使用重定向URI检查应该响应的位置。同样,它可以与作为端点的URL相同。我想这里应该是一样的

总之,您需要使用唯一的重定向URI
https://login.microsoftonline.com/te/{tenant}/oauth2/authrep
适用于所有IDP,而不仅仅是Microsoft帐户


希望这有帮助

@AndrewMorton是的,我注意到了这条消息,但它没有帮助。我的印象是,redirect_uri设置由为策略配置的所有身份提供商共享,包括工作正常的Google和电子邮件提供商。是否有任何特定于Microsoft身份提供程序的内容我可以配置?juunas谢谢!这当然解决了我的问题。我仍然不清楚在两个地方指定重定向URI的目的是什么:(1)在Microsoft应用程序门户和(2)在B2C租户中。这两个“重定向uri”设置如何配合使用?它们必须是一样的吗?嗨@ebhh2001。Azure AD B2C门户中配置的重定向URI表示客户端应用程序的回复地址。这使得Azure AD B2C可以向您的客户端应用程序返回ID令牌。在应用程序注册门户中配置的重定向URI表示Azure AD B2C租户的回复地址。这是因为Microsoft帐户标识提供商可以将安全令牌返回给您的Azure AD B2C租户。非常感谢Chris:)我编辑了我的答案,以包含有关此的详细信息。@chrispadget谢谢。在应用程序注册门户中,我看到了一种拥有多个“重定向URL”的方法。我什么时候需要多个重定向URL,如果有的话?嗨@ebhh2001。具有多个主机名的应用程序具有多个回复URL(如
https://login-east.contoso.com
https://login-west.contoso.com
。注册B2C应用程序时,可以为其注册多个回复URL,如d