【问题标题】:Is there a standard format of SAML 2.0 encrypted assertion是否有 SAML 2.0 加密断言的标准格式
【发布时间】:2013-05-06 07:55:52
【问题描述】:

我正在 JBOSS 中实现一个由 SP 发起的 Web 浏览器 SAML SSO 配置文件。

我的应用程序是 SP。

登录后,我希望 IDP 向我发送以下格式的加密断言:

<samlp:Response...>
  <ds:Signature>...
    <ds:KeyInfo>....</ds:KeyInfo>
  </ds:Signature>
  <samlp:Status>...</samlp:Status> 
  <saml:EncryptedAssertion>...</saml:EncryptedAssertion>
</samlp:Response>

它适用于某些 IDP,但现在我有一个 IDP 发送给我:

<saml2p:Response...>
  <saml2p:Status>...</saml2p:Status>
  <saml2:EncryptedAssertion>...
      <ds:KeyInfo>...</ds:KeyInfo>
  </saml2:EncryptedAssertion>
</saml2p:Response>

由于签名丢失,身份验证失败。

我的问题是:我可以告诉 IDP 管理员使用的 SAML 2.0 加密断言的标准格式吗?还是我必须支持这两种方式?

谢谢

【问题讨论】:

    标签: saml saml-2.0 opensaml


    【解决方案1】:

    根据 SAML2 中使用的XMLenc 标准。可以使用 KeyInfo。但是在加密的数据里面不在加密的断言里面。

    响应签名是可选的,如 5.2 在SAML spec 中所反映的那样

    因此,如果是这种情况,您不能因为不遵守标准而对其进行更改。

    【讨论】:

    • 没有签名是可选的,正如规范中第 5.2 章所反映的那样,oasis-open.org/committees/download.php/35711/…
    • 我在答案中添加了这个
    • 那么如何在没有签名的情况下验证发件人的身份呢?
    • 如果断言或更高级别没有签名,例如响应元素,则无法使用 SAML 对其进行验证,因此强烈建议进行签名。可以通过其他方式进行验证。例如客户端证书
    • 我现在看到,在使用 openSAML 解密 EncryptedAssertion 后,我可以使用以下方法获取证书:decryptedAssertion.getSignature().getKeyInfo().getX509Datas().get(0).getX509Certificates()。获取(0).getValue()。这是验证发件人身份的方法吗?将此与他发布的证书进行比较?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多