Как проверить значение подписи SAML - PullRequest
7 голосов
/ 02 февраля 2010

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

Ответы [ 2 ]

14 голосов
/ 10 февраля 2010

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

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

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

6 голосов
/ 02 января 2013

Если вы хотите проверить подпись на утверждении SAML или любом из подписываемых объектов XML, в OpenSAML WIKI есть дополнительная информация:

https://wiki.shibboleth.net/confluence/plugins/viewsource/viewpagesrc.action?pageId=3277047

Вы можете найти «ПодписьПримеры проверки '.

В этом посте также есть пример:

http://mylifewithjava.blogspot.com/2012/11/verifying-signatures-with-opensaml.html

Чтобы получить «учетные данные» для проверки, см. Здесь: http://mylifewithjava.blogspot.com/2011/03/getting-credentials-in-opensaml.html

Информацию о том, как демонтировать xml в объект Open SAML, см. Здесь: https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUsrManJavaCreateFromXML

Спасибо, Йогеш

...