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
C# 使用Azure B2C和.NET Core进行注销重定向_C#_Azure_.net Core_Azure Ad B2c - Fatal编程技术网

C# 使用Azure B2C和.NET Core进行注销重定向

C# 使用Azure B2C和.NET Core进行注销重定向,c#,azure,.net-core,azure-ad-b2c,C#,Azure,.net Core,Azure Ad B2c,请容忍我,因为我是Azure B2C的新手。我的问题是,当我注销我的Azure B2C认证应用程序时,我似乎无法设置注销重定向uri 一些背景信息,该应用程序是一个带有razor页面的.NET核心web应用程序,在创建项目时通过visual studio中的帮助工具设置了身份验证 我可以看到生成的默认注销按钮访问名为“AzureADB2C”的asp区域,其中asp控制器为“帐户”,asp操作为“注销”。所有这些都隐藏在B2C库中,我在解决方案中似乎无法访问这些库 我曾尝试创建自己的注销按钮,删除

请容忍我,因为我是Azure B2C的新手。我的问题是,当我注销我的Azure B2C认证应用程序时,我似乎无法设置注销重定向uri

一些背景信息,该应用程序是一个带有razor页面的.NET核心web应用程序,在创建项目时通过visual studio中的帮助工具设置了身份验证

我可以看到生成的默认注销按钮访问名为“AzureADB2C”的asp区域,其中asp控制器为“帐户”,asp操作为“注销”。所有这些都隐藏在B2C库中,我在解决方案中似乎无法访问这些库

我曾尝试创建自己的注销按钮,删除身份验证cookie,然后向microsoft发送注销请求,并附加重定向url,但似乎不起作用

这是创建项目时提供的默认注销

<a class="nav-link text-dark" asp-area="AzureADB2C" asp-controller="Account" asp-action="SignOut">Sign out</a>
        </li>
注销

后端方法我试图删除auth cookies,并重新删除不起作用的内容

public async Task<RedirectResult> OnPostLogout()
        {
            foreach (var cookieKey in Request.Cookies.Keys)
            {
                Response.Cookies.Delete(cookieKey);
            }

            return new RedirectResult(https://MyApp.azurewebsites.net/.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fgoogle.com);
        }
PostLogout()上的公共异步任务 { foreach(请求中的var cookieKey.Cookies.Keys) { Response.Cookies.Delete(cookieKey); } 返回新的重定向结果(https://MyApp.azurewebsites.net/.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fgoogle.com); }
当我尝试自己的注销按钮时,重定向似乎不起作用。

当将用户引导到end_session_端点时,它将通过Azure AD B2C清除一些用户的单点登录状态,但不会将用户注销用户的社交身份提供商(IDP)会话。如果用户在随后的登录过程中选择了相同的IDP,则将对其进行重新身份验证,而无需输入其凭据。如果用户想要注销你的B2C应用程序,这并不一定意味着他们想要完全注销他们的Facebook帐户。但是,对于本地帐户,用户的会话将正确结束

当您想让用户退出应用程序时,仅清除应用程序的cookie或以其他方式结束与用户的会话是不够的。将用户重定向到Azure AD B2C以注销。如果您未能这样做,用户可能能够重新验证您的应用程序,而无需再次输入其凭据

您只需将用户重定向到OpenID Connect元数据文档中列出的
结束\u会话
端点:

GET https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?
p=b2c_1_sign_in
&post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in
请参阅以下文件以进一步参考


希望有帮助。

您没有指定您的B2C租户是否设置为允许“社交”身份提供商(如谷歌、Facebook等)或仅允许B2C租户内置的本地身份提供商。外部国内流离失所者增加了一些重大问题

在任何情况下,注销时都应重定向到Microsoft页面上指定的URL,该URL与您尝试的URL不同:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_sign_in&post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F

由于注销机制是基于浏览器的,您可以很容易地看到是否使用浏览器的开发工具或Fiddler正确重定向。

我感谢您的建议和文章的链接。这是否意味着我不应该在注销时进行自定义重定向?例如,如果用户从我的应用程序注销,我不应该让注销重定向将他们带回登录页?