提问者:小点点

注销B2C挂件


正在开发一个应用程序,该应用程序将通过AD记录内部用户,通过B2C记录外部用户。我们使用的是openid。登录过程对两者都很好。注销AD工作正常。注销B2C挂断。这是我用来注销的方法:

    [Authorize]
    public IActionResult LogoutAsync()
    {
        var scheme = User.Claims.FirstOrDefault(c => c.Type == ".AuthScheme").Value;
        return new SignOutResult(new[] { CookieAuthenticationDefaults.AuthenticationScheme, scheme });
    }

我在URLhttps://localhost:44320/signout-oidc?state=XXXXXXXXXXXXXXXXXXXXX。有什么线索吗??

我唯一的选择是使用退出endpoint,像这样(显然有我的信息和重定向)吗?https://{tenant}。b2clogin.com/{tenant}。onmicrosoft.com/{policy}/oaut2/v2.0/logout?post_logout_redirect_uri=https://jwt.ms/]


共1个答案

匿名用户

我也遇到了同样的问题,这是因为缺少对Razor页面的支持。默认的Microsoft. Idty.Web.UISignOut操作使用/Account/SignedOutRazor页面作为回调URL。

var callbackUrl = Url.Page("/Account/SignedOut", pageHandler: null, values: null, protocol: Request.Scheme);

我在我的ASP.NETCore Web应用程序中添加了Razor支持,并解决了问题:

 services.AddRazorPages();

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages();
        });

或者,您可以使用自己的注销终结点,它可以使用任何操作作为注销回调URL。