プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Access Management管理者ガイド
11g リリース2 (11.1.2.3) for All Platforms
E61950-08
目次へ移動
目次

前
次

38.7 属性問合せサービス用属性共有プラグインの使用

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セッションに設定できます。次の各項では、さらに詳細を説明します。

38.7.1 プラグインと問合せサービスの設計についての理解

Identity Federationは、リモートIdPにユーザー属性を要求するには、SPとして構成されている必要があります。

図38-4に、属性共有プラグインの大まかな設計を示します。

図38-4 属性共有プラグインの設計

図38-4の説明が続きます
「図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セッションに設定します。後続の項で詳細を示します。

38.7.1.1 SP属性リクエスタの使用

属性リクエスタ・サービスは、SOAP属性リクエストを処理し、SOAP属性レスポンスを返します。

「SOAPエンドポイントの使用」を参照してください。

属性リクエストには、SubjectDNと、その他の要求された属性とその値のリストが含まれます。属性リクエスタ・サービスは、リクエストから次のいずれかを(リストの順で検索)抽出することにより、属性をフェッチするIdPを識別します。

SP属性リクエスタを使用する場合

  1. パートナ/IdP名(フェデレーション・エンジンからリクエストが発行されている場合)。
  2. 認証で使用されるプラグインで構成されているIdP。
  3. リクエストのサブジェクトDN(構成済SubjectDN-IdPマップから問合せを取得するIdPを判断)。具体性が最も高いレベル(cn=Joe User,ou=Finance,o=Company,c=US)から最も低いレベル(c=US)にSubjectDNをマッピング。
  4. デフォルトIdP。

この検出の後、属性リクエスタ・サービスは、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>

38.7.1.2 IdP属性レスポンダの使用

Identity Federation IdP属性レスポンダは、SAML属性問合せを受信し、要求された属性の値を含む属性文とともにSAMLレスポンスを送信します。IdPはまず、リクエスタをSPパートナとして識別し、次に、そのユーザーがユーザー・データ・ストアに格納されていることを、NameId値またはSubjectDN値により確認します。次に、SPパートナの属性マッピング・プロファイルを使用して、要求されている各属性の値を取得します。最後に、属性値を含む属性文とともにSAMLレスポンスを構築し、返します。

ノート:

属性レスポンダはSPパートナの属性マッピング・プロファイルを使用して、値を取得します。属性マッピング・プロファイルにマッピングが定義されていない場合、属性には空の値が返されます。値式にセッションまたはリクエストのネームスペースにおける変数が含まれている場合も、空の文字列が返されます。属性マッピング・プロファイル内の値式を正しく評価するには、user.attrネームスペースの変数のみ使用できます。

38.7.1.3 SOAPエンドポイントの使用

SPの属性リクエスタ・サービスは、クライアント・リクエスト用のSOAPインタフェースを公開します。SOAPサービスは、SP上の次のURLで使用できます。

http://<SP-managed-server>:<SP-port>/oamfed/ar/soap

38.7.2 属性共有の構成

属性共有プラグインには、オプションの構成パラメータがあります。

表38-11に、属性共有プラグインを示します。

表38-11 属性共有プラグインの構成パラメータ

パラメータ 説明

NameIDValueAttribute

ユーザーの名前IDを取得できるセッション属性の名前。

NameIDFormatAttribute

名前IDフォーマットとして使用する値を含む属性の名前。

AttributeAuthorityAttribute

SPが<AttributeQuery>を送信する先のIdPとして使用する値を含む属性の名前。

RequestedAttributes

このパラメータは、attr1&attr2&attr3=value1など、URL問合せ形式で要求する属性を指定するのに使用できます。この場合、attr1とattr2はフェッチされますが、attr3は値にvalue1が含まれている場合のみレスポンスに含まれます。

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として使用されます。

パラメータについて、およびパラメータが属性共有の処理方法をどのように決定するかについて、以降の項で詳しく説明します。

38.7.2.1 名前ID

これは、SPが属性を要求するユーザーの名前識別子です。

名前IDを決定するには、次の検索が順に実行されます。

属性共有プラグインが次のことを行います。

  1. NameIDValueAttributeが指定されている場合、セッションから指定の属性値を取得し、それを名前IDとして使用します。

  2. NameIDValueAttributeが指定されていない場合、名前IDとしてfed.nameidvalueの値を使用します。

  3. 前述の方法で判断できない場合、属性共有プラグインは、nullまたは空の名前IDでフェデレーション・エンジンを起動し、ユーザーID (KEY_USERNAME_DNセッション属性で指定)がSP属性リクエスタに送信されます。

属性リクエスタ(SP)は次のことを行います。

  1. 名前IDがリクエストに含まれていれば、ユーザーの名前としてこの値を使用します。

  2. 名前IDの指定がなく、ユーザーIDがある場合(認証プラグイン起動時に発生)、defaultattrrequestnameiduserattribute属性の値を取得し(このIdPのSP構成で検出)、これを名前IDとして使用します。

  3. SAML 2.0を使用している場合のみ: 名前IDが決定されていない状態でSSOがシンプル名前IDマッピングで構成されている場合、nameiduserattribute属性を使用します(このIdPのSP構成で検出)。たとえば、この属性値が$user.attr.mailである場合、この属性からユーザーの名前を抽出し、これを名前IDとして使用します。

  4. 名前IDがまだ決定されない場合、エラーがスローされます。

38.7.2.2 名前IDフォーマット

これは、ユーザーの名前IDのフォーマットです。

名前IDフォーマットを決定するには、次の検索が順に実行されます。属性共有プラグインが次のことを行います。

  1. NameIDFormatAttributeパラメータが指定されている場合、指定の属性の値を取得し、それを名前IDフォーマットとして使用します。

    表38-11を参照してください。

  2. fed.nameidformat属性の値を名前IDフォーマットとして使用します。

    表38-12を参照してください。

  3. DefaultNameIDFormatの値を名前IDフォーマットとして使用します。

    表38-11を参照してください。

  4. 名前IDフォーマットがまだ決定されない場合、属性共有プラグインがフェデレーションをnull/空の名前IDフォーマットで起動します。

属性リクエスタ(SP)は次のことを行います。

  1. リクエストで指定されている名前IDフォーマットを使用します。

  2. defaultattrrequestnameidformat属性の値(このIdPのSP構成で検出)を使用します。

  3. SAML 2.0を使用している場合のみ: 名前IDフォーマットがまだ決定されていない場合、defaultauthnrequestnameidformat属性の値(このIdPのSP構成で検出)を使用します。

  4. 名前IDフォーマットがまだ決定されない場合、エラーがスローされます。

38.7.2.3 IdP

これは、属性リクエストが送信されるIdPパートナです。

IdPパートナを決定するには、次の検索が順に実行されます。属性共有プラグインが次のことを行います。

  1. AttributeAuthorityAttributeが指定されている場合、その値を取得し、それをIdP名として使用します。

    表38-11を参照してください。

  2. fed.partner属性の値をIdP名として使用します。

    表38-12を参照してください。

  3. DefaultAttributeAuthorityパラメータの値をIdP名として使用します。

    表38-11を参照してください。

  4. IdPがまだ決定されない場合、属性共有プラグインがフェデレーションをnull/空の名前IDフォーマットで起動します。

属性リクエスタ(SP)は次のことを行います。

  1. 属性共有プラグインに送信されたリクエストに含まれていたIdP名を使用します。

  2. x509を使用している場合のみ: DN-IdPマッピングを検出し、このユーザーDNのIdPを決定します。

  3. defaultattrauthority属性の値(SP構成で検出)を使用します。

  4. defaultssoidp属性の値(SP構成で検出)を使用します。

  5. IdP名がまだ決定されない場合、エラーがスローされます。

38.7.2.4 RequestedAttributes

これらは、属性認証局に対して要求された属性です。

属性を決定するには、次の検索が順に実行されます。属性共有プラグインが次のことを行います。

RequestedAttributesパラメータが定義されている場合、指定の属性を使用します。何も指定されていない場合、属性は送信されません。

表38-11を参照してください。

属性リクエスタ(SP)は次のことを行います。

  1. RequestedAttributesパラメータが定義されている場合、指定の属性を使用します。

    表38-11を参照してください。

  2. 属性をIdPパートナ・プロファイル内のrequest from partner(send-with-sso)属性に追加します。

属性レスポンダ(IdP)は次のことを行います。

  1. SPからの<AttributeQuery>に特定の属性値に対するリクエストが含まれている場合、これらの属性の値を返します。

  2. 属性値が要求されていない場合、SP属性プロファイル構成内のAlways Send (send-with-sso)として指定されている属性を返します。