0

我有一个使用 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);
});   

不知道我在这里错过了什么。感谢任何帮助。

4

1 回答 1

0

检查您的日志,它应该向您显示最终在本地注销的决策过程。要使联合注销起作用,需要做很多事情。你需要一个服务证书,你需要一些特殊的索赔。后者将在未来与 Sustainsys.Saml2/IdSrv4 的兼容版本中得到简化

于 2018-02-13T13:42:35.927 回答