2011-11-10 6 views
1

標準を調べて、OpenSAML-J APIを参照しましたが、これを実行する明白な方法が見つかりません。それは可能ですか、そうなら、どうですか?私が欲しいものIDPに認証応答に指定された属性が含まれるようにする

は、特定の値を持つという名前の属性が含まれるように、最終的なAuthnResponseせる(私のコードによって生成され、IDPに投稿された)AuthnRequest何かを含めることです。理想的には、属性は常に含める必要がありますが、属性が認証に成功した場合にのみ含まれていれば機能します。 AuthnRequestの構築時に、希望する名前と値がわかっています。

私は約RelayStateを考えましたが、それは私が探しているものではないようです。

Are attributes allowed in a SAML authentication request? AuthnRequestで属性を含めると述べていますが、私が知る限り、属性を含めるために拡張機能を使用しても、同じ属性がIDPによって発行された最終応答に含まれることは保証されません。 (しかし、私はコアセクション7.2.1を誤解しているかもしれませんが、それは実際に私のケースに当てはまりますか?)特定の実装の動作に依存することはできません。それは規格によって保証されなければならない。

ご意見をいただければ幸いです。

私が考えることができる唯一の解決策は、関連するデータをローカルに保存し、それぞれ要求と応答の属性がIDInResponseToであることを参照することですが、私ができるなら、むしろ避けてください。

答えて

1

ユーザーが認証した後、IdPに戻すために回避することができますか? AttributeQueryでは、検索に関心のある属性の名前を付けることができます。できるだけ応答が返されます。

すべてのSAML製品でAttributeQueryがサポートされているわけではありません。そのため、問題の両側にどの程度の柔軟性があるかわかりません。

+0

問題は、属性の値が元の認証要求によって異なるため、IDPは要求があるまでその情報を格納する必要があります。たぶん、私は弾丸をかみ合わせて、そのデータをローカルに保存する必要があります。少なくとも「ID」と「InResponseTo」の両方が標準で義務付けられていますが、それはわずかな追加のデータベースラウンドトリップといくつかの複雑さを意味しますが、私の目的のために動作するセマンティクスを備えています。 –

+0

個人的には、ID/InResponseToではなくRelayStateを利用することをお勧めします。 IDで同じことを達成できると確信していますが、RelayStateは、あなたが記述していることを正確に行うことを意図しています - リクエスト/レスポンス間の状態を維持します。それはあなたがしている属性/値を検索するためのセッション識別子を含んでいます。 –

0

RelayStateは適切な機能です。リクエストの作成時に返される値はすべて既知であるため、文字列にシリアライズし、AuthnRequestを送信するときにRelayStateとして指定し、AuthnResponseと共に返すことができます。

関連する問題