使用Azure B2C和.NET Core注销重定向

zvms9eto  于 2023-10-22  发布在  .NET
关注(0)|答案(2)|浏览(154)

问题是,我似乎无法在注销Azure B2C身份验证应用程序时设置注销重定向URI。这怎么办?
一些背景信息,该应用程序是一个.NET核心Web应用程序,具有剃刀页面,并在创建项目时通过Visual Studio中的帮助工具设置了身份验证。
我可以看到生成的默认注销按钮访问一个名为“AzureADB2C”的asp区域,asp控制器为“帐户”,asp操作为“注销”。所有这些都隐藏在B2C库中,在我的解决方案中似乎无法访问。
我试过创建自己的注销按钮,删除auth cookie,然后发送一个注销请求到微软与重定向url附加,但似乎没有工作。
这是创建项目时提供的默认注销

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

后端方法,我试图删除auth cookie和reidrect,没有工作。

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);
        }

当我尝试我自己的注销按钮重定向似乎不工作。

t2a7ltrp

t2a7ltrp1#

虽然将用户定向到end_session_endpoint将清除用户与Azure AD B2C的某些单点登录状态,但它不会将用户从用户的社交身份提供程序(IDP)会话中注销。如果用户在随后的登录过程中选择了相同的IDP,他们将被重新验证,而无需输入他们的凭据。如果用户想注销您的B2C应用程序,并不一定意味着他们想完全注销他们的Facebook帐户。但是,对于本地帐户,用户的会话将正确结束。
当您想让用户退出应用程序时,清除应用程序的cookie或结束与用户的会话是不够的。将用户重定向到Azure AD B2C以注销。如果您没有这样做,用户可能能够重新验证您的应用程序,而无需再次输入他们的凭据。
您可以简单地将用户重定向到OpenID Connect元数据文档中列出的**end_session**端点:

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

更多参考,请参阅以下文档
https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oidc#send-a-sign-out-request
希望有帮助。

iszxjhcz

iszxjhcz2#

您没有指定您的B2C租户是否设置为允许“社交”身份提供者(例如,Google、Facebook等)或仅在B2C租户中内置本地一个。外部IdPs增加了一些重要问题。
在任何情况下,在注销时,您应该重定向到Microsoft文档页面上指定的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轻松查看是否正确重定向。

相关问题