Oracle® Fusion Middleware Oracle Access Management管理者ガイド 11g リリース2 (11.1.2.3) for All Platforms E61950-08 |
|
前 |
次 |
Identity Federationには、Access ManagerがIdPにユーザー属性を要求できるようにするための属性共有プラグインが用意されています。
この対話において、SPは<AttributeQuery>リクエスタであり、IdPは<AttributeQuery>レスポンダになります。属性共有プラグインは、SOAPを使用して転送されるリクエスト/レスポンス・プロトコルである属性問合せサービスに依存します。
ノート:
属性共有プラグインは、X.509認証ベースの属性共有プロファイル(XASP)のスーパーセットをAccess Manager認証フローに実装するのにAttributeQueryリクエスタ・サービスを利用します。
Identity Federationは(SPとして構成されている場合)、SOAPコールへのレスポンスでSAML 2.0 <AttributeQuery>をIdPに送信できます。プラグインは、認証スキームの1ステップとして構成できます。別のプラグインによる認証後に起動して、認証済ユーザーの属性をフェッチし、これをAccess Managerセッションに設定できます。次の各項では、さらに詳細を説明します。
Identity Federationは、リモートIdPにユーザー属性を要求するには、SPとして構成されている必要があります。
図38-4に、属性共有プラグインの大まかな設計を示します。
属性共有プラグインは、Access Managerカスタム認証モジュールに含めることができ、ユーザー認証後に起動できます。属性共有プラグインは、Identity Federation Java APIを起動し、ユーザー属性をAccess Managerセッションに設定し、SPによって処理できる属性リクエストにJava引数を変換することにより、ユーザー属性をフェッチします。Identity Federation SPは、属性リクエストを(公開SOAPエンドポイントで)受信し、要求されている属性を判断し、SOAP/HTTP/SSLチャネルで要求されている属性名を使用して(必要に応じて)署名および暗号化されたSAML 2.0 <AttributeQuery>をIdPの属性レスポンダ・サービスに送信します。
ノート:
属性共有プラグインを起動する際、このフレームワークから、<AttributeQuery>に含める次の情報が提供されます。
認証済ユーザーのユーザーIDまたはSubjectDN (使用可能な場合)
パートナIDのユーザー・セッション属性(フェデレーション認証プラグインがユーザーの認証に使用された場合のみ使用可能)
テナント名
IdP名(プラグインがIdP固有に作成された場合)
リモートIdPの属性レスポンダ・サービスが<AttributeQuery>を受信し、これを復号化し(必要に応じて署名を確認し)、SPが属性を要求できるかどうかをローカル・ポリシーから判断します。問題ない場合、ユーザー・リポジトリから属性を取得し、<Assertion>を(属性値を含む<AttributeStatement>とともに)構築し、オプションで署名と暗号化を行い、<Response>をアサーションとともにSPに戻します。SPは、<Response>を受け取ると、アサーションを復号化して、必要に応じて署名を確認し、アサーションから属性を抽出し、この情報をAccess Managerセッションに設定します。後続の項で詳細を示します。
属性リクエスタ・サービスは、SOAP属性リクエストを処理し、SOAP属性レスポンスを返します。
「SOAPエンドポイントの使用」を参照してください。
属性リクエストには、SubjectDNと、その他の要求された属性とその値のリストが含まれます。属性リクエスタ・サービスは、リクエストから次のいずれかを(リストの順で検索)抽出することにより、属性をフェッチするIdPを識別します。
SP属性リクエスタを使用する場合
この検出の後、属性リクエスタ・サービスは、SOAP属性レスポンダ・サービスのエンドポイントURLをIdPのメタデータから取得し、属性マッピング・プロファイル経由でリクエスト内の属性を処理することにより、フェッチする属性リストを作成します。
ノート:
ターゲットIdP用に指定されている属性マッピング・プロファイルを使用して、着信属性名を変更したり、このIdP用の属性マッピングでsend-with-sso
(常に要求)として構成されている属性を追加します。
SAML属性問合せが、属性リストとともに生成され、IdPのSOAPエンドポイントに送信されます。レスポンスが受信されると、サブジェクトが検証され、アサーションから各属性が抽出され、値が検出され、属性と値の両方がキャッシュされます。最後に、属性レスポンスSOAPメッセージが構築され、コール元に戻されます。
次の例は、サンプルのSOAP属性リクエストです。
サンプルのSOAP属性リクエスト
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <attrreq:AttributeRequest TargetIDP="adc.example.com" xmlns:attrreq="http://www.example.com/fed/ar/10gR3"> <attrreq:Subject Format="oracle:security:nameid:format:emailaddress">alice@example.com </attrreq:Subject> <attrreq:Attribute Name="cn"> </attrreq:Attribute> </attrreq:AttributeRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
次の例は、サンプルのSOAP属性レスポンスです。
サンプルのSOAP属性レスポンス
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:ns2="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:enc="http://www.w3.org/2001/04/xmlenc#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:wst14="http://docs.oasis-open.org/ws-sx/ws-trust/200802" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:ic="http://schemas.xmlsoap.org/ws/2005/05/identity" xmlns:mdext="urn:oasis:names:tc:SAML:metadata:extension" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:ns11="http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ns14="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xrds="xri://$xrds" xmlns:xrd="xri://$xrd*($v*2.0)" xmlns:tns="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" xmlns:ns19="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:ns20="http://www.w3.org/2003/05/soap-envelope" xmlns:wsse11="http://docs.oasis-open.org/wss/ oasis-wss-wssecurity-secext-1.1.xsd" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:query="urn:oasis:names:tc:SAML:metadata:ext:query" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500" xmlns:orafed-arxs="http://www.oracle.com/fed/ar/10gR3" xmlns:mdattr="urn:oasis:names:tc:SAML:metadata:attribute" xmlns:ns31="urn:oasis:names:tc:SAML:profiles:v1metadata" xmlns:ecp="urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp"> <soap:Body><orafed-arxs:AttributeResponse CacheFor="899"> <orafed-arxs:Status>Success</orafed-arxs:Status> <orafed-arxs:Subject Format="oracle:security:nameid:format:emailaddress"> alice@example.com</orafed-arxs:Subject> <orafed-arxs:Attribute Name="cn"> <orafed-arxs:Value>alice</orafed-arxs:Value> </orafed-arxs:Attribute> </orafed-arxs:AttributeResponse></soap:Body></soap:Envelope>
Identity Federation IdP属性レスポンダは、SAML属性問合せを受信し、要求された属性の値を含む属性文とともにSAMLレスポンスを送信します。IdPはまず、リクエスタをSPパートナとして識別し、次に、そのユーザーがユーザー・データ・ストアに格納されていることを、NameId値またはSubjectDN値により確認します。次に、SPパートナの属性マッピング・プロファイルを使用して、要求されている各属性の値を取得します。最後に、属性値を含む属性文とともにSAMLレスポンスを構築し、返します。
ノート:
属性レスポンダはSPパートナの属性マッピング・プロファイルを使用して、値を取得します。属性マッピング・プロファイルにマッピングが定義されていない場合、属性には空の値が返されます。値式にセッションまたはリクエストのネームスペースにおける変数が含まれている場合も、空の文字列が返されます。属性マッピング・プロファイル内の値式を正しく評価するには、user.attr
ネームスペースの変数のみ使用できます。
属性共有プラグインには、オプションの構成パラメータがあります。
表38-11に、属性共有プラグインを示します。
表38-11 属性共有プラグインの構成パラメータ
パラメータ | 説明 |
---|---|
NameIDValueAttribute |
ユーザーの名前IDを取得できるセッション属性の名前。 |
NameIDFormatAttribute |
名前IDフォーマットとして使用する値を含む属性の名前。 |
AttributeAuthorityAttribute |
SPが<AttributeQuery>を送信する先のIdPとして使用する値を含む属性の名前。 |
RequestedAttributes |
このパラメータは、 |
DefaultNameIDFormat |
他のパラメータとセッション属性から決定されていない場合に使用される名前IDフォーマット。 |
DefaultAttributeAuthority |
ユーザーの属性を要求するデフォルトIdPパートナ。 |
属性共有プラグインは表38-12の属性にもアクセスできます。これらの属性は、実行時Access Managerセッションに含まれている場合があります。
表38-12 属性共有プラグインがアクセスできるセッション属性
属性 | 説明 |
---|---|
fed.partner |
ユーザーの認証にフェデレーションが使用されている場合、この値により、使用されたIdPが判断されます。これにより同じIdPが属性共有で使用されます。 |
fed.nameidformat |
ユーザーの認証にフェデレーションが使用されている場合、この属性値により、名前IDフォーマットが判断されます。 |
fed.nameidvalue |
ユーザーの認証にフェデレーションが使用されている場合、この属性値により、ユーザーの名前IDが判断されます。この属性がセッションに含まれている場合、SPのアイデンティティ・ストアからのユーザーの検出にDNとして使用されます。 |
KEY_USERNAME_DN |
この値がセッションに含まれている場合、SPのアイデンティティ・ストアからのユーザーの検出にDNとして使用されます。 |
パラメータについて、およびパラメータが属性共有の処理方法をどのように決定するかについて、以降の項で詳しく説明します。
これは、SPが属性を要求するユーザーの名前識別子です。
名前IDを決定するには、次の検索が順に実行されます。
属性共有プラグインが次のことを行います。
NameIDValueAttributeが指定されている場合、セッションから指定の属性値を取得し、それを名前IDとして使用します。
NameIDValueAttributeが指定されていない場合、名前IDとしてfed.nameidvalue
の値を使用します。
前述の方法で判断できない場合、属性共有プラグインは、nullまたは空の名前IDでフェデレーション・エンジンを起動し、ユーザーID (KEY_USERNAME_DNセッション属性で指定)がSP属性リクエスタに送信されます。
属性リクエスタ(SP)は次のことを行います。
名前IDがリクエストに含まれていれば、ユーザーの名前としてこの値を使用します。
名前IDの指定がなく、ユーザーIDがある場合(認証プラグイン起動時に発生)、defaultattrrequestnameiduserattribute
属性の値を取得し(このIdPのSP構成で検出)、これを名前IDとして使用します。
SAML 2.0を使用している場合のみ: 名前IDが決定されていない状態でSSOがシンプル名前IDマッピングで構成されている場合、nameiduserattribute
属性を使用します(このIdPのSP構成で検出)。たとえば、この属性値が$user.attr.mail
である場合、この属性からユーザーの名前を抽出し、これを名前IDとして使用します。
名前IDがまだ決定されない場合、エラーがスローされます。
これは、ユーザーの名前IDのフォーマットです。
名前IDフォーマットを決定するには、次の検索が順に実行されます。属性共有プラグインが次のことを行います。
NameIDFormatAttributeパラメータが指定されている場合、指定の属性の値を取得し、それを名前IDフォーマットとして使用します。
表38-11を参照してください。
fed.nameidformat
属性の値を名前IDフォーマットとして使用します。
表38-12を参照してください。
DefaultNameIDFormat
の値を名前IDフォーマットとして使用します。
表38-11を参照してください。
名前IDフォーマットがまだ決定されない場合、属性共有プラグインがフェデレーションをnull/空の名前IDフォーマットで起動します。
属性リクエスタ(SP)は次のことを行います。
リクエストで指定されている名前IDフォーマットを使用します。
defaultattrrequestnameidformat
属性の値(このIdPのSP構成で検出)を使用します。
SAML 2.0を使用している場合のみ: 名前IDフォーマットがまだ決定されていない場合、defaultauthnrequestnameidformat
属性の値(このIdPのSP構成で検出)を使用します。
名前IDフォーマットがまだ決定されない場合、エラーがスローされます。
これは、属性リクエストが送信されるIdPパートナです。
IdPパートナを決定するには、次の検索が順に実行されます。属性共有プラグインが次のことを行います。
AttributeAuthorityAttributeが指定されている場合、その値を取得し、それをIdP名として使用します。
表38-11を参照してください。
fed.partner
属性の値をIdP名として使用します。
表38-12を参照してください。
DefaultAttributeAuthority
パラメータの値をIdP名として使用します。
表38-11を参照してください。
IdPがまだ決定されない場合、属性共有プラグインがフェデレーションをnull/空の名前IDフォーマットで起動します。
属性リクエスタ(SP)は次のことを行います。
属性共有プラグインに送信されたリクエストに含まれていたIdP名を使用します。
x509を使用している場合のみ: DN-IdPマッピングを検出し、このユーザーDNのIdPを決定します。
defaultattrauthority
属性の値(SP構成で検出)を使用します。
defaultssoidp
属性の値(SP構成で検出)を使用します。
IdP名がまだ決定されない場合、エラーがスローされます。
これらは、属性認証局に対して要求された属性です。
属性を決定するには、次の検索が順に実行されます。属性共有プラグインが次のことを行います。
RequestedAttributes
パラメータが定義されている場合、指定の属性を使用します。何も指定されていない場合、属性は送信されません。
表38-11を参照してください。
属性リクエスタ(SP)は次のことを行います。
RequestedAttributes
パラメータが定義されている場合、指定の属性を使用します。
表38-11を参照してください。
属性をIdPパートナ・プロファイル内のrequest from partner(send-with-sso)
属性に追加します。
属性レスポンダ(IdP)は次のことを行います。
SPからの<AttributeQuery>に特定の属性値に対するリクエストが含まれている場合、これらの属性の値を返します。
属性値が要求されていない場合、SP属性プロファイル構成内のAlways Send (send-with-sso)
として指定されている属性を返します。