web-dev-qa-db-ja.com

SAML応答が信頼できるソースからのものであることを確認します

私はSAML 2.0のサービスプロバイダーになることができるように、サイトに変更を加える過程にあります。 IdPによって開始されるSAMLをアウトオブバンドアカウントフェデレーションで実行します。

私の質問はこれです。私のサイトのターゲットページに投稿されたSAML応答を前提として、応答が信頼できるソースによって生成されたことを確認するにはどうすればよいですか?

応答に埋め込まれている署名を検証できますが、...応答に署名して自分のサイトに投稿し、ユーザーの検証を試みることはできませんか?信頼できるIDプロバイダーのリストに対して抽出および照合できる何かが署名にあると思いますか?しかし、攻撃者はそれを偽装することはできませんか?

7
theycallmemorty

署名はキーに対して検証する必要があります。データを交換するすべてのエンティティに対応するキーが必要です。許可されていないエンティティにはキーがなく、広く受け入れられている優れた暗号化プロトコルのキースペースにより、ブルートフォースが不可能になります。

あなたの質問の文言から、あなたは デジタル署名 の概念について読みたいと思うかもしれません。

6
Jeff Ferland

@Jeff Ferlandが言ったように、リモートパーティからのキーを信頼する必要があります。

これが、たとえばShibboleth連合が設計された理由です。典型的な Shibboleth SP構成例 を見ると、フェデレーションの一部であるIdPの証明書をプルするメタデータファイルが定期的にプルされます。通常、そのリストを信頼していることを確認する必要があります(フェデレーション証明書で署名するか、信頼できるHTTPSサーバーから利用可能にすることができます)。次に、取得したSAML応答がそのフェデレーションのIdPの1つによって発行されていることを確認する必要があります。

これは、信頼できる証明書のリストを取得する唯一の方法であることに注意してください。信頼できるIdPが事前にわかっている場合は、より手動で行うことができます。少なくとも手動で少なくとも1つの「エントリポイント」を手動で構成する必要があります(これにより、信頼できるIdP証明書、帯域外、またはフェデレーションのCA証明書のいずれかを意味します):これは、PKIと同じ問題です、ブラウザでのウェブサイトの信頼方法を含む。

この種の環境での実際の難しさは実際には技術的なものではなく、信頼する証明書(および交換できる属性)をパートナーと交渉する管理部分です。

6
Bruno