標準を調べて、OpenSAML-J APIを参照しましたが、これを実行する明白な方法が見つかりません。それは可能ですか、そうなら、どうですか?私が欲しいものIDPに認証応答に指定された属性が含まれるようにする
は、特定の値を持つという名前の属性が含まれるように、最終的なAuthnResponse
せる(私のコードによって生成され、IDPに投稿された)AuthnRequest
で何かを含めることです。理想的には、属性は常に含める必要がありますが、属性が認証に成功した場合にのみ含まれていれば機能します。 AuthnRequestの構築時に、希望する名前と値がわかっています。
私は約RelayState
を考えましたが、それは私が探しているものではないようです。
Are attributes allowed in a SAML authentication request? AuthnRequestで属性を含めると述べていますが、私が知る限り、属性を含めるために拡張機能を使用しても、同じ属性がIDPによって発行された最終応答に含まれることは保証されません。 (しかし、私はコアセクション7.2.1を誤解しているかもしれませんが、それは実際に私のケースに当てはまりますか?)特定の実装の動作に依存することはできません。それは規格によって保証されなければならない。
ご意見をいただければ幸いです。
私が考えることができる唯一の解決策は、関連するデータをローカルに保存し、それぞれ要求と応答の属性がID
とInResponseTo
であることを参照することですが、私ができるなら、むしろ避けてください。
問題は、属性の値が元の認証要求によって異なるため、IDPは要求があるまでその情報を格納する必要があります。たぶん、私は弾丸をかみ合わせて、そのデータをローカルに保存する必要があります。少なくとも「ID」と「InResponseTo」の両方が標準で義務付けられていますが、それはわずかな追加のデータベースラウンドトリップといくつかの複雑さを意味しますが、私の目的のために動作するセマンティクスを備えています。 –
個人的には、ID/InResponseToではなくRelayStateを利用することをお勧めします。 IDで同じことを達成できると確信していますが、RelayStateは、あなたが記述していることを正確に行うことを意図しています - リクエスト/レスポンス間の状態を維持します。それはあなたがしている属性/値を検索するためのセッション識別子を含んでいます。 –