我有一个使用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);
});
不确定我在这里缺少什么。感谢任何帮助。
答案 0 :(得分:0)
检查您的日志,它应该显示最终在本地注销中的决策过程。联合注销工作需要做很多事情。您需要服务证书,并且需要一些特殊声明。后者将在与Sustainsys.Saml2 / IdSrv4
的未来兼容性版本中进行简化