正确的Azure AD B2C登录URL

时间:2018-05-21 21:36:10

标签: azure azure-active-directory azure-ad-b2c

我已将我的应用设置为使用Azure AD B2C。该应用程序有一个允许匿名访问的公共页面,这是我有Azure AD B2C登录页面的登录链接。我从Sign up or Sign in policies下的Azure门户上的以下位置获取此链接的URL: enter image description here

我只需点击我圈出的“复制”按钮,然后将其粘贴到我公开页面上的链接中。

奇怪的是,如果我单击公共页面上的链接,它会转到我登录的Azure AD B2C登录页面但是当我被重定向回我的应用程序时,由于某种原因,它不喜欢它和再次将我发回登录页面。

但是,如果我只是尝试直接进入我的应用程序中的受保护区域,即http://localhost:49065/member,我会自动重定向到Azure AD B2C登录页面,一旦我登录,它会将我重定向回我的应用程序和所有内容工作正常。

所以,它似乎不喜欢我在链接中使用的URL。知道我可以在哪里获得Azure AD B2C登录的正确URL,我可以在我的公共页面上使用吗?

更新

以下是两个网址。第一个不起作用,第二个起作用。两者之间存在一些差异。

第一个是我从Azure门户获得的那个 - 见上图。这个没有真正起作用,因为它让我重新登录:

https://login.microsoftonline.com/myb2ctenant.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_MyApp_SignUp_SignIn&client_id=aed18b8d-cc45-a612-82b3-5128f414d22d&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A49065%2Fmember&scope=openid&response_type=id_token&prompt=login

这是由MSAL.js生成的。如果我尝试直接转到应用程序的受保护区域,这是我在重定向到Azure AD B2C登录页面时获得的URL。这个很好用:

https://login.microsoftonline.com/te/myb2ctenant.onmicrosoft.com/b2c_1_myapp_signup_signin/oauth2/v2.0/authorize?response_type=id_token&scope=https%3A%2F%2Fmyb2ctenant.onmicrosoft.com%2Fwebclient%2Fopenid%20openid%20profile&client_id=aed18b8d-cc45-a612-82b3-5128f414d22d&redirect_uri=http%3A%2F%2Flocalhost%3A49065%2Fmember&state=c3088fbf-a895-43c7-8f9b-4f0351631323&nonce=26b3cb5c-7cc5-40c9-935f-654735d4c9b1&client_info=1&x-client-SKU=MSAL.JS&x-client-Ver=0.1.5&client-request-id=3b769d57-3c6d-45bb-bd83-f126ab525218&prompt=select_account&response_mode=fragment

任何想法为什么我从门户网站获得的那个不起作用或为什么第二个起作用?

1 个答案:

答案 0 :(得分:1)

“立即运行”生成的身份验证请求用于测试Azure AD B2C策略。

MSAL.js生成的身份验证请求与“立即运行”之间的主要区别是MSAL.js在向Azure AD B2C发送身份验证请求之前生成nonce值,然后在收到nonce值后验证nonce值Azure AD B2C的身份验证响应。如果有效,则接受验证响应。如果它丢失或无效,则拒绝验证响应。 nonce值可以减轻重放攻击。

这意味着登录链接必须通过调用MSAL.js或重定向到调用它的受保护页面来启动身份验证请求。