C# 使用Azure B2C和.NET Core进行注销重定向
请容忍我,因为我是Azure B2C的新手。我的问题是,当我注销我的Azure B2C认证应用程序时,我似乎无法设置注销重定向uri 一些背景信息,该应用程序是一个带有razor页面的.NET核心web应用程序,在创建项目时通过visual studio中的帮助工具设置了身份验证 我可以看到生成的默认注销按钮访问名为“AzureADB2C”的asp区域,其中asp控制器为“帐户”,asp操作为“注销”。所有这些都隐藏在B2C库中,我在解决方案中似乎无法访问这些库 我曾尝试创建自己的注销按钮,删除身份验证cookie,然后向microsoft发送注销请求,并附加重定向url,但似乎不起作用 这是创建项目时提供的默认注销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库中,我在解决方案中似乎无法访问这些库 我曾尝试创建自己的注销按钮,删除
<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正确重定向。我感谢您的建议和文章的链接。这是否意味着我不应该在注销时进行自定义重定向?例如,如果用户从我的应用程序注销,我不应该让注销重定向将他们带回登录页?