Spring Security SAML signingKey / encryptionKey

时间:2018-08-28 14:06:47

标签: spring security saml

  

源代码中的注释:

     
      
  1. encryptionKey:用于加密发送到远程实体的消息或解密发送到本地实体的数据的加密密钥。

  2.   
  3. signingKey:用于对消息签名或验证此实体签名的签名密钥。

  4.   

我在源代码中看到了signingkey符号发送消息,但没有看到验证签名的代码。

if (sign) {
        Assert.notNull(samlContext.getLocalSigningCredential(), "Cannot sign outgoing message as no signing credential is set in the context");
        samlContext.setOutboundSAMLMessageSigningCredential(samlContext.getLocalSigningCredential());
    }

通常,sp和idp之间的signingKey / encryptionKey应该有所不同。我无法理解以上对这两个字段的解释。您有什么建议?

1 个答案:

答案 0 :(得分:0)

加密和签名用于满足两个不同的需求: 第一个确保您只有接收者才能读取断言的内容,而第二个确保您已由应用签名的实体生成了一个断言,并且未对其进行修改。 通常,当您不想让接收者(敏感数据)只读取消息时,应该使用加密;而当您想要确定发射器时(几乎总是用于身份验证响应和属性声明),请使用签名。

加密和签名是在非对称密码学上实现的。 这意味着您可以使用公用密钥来验证签名,也可以使用公用密钥来加密邮件,以便只能由对应私钥的所有者解密该邮件。