带有 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,只需更新以下配置 【参考方案1】:

您必须为每个服务提供商使用不同且唯一的实体 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 集成错误

WSO2 和 Spring SAML 单次注销问题

使用 Spring Security + WSO2 身份服务器的 OAuth 2.0

WSO2:如何在 wso2 中集成 APIM 和 IS

Spring Boot:访问此资源需要完全身份验证