IDプロバイダー(IdP)、サービスプロバイダー(SP)、およびリダイレクトを介したブラウザー間でどのように渡されるかについてのフローチャートをたくさん見てきました。しかし、今は不必要に思えるので、何かが足りないのはわかっています。
SAMLアーティファクトを使用しない場合と比較してSAMLアーティファクトが必要な(または非常に役立つ)ユースケースを誰かに教えてもらえますか?
ありがとうございました。
通常、アーティファクトバインディングの目的は、ブラウザ自体を介したSAMLメッセージのフローを減らすことです。これは、ブラウザの制限(クエリ文字列/ POSTペイロードサイズに制限があるブラウザ)またはJavaScriptのサポートがない(自動送信されたフォームの場合)、あるいはSAMLメッセージの転送方法のセキュリティモデルを改善するためである可能性があります。アーティファクトを使用することにより、SAMLアサーション/属性ステートメントを介して運ばれる機密データはブラウザを通過しないため、エンドユーザーまたはサイトとエンドユーザーの間の攻撃者から隠すことができます。この機密データは、バックチャネルルックアップを介してサイト間で直接解決されるだけです。
SAML 2.0バインディング仕様のセクション3.6.2は、それを最もよく要約しています。
HTTPアーティファクトバインディングは、SAMLリクエスターとレスポンダーがHTTPユーザーエージェントを仲介者として使用して通信する必要がある場合を対象としていますが、仲介者の制限により、メッセージ全体の送信(またはメッセージ交換)が妨げられたり、阻止されたりします。これは、技術的な理由、またはメッセージコンテンツを仲介者に公開することを躊躇するためである可能性があります(暗号化の使用が実用的でない場合)。その後、SOAPなどの別の同期バインディングを使用してアーティファクトを解決する必要があるため、アーティファクトの送信とは逆方向に、SAMLメッセージの送信者と受信者の間に直接通信パスが存在する必要があります(メッセージとアーティファクトの受信者はアーティファクト発行者にリクエストを送り返すことができます)。
Scott Tの回答を拡張して、SAMLアーティファクトプロファイルはセキュリティを向上させるように設計されました。ユーザーがトラフィックの途中でSAMLアサーションを変更できないようにするため(ユーザー名、ロールの変更など)、SAML 2.0は、開発者がXML署名を介してアサーションに署名することを提案します。ただし、XML署名は、既存のXMLパーサーのすべての言語に問題があるため、XMLラッピング攻撃に対して非常に脆弱です。https://www.usenix.org/conference/usenixsecurity12/breaking-saml-be-whoever-you-want-beにアクセスして、SAMLアサーションに対するXMLラッピング攻撃の動作を確認してください。
SAMLアーティファクトプロファイルは、SAMLアサーションではなく、ユーザーによって(リダイレクトまたは投稿を介して)サービスプロバイダーに渡される1回限りの「アーティファクト」を作成することにより、この問題を解決します。サービスプロバイダーは、1回限りの使用アーティファクトを受信すると、SAMLアーティファクト解決要求(アーティファクトを含む)をIDプロバイダーのアーティファクト解決サービス(ARS)に送信します。次に、ARSはSAMLアーティファクト応答(ユーザーのSAMLアサーションを含む)で応答します。これにより、SAMLアサーションがバックチャネルを介してサービスプロバイダーによって直接受信されるため、ユーザーがSAMLアサーションを変更することを防ぎます。
SAMLメッセージは、値または参照のいずれかによって、あるエンティティから別のエンティティに送信されます。SAMLメッセージへの参照はアーティファクトと呼ばれます。アーティファクトの受信者は、アーティファクトの発行者に直接要求を送信することによって参照を解決します。発行者は、アーティファクトによって参照される実際のメッセージで応答します。
SAML2.0を参照してください。
アーティファクトがないと、実際のメッセージに到達する方法はありません。
これは、HTTPアーティファクトバインディングを使用する場合にのみ必要であることに注意してください。(単純にSAMLメッセージを送信するより一般的なHTTP POSTバインディングとは対照的です)。
HTTPアーティファクトバインディングを使用するもう1つの理由は、SSLを使用してSAMLメッセージの整合性と機密性を確保できることです。SAMLリクエスターとレスポンダーは、SAMLメッセージに署名、検証、暗号化、および復号化する必要はありません。
最近は興味がないと思われるかもしれませんが、アーティファクトプロファイルは、ユーザーエージェントとsp&idpサーバー間の帯域幅が低く、sp&idp間の帯域幅が広い場合にも役立ちます。(重い)アサーションは、idpからuaへ、およびuaからspへと循環せず、特定の状況でより良いパフォーマンスを示す場合があります。