带有 wso2 IS 的 Spring Security SAML
Posted
技术标签:
【中文标题】带有 wso2 IS 的 Spring Security SAML【英文标题】:Spring Security SAML with wso2 IS 【发布时间】:2017-04-06 13:34:50 【问题描述】:我正在尝试使用 spring security 和 wso2 身份服务器 5.1.0 集成(SSO)多个服务提供商我已经根据 blog 将 spring security SAML 示例与 Wso2 IS 集成,仅用于一个服务提供商并且它运行完美很好,但我无法为多个服务提供商进行 SSO。我已经检查了所有内容,但没有运气。
请在下面找到我认为应该是什么,但我不知道如何实现这一点。
WSO2 IS:创建了一个具有唯一 SAML 颁发者 ID(例如 spring-security)的服务提供者,它将被不同的服务提供者用于 SSO。
SP1 : 服务提供者应该发送带有问题 id(spring-security) 和断言消费者 url(例如 localhost:8080/...) 的 Authn 请求。
SP2 : 服务提供者应该发送带有问题 id(spring-security) 和断言消费者 url(例如 localhost:8181/...) 的 Authn 请求。
Authn 请求中的颁发者: http://localhost:8080/spring-security-saml2-sample/saml/metadata
即使我也不确定这个 issuer 是如何生成的。
请帮忙。
【问题讨论】:
发行者应由您的 SP 元数据文件中的“EntityId”值生成。 感谢 Bernhard 的回复,在这期间我浏览了“spring-security-saml2-core”的代码,发现它是由我更新的文件“MetadataGeneratorFilter”中的默认元数据设置的springSecurity 上下文文件。要使用 WSO2,只需更新以下配置您必须为每个服务提供商使用不同且唯一的实体 ID。在 Identity Server 中,您需要相应地创建多个服务提供者(在您的情况下为 2 个)以使 SSO(和 SLO)正常工作。
假设您将两个 SP 的实体 ID 更改为 spring-security-1 和 spring-security-2。您将需要在 IS 中创建 2 个服务提供商,如下所示。
SP1 -> 发行者:spring-security-1,ACS url:localhost:8080/...
SP2 -> 发行者:spring-security-2,ACS url:localhost:8081/...
【讨论】:
以上是关于带有 wso2 IS 的 Spring Security SAML的主要内容,如果未能解决你的问题,请参考以下文章
带有 WSO2 身份服务器的 Spring Cloud Security
WSO2IS + node.js passport-saml 集成错误