无法在IdentityServer中注销外部身份提供程序

时间:2018-02-12 04:21:18

标签: asp.net-mvc logout identityserver4 sustainsys-saml2

我有一个使用IdentityServer4的MVC应用程序。在IdentityServer4中,我将SAML2(SustainSys.SAML2)注册为外部登录提供程序。和登录工作正常。

当用户退出MVC应用程序时,它会从MVC应用程序注销,但外部登录提供程序的注销不会触发。我检查了我的身份服务器的LogOut方法,该方法重定向到外部身份验证方案。但重定向不会发生。

  this triggers a redirect to the external provider for sign-out
    return SignOut(new AuthenticationProperties { RedirectUri = url }, 
    vm.ExternalAuthenticationScheme);

以下是我在SAML注册外部身份提供商的代码。我使用过SustainSys SAML的Nuget包。

.AddSaml2(options =>
{
    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
    options.SignOutScheme = IdentityServerConstants.SignoutScheme;
    options.SPOptions = CreateSPOptions();
    var idp = new IdentityProvider(new EntityId(_strIDPEntityId), options.SPOptions)
    {
        AllowUnsolicitedAuthnResponse = true,
        Binding = Saml2BindingType.HttpRedirect,
        SingleSignOnServiceUrl = new Uri(_strSingleSignOnURL),
        SingleLogoutServiceBinding = Saml2BindingType.HttpRedirect,
        SingleLogoutServiceUrl = new Uri("https://devit-dev.onelogin.com/trust/saml2/http-redirect/slo/1111")

    };
    idp.SigningKeys.AddConfiguredKey(
    new X509Certificate2(
        AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "../../../App_Data/OneLogin.cer"));
    options.IdentityProviders.Add(idp);
});   

不确定我在这里缺少什么。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

检查您的日志,它应该显示最终在本地注销中的决策过程。联合注销工作需要做很多事情。您需要服务证书,并且需要一些特殊声明。后者将在与Sustainsys.Saml2 / IdSrv4

的未来兼容性版本中进行简化