正在开发一个应用程序,该应用程序将通过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/]
我也遇到了同样的问题,这是因为缺少对Razor页面的支持。默认的Microsoft. Idty.Web.UI
SignOut
操作使用/Account/SignedOut
Razor页面作为回调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。