Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure AD B2C登录的正确URL_Azure_Azure Active Directory_Azure Ad B2c - Fatal编程技术网

Azure AD B2C登录的正确URL

Azure AD B2C登录的正确URL,azure,azure-active-directory,azure-ad-b2c,Azure,Azure Active Directory,Azure Ad B2c,我已将我的应用程序设置为使用Azure AD B2C。该应用程序有一个允许匿名访问的公共页面,在这里我有一个Azure AD B2C登录页面的登录链接。我正在从Azure portal上我的注册或登录策略下的以下位置获取此链接的URL: 我只需点击我圈出的“复制”按钮,并将其粘贴到我公共页面上的链接中 奇怪的是,如果我点击公共页面上的链接,它会将我带到Azure AD B2C登录页面,我在那里登录,但当我被重定向回我的应用程序时,出于某种原因,它不喜欢它并再次将我发送回登录页面 但是,如果我只

我已将我的应用程序设置为使用Azure AD B2C。该应用程序有一个允许匿名访问的公共页面,在这里我有一个Azure AD B2C登录页面的登录链接。我正在从Azure portal上我的
注册或登录策略下的以下位置获取此链接的URL

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

奇怪的是,如果我点击公共页面上的链接,它会将我带到Azure AD B2C登录页面,我在那里登录,但当我被重定向回我的应用程序时,出于某种原因,它不喜欢它并再次将我发送回登录页面

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

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

更新:

以下是两个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
你知道为什么我从门户网站得到的一个不起作用,或者为什么第二个不起作用吗?

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

MSAL.js生成的身份验证请求与“立即运行”的关键区别在于,MSAL.js在向Azure AD B2C发送身份验证请求之前生成一个nonce值,然后在收到Azure AD B2C的身份验证响应后验证nonce值。如果有效,则接受身份验证响应。如果缺少或无效,则拒绝身份验证响应。nonce值可减轻重播攻击


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

使用“立即运行”端点URL测试Azure AD B2C策略。这是ASP.NET应用程序吗?这与我通过单击“复制”按钮复制它时得到的URL相同。刚刚发布了一个URL更新。我从Azure门户获得的一个不起作用。第二个是由
MSAL.js
生成的,它工作得很好。知道为什么吗?关键区别在于MSAL.js在向Azure AD B2C发送身份验证请求之前生成一个
nonce
值,然后在收到Azure AD B2C的身份验证响应后验证
nonce
值。如果有效,则接受auth响应。如果缺少或无效,则拒绝验证响应。
nonce
值可减轻重播攻击。我需要在我的公共页面上放置一个指向Azure登录的链接,如果响应中没有nonce值,则MSAL似乎不喜欢它。这里的正确方法是什么?从公共页面,我可以链接到受保护区域的URL,让MSAL负责重定向,但这是一个难题。接下来的问题是:是否可以从静态HTML页面调用
MSAL.js
中的身份验证过程?我的面向公众的页面是一个静态HTML页面。如果静态页面上的“登录”按钮指向SPA应用程序的受保护区域,我会得到一个丑陋的登录过程,即我的
React
组件在重定向到Azure AD B2C登录页面之前呈现了一半。真难看!另一个选项是将我的静态HTML页面转换为
React
组件,并允许匿名访问,但该页面经过专业设计,大量使用
jQuery
。最简单的选择是从HTML页面调用
MSAL.js
。计划是获得一个新的公共页面设计,并将其作为React组件实现,从而使应用程序真正成为SPA。不过在此期间,我认为最简单和最干净的方法是从HTML页面调用MSAL.js。