15

署名済みアサーションも含む SAML 応答に署名する場合、次のことを行う必要があります。

A) アサーション署名なしで応答署名を生成します。次に、両方の署名が生成された後にアサーション署名を挿入します。

B) アサーション署名を生成し、応答署名を生成するときにそれを含めます。

C) 他に何か?

4

4 に答える 4

43

SAMLはひどいです。回答を読むたびに、ほぼ正しいです。ここに正しいアルゴリズムが抽出されています。

  1. SHA1 アサーションの標準バージョン。
  2. SHA1 署名を使用して SignedInfo XML フラグメントを生成する
  3. SignedInfo XML フラグメントに署名します。これも正準形式です。
  4. SignedInfo、署名、およびキー情報を取得し、署名 XML フラグメントを作成します
  5. この SignatureXML をアサーションに挿入します (saml:subject の直前に挿入する必要があります)。
  6. 次に、アサーション (署名を含む) を受け取り、応答に挿入します。
  7. SHA1 この応答
  8. SHA1 署名を使用して SignedInfo XML フラグメントを生成する
  9. SignedInfo XML フラグメントに署名します。これも正準形式です。
  10. SignedInfo、署名、およびキー情報を取得し、署名 XML フラグメントを作成します
  11. この SignatureXML をレスポンスに挿入します
  12. XML バージョン情報を応答に追加します。

それでおしまい。SAML は完全にひどいものです。SAML の実装を悪夢にする小さな微妙な点がたくさんあります (XML のサブセットの正規形式 (アサーション) の計算など)。XML ドキュメントの XML バージョンも含まれていません。

私は実装を終えました。二度とこのような苦痛を味わうことはありません。

于 2011-08-16T04:54:27.813 に答える
8

正解は B) だと思います。最初にアサーションに署名してから、署名されたアサーション データを含む応答に署名します。ただし、単一の発行者/エンティティ (STS/IDP/etc) が両方に署名している場合、アサーションに署名する本当の理由はありませんか? アサーション データを含むプロトコル メッセージ/応答に署名するだけです。これにより、SP での処理要件が削減されます。Web SSO の場合、アサーションとレスポンスに異なるエンティティが署名している場合に、両方の部分が署名されているのを見たことがあります。

于 2011-08-05T21:06:48.380 に答える
6

両方に署名する場合は、最初にアサーションに署名し、次に応答に署名する必要があります。これは、応答の署名が応答の内容全体 (アサーションの署名を含む) に基づくためです。したがって、アサーションに 2 番目に署名すると、応答の署名が無効になります。

于 2011-08-07T16:50:49.020 に答える
0

正解はBです。

アサート側がAを使用してSAML応答に署名する場合、証明書利用者はSAML応答を検証する前に、SAML応答の署名とSAMLアサーションの署名を削除する必要があります。SAMLコア仕様では、エンベロープ署名変換または排他的正規化変換以外の変換を使用して署名を生成してはならないことが規定されています。これらの2つの変換のいずれも、SAMLアサーションのシグネチャを削除できません。したがって、証明書利用者はSAML応答を検証できません。

于 2013-03-09T13:01:57.420 に答える