Как проверить значение подписи SAML

У меня есть клиент, который отправляет Ключ защиты. Шифрованием, которое они используют, является тройной DES. Каждое Утверждение, которое они отправляют, имеет значение подписи, которое должно быть проверено, чтобы дать им необходимые полномочия. Можно ли дать мне пример кода, который делает это?

7
задан divanov 3 February 2014 в 04:51
поделиться

1 ответ

Шифрование и подписание - это два разных понятия. Тройной DES - это метод симметричного ключа (один и тот же ключ используется для шифрования и дешифрования). Цифровые подписи, с другой стороны, используют асимметричные ключи (пара закрытый/открытый ключ), где подпись вычисляется с помощью закрытого ключа и может быть подтверждена с помощью открытого ключа. Поэтому если ваш клиент хочет включить подписи в XML, который он вам отправляет, то он должен предоставить вам свой открытый ключ.

Для шифрования в SAML обычно используется XMLEncryption, который определяет формат XML для включения информации о ключах шифрования и зашифрованных данных в сообщения SAML. Поскольку обмен статическим симметричным ключом проблематичен - если он будет перехвачен, то перехватчик сможет как зашифровать, так и расшифровать любое сообщение - вместо этого можно использовать динамический симметричный ключ, который генерируется заново для каждого сообщения, зашифровать сообщение с помощью этого ключа, затем зашифровать этот ключ открытым ключом пары закрытый/открытый ключ шифрования и отправить его вместе с сообщением. Зашифрованный симметричный ключ может быть расшифрован только с помощью закрытой половины пары ключей, использованной для его шифрования.

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

14
ответ дан 6 December 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: