基于Identity Server 4与Sustainsys Saml2的SAML单点登出支持及URL咨询
嘿,我来帮你理清Sustainsys Saml2和Identity Server 4集成场景下的SAML单点登出相关问题~
Sustainsys Saml2 + Identity Server 4的SAML单点登出支持指南
1. 先给客户明确答复:我们支持单点登出
没错,Sustainsys Saml2完全支持SAML 2.0标准的单点登出(Single Logout),不管是服务提供商(SP)发起的登出,还是身份提供商(IDP)发起的登出流程都能完美适配。从你贴的配置片段来看,只要后续补全相关配置,就能正常启用该功能。
2. 单点登出请求/响应URL的获取方式
方式一:从SP元数据自动提取
Sustainsys Saml2会自动生成SP的元数据文档,里面包含了所有标准SAML交互端点,包括单点登出的URL。你可以通过默认路由访问元数据:https://<你的SP域名>/Saml2
打开这个地址后,在XML里找到<md:SingleLogoutService>节点,其中:
Location属性对应单点登出请求URLResponseLocation属性对应单点登出响应URL
方式二:默认路由直接告知客户
如果你的系统没有自定义Sustainsys的路由,默认的单点登出端点是共用一个URL的:
- 单点登出请求URL:
https://<你的SP域名>/Saml2/SingleLogout - 单点登出响应URL:
https://<你的SP域名>/Saml2/SingleLogout
(如果需要分开请求和响应的端点,也可以手动配置不同路由,但绝大多数场景下共用即可)
3. 确保配置完整启用单点登出
你现有的代码只初始化了IdentityProvider,还需要补全SP侧的配置,同时确保IDP的元数据包含单点登出的配置(你设置了LoadMetadata = true,只要IDP元数据里有<md:SingleLogoutService>节点,就会自动加载)。
给你补全一份典型的配置示例:
// 配置SP选项,开启登出支持 var spOptions = new SPOptions { EntityId = new EntityId("https://你的SP实体ID.com"), // 登出后的回调地址 ReturnUrl = new Uri("https://你的SP域名.com/logout-complete"), // 其他SP相关配置... }; // 注册Sustainsys Saml2服务 services.AddSaml2(options => { options.SPOptions = spOptions; options.IdentityProviders.Add(new IdentityProvider(new EntityId("https://sso.acme.com"), spOptions) { MetadataLocation = "/metadata/sso-meta.xml", LoadMetadata = true, AllowUnsolicitedAuthnResponse = true, // 可选:指定登出请求/响应的绑定方式,比如HTTP-Redirect或HTTP-POST SingleLogoutServiceBinding = Saml2BindingType.HttpRedirect, SingleLogoutResponseServiceBinding = Saml2BindingType.HttpPost }); }); // 确保Identity Server 4集成Saml2 services.AddIdentityServer() // 你的IS4其他配置(客户端、资源等)... .AddSaml2();
4. 给客户的回复参考
你可以直接这么回复客户:
我们支持SAML 2.0标准的单点登出功能,相关URL如下:
- 单点登出请求URL:
https://<你的SP域名>/Saml2/SingleLogout- 单点登出响应URL:
https://<你的SP域名>/Saml2/SingleLogout
另外,你也可以通过访问https://<你的SP域名>/Saml2获取我们的SP元数据文档,里面包含了所有SAML交互的标准端点信息。
内容的提问来源于stack exchange,提问作者Fanetic
相关产品推荐
相关产品推荐

