Spring Security SAML signatureKey / encryptionKey - PullRequest
0 голосов
/ 28 августа 2018

Комментарии в исходном коде:

  1. encryptionKey: ключ шифрования, используемый для шифрования сообщений, отправляемых удаленному объекту, или для расшифровки данных, отправляемых на локальный.

  2. signatureKey: ключ подписи, используемый для подписи сообщений или проверки подписей этой сущности.

В исходном коде я видел сообщение для отправки подписывающего ключа, но я не видел код для проверки подписи.

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

Обычно signatureKey / encryptionKey должен отличаться для sp и idp. Я не могу понять объяснение выше этих двух полей. каковы ваши предложения?

1 Ответ

0 голосов
/ 29 августа 2018

Шифрование и подпись используются для удовлетворения двух разных потребностей: первый гарантирует, что только получатель может прочитать содержание утверждения, а второй гарантирует, что утверждение было сгенерировано сущностью, которая применила подпись, и что она не была изменена. Обычно вы должны использовать шифрование, когда вы не хотите, чтобы сообщение читалось никем, кроме получателя (разумные данные), и использовать подпись, когда вы хотите быть уверены в источнике (почти всегда для ответов аутентификации и операторов атрибутов)

Шифрование и подпись реализованы на асимметричной криптографии. Это означает, что вы можете использовать открытый ключ для проверки подписи или использовать его для шифрования сообщения, чтобы его мог расшифровать только владелец соответствующего закрытого ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...