问题标签 [spring-saml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
470 浏览

spring-security - SAML 断言中需要的 NameID

尝试与 IdP 集成时,我遇到了一个错误,即断言中不存在 NameID。我注意到在 org.springframework.security.saml.websso.WebSSOProfileConsumerImpl 的 processAuthenticationResponse 的第 250-253 行有一个对 NameID 的显式检查。我在 2.0 规范中找不到必须使用 NameID 的任何地方。如果两个元数据都没有指定 NameIDPolicy 并且 AuthnRequest 没有指定一个,那么对 NameID 的检查是否应该是可选的?

0 投票
2 回答
3880 浏览

spring - SAMLException:NameID 元素必须作为响应消息中主题的一部分出现,请在 IDP 配置中启用它

我正在使用spring-saml实现。在 WebSSOProfileConsumerImpl 类中,我可以找到以下代码行,它们在SAML 响应的断言中检查 nameId 。

根据代码,很明显 nameId 应该是主题的一部分。但是大多数 IDP 包括我正在使用的 IDP 都提到 nameId 可能是subject/attribute的一部分。似乎有一些实现在主题中接受 nameId ,就像SimpleSAMLPHP一样。

我收到的主题如下,没有附上 nameId

但是,有一个属性nameId作为其属性值。为什么不能用这个代替主题中的那个。

谁能解释nameId是spring-saml实现中唯一主题的一部分的原因。

@vschafer 有没有一种方法可以自定义securityContext.xml以选择nameId,它是特定属性的一部分而不是来自subject

0 投票
1 回答
12786 浏览

spring - spring saml: How is LOGOUT handled? Is it mandatory to have logout endpoint in IDP metadata xml?

I am using Spring SAML implementation. SSO circle metadata xml was having logout endpoint which helps in local logout and global logout. But there are some other IDP's which I am interacting with and are not having logout endpoints in their metadata xml.

How should LOGOUT be handled in these scenarios?

Is deleting cookies of the request the only solution of this problem or is there any workaround for this scenario?

Your help in this regard is much appreciated.

0 投票
1 回答
1177 浏览

spring - spring saml - IDP 发起的 SSO

我正在使用 SPRING SAML 实现并充当 SP(例如:ALPHA)。我能够执行 SP 发起的 SSO 并能够使用 IDP 对用户进行身份验证。在这个实现中没有问题。

但是在我的应用程序中,我需要访问另一个链接到同一个 IDP 的 SP(Eg:BETA) url。ALPHA 和 BETA 服务提供商都受到同一个 IDP 的信任。在这种情况下,在 ALPHA 通过 SP INIT SSO 使用 IDP 对用户进行身份验证后,当重定向发生在 BETA SP URL 时,我被要求再次输入凭据。我了解 SP 进行不同的会话。

如何使用通过 ALPHA SP 验证的相同 SAMLCredential 在 BETA SP 中启用登录。在浏览了一些文档之后,我发现可以通过 IDP INIT SSO。

谁能告诉我如何配置我的应用程序以能够处理 SP INIT SSO 以及 IDP INIT SSO?

ALPHA SP 是 shibboleth,其他 SP 是 EZPROXY

0 投票
1 回答
1972 浏览

java - 这个标题日期从哪里来的响应?(带有Tomcat的spring-saml2)

我正在使用 spring-security-saml2 api 来建立连接。

它在一段时间内运行良好,但最近我在响应标头中的日期遇到了一些麻烦。当org.springframework.security.saml.SAMLProcessingFilter调用过滤器 (url -> /saml/SSO/alias/defaultAlias) 时,响应包含一个标头date,并且此日期有时会晚 2 小时。

因此我收到一个错误Etat HTTP 401 - Authentication Failed : Response issue time is either too old or with date in the future, skew 60, time 2014-10-22T08:25:55.967Z(在 10h25 测试)

我不知道如何检索日期以及为什么这种行为只会定期发生。我正在寻找任何线索。谢谢。

0 投票
4 回答
7745 浏览

spring-mvc - Spring SAML 扩展和 Spring Security CSRF 保护冲突

我们有一个带有 Spring Security (3.2.4) 的 Spring MVC (4.0.5) 应用程序,其中包括工作正常的 CSRF 保护。我们现在添加了 SAML 安全扩展 (spring-security-saml2-core 1.0.0),这会导致 CSRF 保护出现问题。

元数据已在 SSOCircle 上配置,并尝试访问 SSOCirclehttp://localhost:8080/myapp上的登录页面。身份验证后,浏览器重定向到http://localhost:8080/myapp/saml/SSO并生成错误:

HTTP 状态 403 - 未找到预期的 CSRF 令牌。你的会话过期了吗?

如果我们关闭 CSRF 保护,一切正常。我们如何维护 CSRF 保护并仍然使用 SAML 扩展?

在设置 SAML 扩展之前,我们使用了登录表单并且 CSRF 保护工作,我们没有收到登录 JSP 的错误并且它没有令牌。

SAML 之前的代码:

带有 SAML 的代码:

更新

重新启用 CSRF 保护并将日志记录设置为 DEBUG 后,以下是成功验证后立即出现的日志:

0 投票
1 回答
611 浏览

spring - Spring Security Saml 2.0 是否支持断言级别加密和 AES-256 作为加密算法?

我对 SSO 比较陌生。有两个要求(见标题)我想检查我的 Spring Framework 环境,但我不知道如何得到答案。似乎文档也没有对此提供直接答案。

任何关于如何确定此 SAML 实现中支持或不支持的内容的输入都将不胜感激。

0 投票
1 回答
846 浏览

java - 在 Spring SAML 中指定 IDP 和 SP 的加密算法

我想了解如何指定 IDP 和 SP 使用的加密算法。我已经阅读了文档并浏览了一整天以寻求答案。唯一看起来很熟悉的是扩展元数据部分中的“signingAlgorithm”。然而,我不认为是这样。我的要求是 IDP 和 SP 都使用 AES-256 作为加密算法。

对此的任何输入都会很棒。谢谢。

0 投票
0 回答
1449 浏览

saml - SAML 安全 AuthnRequest 失败

我无法向我的 Shibboleth IdP 发出安全的 ECP AuthnRequest。我有一个小型的概念证明 SP 正在运行,它主要基于 Spring SAML 扩展示例应用程序。我的 SP 元数据是使用 Spring SAML 扩展示例应用程序的元数据生成器生成的。使用的签名密钥是示例应用程序 samlKeystore.jks 密钥库中包含的 apollo 密钥,所有这些也在我自己的小型 SP 应用程序中。

在我的 SP 元数据中,我将 AuthnRequestsSigned 属性设置为 true,如下所示:

如果我将 AuthnRequestsSigned 设置为 false 并将 ECP SOAP POST 发送到 IdP,它就可以正常工作。我从 IdP 获得了正确的 SOAP 消息。但如果该值为真,我会收到一条非描述性错误消息:

我查看 Shibboleth (IdP) 日志并看到:

这会在我的交易日志中显示两次。我的假设是因为它在请求和我的 SP 元数据中找到了证书。在同一事务期间,在日志的更下方,我看到了这个,然后是堆栈跟踪:

我将 ECP POST AuthnRequest 中的证书与我的 SP 元数据中用于“签名”的证书进行了比较,它们是相同的。所以我不确定为什么我会收到这个错误。

我的理解是,IdP 将获取在<ds:X509Certificate>请求标签中找到的证书(即公钥),并确保与 SP 元数据中定义的证书相同。然后使用该证书来验证签名值,该签名值也在<ds:SignatureValue>元素的请求中。如果它验证,那么它会继续使用 AuthnRequest。这是准确的吗?

我错过了什么?

更新 1:我已按照建议添加了日志记录行,以下是 ECP 请求显示的所有内容:

需要注意的一点是,如果我通过浏览器向我的 SP 发出请求并且我没有登录,我会按预期重定向到我的 IdP 登录页面。我检查 IdP 日志,发现该请求也已签名并验证。我查看了从 SP 发送到 IdP 的表单数据,发现它AuthnRequest也是使用相同的证书签名的,但SignatureValue值当然不同。非 ECP 请求数据 XML 看起来与 ECP 请求 SOAP XML 非常相似,但 ECP 失败了。

更新 2:我正在使用 spring-security-saml-1.0.0.RELEASE 和 Shibboleth IdP v2.4.0。这是我发送给 IdP 的示例消息:

我几乎只是将初始 PAOS 请求的响应复制到 SP(Spring SAML),删除标头内部,并将其发送到 Shibboleth IdP。我发送的标题是:

更新 3:签名的非 ECP AuthnRequests 验证就好了。因此,对于签名失败的 IdP,只有 SOAP ECP AuthnRequests。有任何想法吗?

更新 4:仍然无法正常工作。任何帮助,将不胜感激。

0 投票
1 回答
1420 浏览

java - Spring Security:根据实体不同的身份验证方法

第一次在这里发帖,希望我做得对。

在一个项目中,我们有一个场景,我们有一个包含多个实体的 Web 应用程序。目前,登录是通过默认的 JDBC Spring Security 提供程序管理的,工作正常。

对于一个新要求,我们需要每个实体可以有自己的登录方法(目前有两种方法可用,JDBC 一种,这是当前的一种,第二种方法是通过 SAML 进行身份验证,每个实体都定义自己的IdP,但这是另一个故事)

我需要一些关于如何实现这一点的指导方针,我已经进行了一些搜索,并且我找到了不同 URL 的提供者等......但对于相同的应用程序和 url,根据用户类型或实体,没有不同的登录方法。

有一个自定义单一入口点的好方法,我们可以在其中检查实体用户,然后使用合适的身份验证提供程序?

亲切的问候,

亚历克斯