Azure ad b2c Azure AD B2C单一注销

Azure ad b2c Azure AD B2C单一注销,azure-ad-b2c,Azure Ad B2c,我有两个web应用程序,一个是.Net Framework应用程序,另一个是.Net核心应用程序。两者都在同一B2C环境中注册 它们彼此交互,因此当我登录一个应用程序时,当我单击另一个应用程序上的登录时,这会使我通过输入屏幕,并使用已在另一个应用程序上输入的凭据登录 我遇到的问题是,我已经为这两个应用程序设置了一个注销Url,但它只是单向工作,而不是反向工作 如果我同时登录两个应用程序,然后退出框架应用程序,然后在核心应用程序上按F5时,用户将按预期注销 然而,如果我尝试相反的方法。因此,我注销

我有两个web应用程序,一个是.Net Framework应用程序,另一个是.Net核心应用程序。两者都在同一B2C环境中注册

它们彼此交互,因此当我登录一个应用程序时,当我单击另一个应用程序上的登录时,这会使我通过输入屏幕,并使用已在另一个应用程序上输入的凭据登录

我遇到的问题是,我已经为这两个应用程序设置了一个注销Url,但它只是单向工作,而不是反向工作

如果我同时登录两个应用程序,然后退出框架应用程序,然后在核心应用程序上按F5时,用户将按预期注销

然而,如果我尝试相反的方法。因此,我注销了核心应用程序,然后在框架应用程序上按F5,这样就不会注销用户

由于它是以一种方式工作,而不是以另一种方式工作,我假设这一定是一个关于如何设置框架应用程序的问题,而不是关于如何设置链接到每个应用程序的自定义策略文件的问题,如果是这样的话,那么两者都不起作用

在框架应用程序的B2C应用程序设置中,注销URL为:
https://xxxx.azurewebsites.net/Account/SignOut

其中指出:

public void SignOut()
{
    if (Request.IsAuthenticated)
    {
        IEnumerable<AuthenticationDescription> authTypes = HttpContext.GetOwinContext().Authentication.GetAuthenticationTypes();
        HttpContext.GetOwinContext().Authentication.SignOut(authTypes.Select(t => t.AuthenticationType).ToArray());
        Request.GetOwinContext().Authentication.GetAuthenticationTypes();
    }
}
public void SignOut()
{
如果(请求已验证)
{
IEnumerable authTypes=HttpContext.GetOwinContext().Authentication.GetAuthenticationTypes();
HttpContext.GetOwinContext().Authentication.SignOut(authTypes.Select(t=>t.AuthenticationType.ToArray());
Request.GetOwinContext().Authentication.GetAuthenticationTypes();
}
}
我还尝试了一个与上面相同的端点,但不检查用户当前是否经过身份验证,只运行三行而不进行if检查,但也不起作用

而核心应用程序的B2C应用程序设置,注销URL为:
https://yyyy.azurewebsites.net/AzureADB2C/Account/SignOut


有什么想法吗?

框架应用程序是否收到请求?我想可能是cookie samesite设置的问题,所以应用程序的会话cookie没有提交。@junnas-我不确定,我如何才能测试它?一种方法是,您可以在从B2C注销时查看浏览器F12工具网络选项卡。您应该可以在那里看到注销请求。@junnas-我已经通过从两个应用程序注销检查了这一点。两者都向两个应用程序的注销URL发送请求,每个应用程序都以200状态响应。请仔细检查应用程序的cookie是否与这些请求一起发送,并检查控制台是否存在警告/错误。