问题标签 [opensaml]
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.
saml - IDP 发起的 SLO 不起作用
我在 OpenAM 扮演 IDP 角色的应用程序中使用基于 SAML 的 SSO。我已经测试了基于 SP 的 SSO、SLO 和基于 IDP 的 SSO,一切正常,但基于 IDP 的 SLO 无法正常工作,当用户退出 IDP 时,我在我的 SP 中收到通知,但此请求不包含任何用户信息或浏览器 cookie,所以想知道两件事:
- 这些通知是通过反向渠道发生的吗?
- 如果没有,我如何获取我的 SP 端会话并在收到此类通知时使其无效?
如果他们的一些示例实现在 Java 中可用?
single-sign-on - 相同的 SAML 响应是否应该被接受两次、多次?
只要 SAML 联合软件在允许的 SAML 令牌生命周期内,它是否应该接受相同的 SAML 响应?
简单来说: IDP(标识提供者)发出 SAML 响应,然后 SP(服务提供者)接受/处理它。是否可以在第一次使用后立即重新使用相同的未修改 SAML 响应?鉴于 SAML 发布时间戳在允许的范围内。
在安全方面,将 SAML 令牌(响应)限制为仅一次使用是有意义的,这样即使它被“中间人”窃取 - 它也不能被重用。但为了实现这一点,软件需要在某处存储一些关于 SAML 响应的信息:序列号,整个事物的哈希?
请提供一些链接,其中包含可能的解释和/或实施示例。
谢谢!亚历克斯。
opensaml - org.opensaml.xml.validation.ValidationException:Apache xmlsec IdResolver 无法解析 id 引用的元素
我正在尝试验证 SAML 断言签名,但收到以下错误:
我正在使用 OpenSAML 2.6.1、XMLSec 1.5.6 和 JDK7u51。有什么办法可以摆脱这个错误?
saml - SAML 的可行性
我有一个场景,我有四到五个基于 Web 的应用程序,它需要有一个通用的集中式身份验证系统,在这种情况下,基于 SAML 的方法有多可行,即每次用户想要访问这些 Web 应用程序中的任何一个时,用户都会被重定向到 SAML 服务器,该服务器作为回报重定向到 IDP,或者是他们对这种架构的一些更好的解决方案,因为我是这个域的新手
java - 解密断言的 Opensaml 断言签名验证失败
我已经使用 Opensaml 解密了一个 SAML 断言。尽管解密发生时没有错误,但当我尝试验证该断言的签名时,它会因错误而失败
“org.apache.xml.security.signature.MissingResourceFailureException:URI #eimakmeiiebhiefoopoogamnnbibdpkfloophhdd 的引用没有 XMLSignatureInput”
(对于相同的配置,如果我不使用加密,签名验证会很好)
xml - 编组 SAML 响应对象
嗨,我试图编组一个 SAMLResponse 对象,我收到以下错误。有任何想法吗 ?
saml - IdP 如何知道包含 authnRequest 的变量的名称
我实现了一个 saml 身份提供程序,服务提供程序从隐藏输入中包含 authnRequest 的 HTML 发送一个 HTML,其名称例如 SAMLRequest。
但是IdP是怎么知道这个名字的(SAMLRquest),其实我是硬编码这个名字的,请问有没有其他方法?
saml - 验证嵌入在 SAMLResponse 中的签名断言
我使用 OpenSaml 库,我想验证嵌入在未签名的 SAMLResponse 中的签名断言(XML 签名)。验证总是失败,有没有一种方法可以在没有他的父母(响应)的情况下验证签名的断言?或者,另一种方法?
single-sign-on - 无法找到身份提供者的元数据
我正在尝试在 localhost 上配置 Shibboleth 服务提供者和身份提供者以进行测试。
问题是我在尝试访问受保护的资源时遇到“无法找到身份提供者的元数据”错误。
我已经阅读了与软件配置和此特定错误修复相关的所有教程和讨论,但对我没有任何帮助。
SP 的 shibboleth2.xml 配置:
SP 配置的 idp.metadata.xml 引用:
请注意,这两个文件中的 entityID 是相同的,这是我错误的常见原因。
受保护站点托管在本地 IIS 上,可通过以下方式访问
我得到错误的 URL。
SP 和 IdP 的所有可能状态 URL 都返回成功结果。
有任何想法吗?
saml-2.0 - SAML 2.0 解密 EncryptedAssertion 删除命名空间声明?
我正在编写一个接收加密 SAML 断言的 Web 服务。在 SAML 断言被加密之前,它可以被验证。
当我的服务解密 EncryptedAssertion 时,它无法验证断言签名
为了研究为什么会这样,我创建了一个小测试:
- 创建一个签名的断言(可以验证) - assertion1
- 验证 assertion1 上的签名 - 此测试通过
- 加密 assertion1 以获得 EncryptedAssertion
- 解密 EncryptedAssertion 以取回 Assertion - assertion2
- 验证 assertion2 上的签名 - 此测试失败
如果我比较 assertion1 和 assertion2 节点,则只有一个区别。在 Assertion1 中,xmldsig 命名空间在 Assertion 根元素和 ds:Signature 元素中都声明,在 Assertion2 中 Signature 元素上的 xmldsig 命名空间声明已被删除。
就 XML 而言,这是一个完全有效的转换,并且 XML 仍然有效。我的问题是,当进行此更改时,签名不再有效,因为断言上的签名已将现在缺少的前缀声明考虑在内。
有没有一种方法可以指示 OpenSAML 加密器/解密器不要对接收到的 XML 进行“改进”,而只是将最初用作加密器的输入返回?
更改构造包含两个 xmldsig 名称空间声明的 XML 的客户端对我们来说并不是一个真正的选择。是的,但是该服务的客户端是由另一家公司开发的,如果可能的话,我们希望使我们的服务能够应对这种输入问题。
这是我加密断言1的测试代码:
这是解密 EncryptedAssertion 的测试代码:
这是 assertion1 的开始:
这是 assertion2 的开始 - 请注意,与 assertion1 相比,Signature 节点上的 xmlns:ds 声明缺失:
更新:这是我在尝试验证 assertion2 上的签名时遇到的异常(当解密后 xmlns:ds 不存在时)。当按照答案中的建议调用decrypter.setRootInNewDocument(true) 时,验证调用成功完成: