セキュリティ キーを送信している顧客がいます。彼らが使用している暗号化はトリプル DES です。彼らが送信するすべてのアサーションには、必要な特権を与えるために検証する必要がある署名値があります。これを行うサンプルコードを教えてください。
2 に答える
暗号化と署名は 2 つの異なる動物です。トリプル DES は、対称キー方式 (暗号化と復号化に使用される同じキー) です。一方、デジタル署名は非対称鍵 (秘密鍵と公開鍵のペア) を使用します。署名は秘密鍵を使用して計算され、公開鍵を使用して検証できます。そのため、顧客が送信した XML に署名を含めたい場合は、公開鍵を提供する必要があります。
暗号化の場合、SAML で一般的なのは XMLEncryption を使用することです。これは、暗号化キー情報と暗号化されたデータを SAML メッセージに含めるための XML 形式を定義します。静的対称鍵の交換には問題があるため (傍受された場合、インターセプターはメッセージの暗号化と復号化の両方を行うことができます)、代わりにできることは、メッセージごとに新たに生成される動的対称鍵を使用することです。次を使用してメッセージを暗号化します。キーを暗号化し、そのキーを秘密/公開暗号化キー ペアの公開キーで暗号化し、メッセージと共に送信します。暗号化された対称キーは、暗号化に使用されたキー ペアの秘密の半分を使用してのみ復号化できます。
したがって、重要な観点から見た最も重要な違いは、署名の場合は顧客が秘密鍵を保持し、公開鍵を共有する必要があるのに対し、暗号化の場合は秘密鍵を保持し、公開鍵を顧客と共有する必要があることです。 .
SAMLアサーションまたは署名可能なXMLオブジェクトのいずれかで署名を検証する場合は、OpenSAMLWIKIに詳細情報があります。
https://wiki.shibboleth.net/confluence/plugins/viewsource/viewpagesrc.action?pageId=3277047
「署名検証の例」を探すことができます。
このブログ投稿にも例があります。
https://blog.samlsecurity.com/2012/11/verifying-signatures-with-opensaml.html
検証用の「クレデンシャル」を取得するには、 https ://blog.samlsecurity.com/2011/03/getting-credentials-in-opensaml.htmlを参照してください。
XMLをOpenSAMLオブジェクトにアンマーシャリングする方法については、 https ://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUsrManJavaCreateFromXMLを参照してください。