2010-02-02 9 views
7

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

+0

@king - какая у вас платформа? Ява? C#? PHP? укажите, пожалуйста, пример/ответ. –

+0

java using opensaml – stu

ответ

13

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

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

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

5

Если вы хотите, чтобы проверить подпись на 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 в Открыть объект SAML, смотрите здесь: https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUsrManJavaCreateFromXML

Спасибо, Yogesh

+0

Я подробно объясняю это подробно в своей новой книге «Руководство по OpenSAML», https://gumroad.com/l/a-guide-to-opensaml –

+0

К сожалению, ссылки и книги не используются, t, похоже, описывает, как построить «учетную запись» (используемую функцией «SignatureValidator()» из подписи внутри SAML. – GrandAdmiral

 Смежные вопросы

  • Нет связанных вопросов^_^