Fed Attributesの使用: OAM認可およびHTTPヘッダー

この記事では、SAML/OpenID SSOメッセージで受信した属性をOAM認可ポリシーで使用する方法と、それらを保護されたWebアプリケーションにどのように提供できるかについて説明します。

実行時に、OAM/SPがSAML/OpenID SSOレスポンス・メッセージを正常に処理すると、サーバーは、OAM認可ポリシーで使用できる属性として、レスポンスの情報の一部をOAMセッションに保存します。

SAML/OpenID SSOレスポンス情報は、次の識別子によって参照される属性としてOAMセッションに保存されます。

概要

一般的なOAM環境は、次のもので構成されます。

認証されたユーザーが保護されたリソースへのアクセスをリクエストした場合:

ユーザーがリソースにアクセスできるかどうかを評価するために使用されるOAM認可ポリシーは、様々な条件に基づきます。

管理者は、フェデレーション属性を評価する属性条件を使用して、認可ルールのSAML/OpenID SSOメッセージで受信したフェデレーション・データを使用できます。

保護されたWebアプリケーションで使用できるようにするためにHTTPリクエストにデータを注入するために使用されるOAM認可レスポンスは、次のものに基づきます。

OAM認可ポリシーと同様に、管理者はフェデレーション・エントリ($session.attr.fed.partner$session.attr.fed.attr.ATTR_NAME...)を参照するOAMセッション属性を使用して、フェデレーション・データをHTTPリクエストに注入できます。

フェデレーションSSO設定

以前に構成したのと同じSAML 2.0フェデレーション設定を使用します。ここでは:

次の2人のユーザーが使用されます。

Alice:

Bob:

IdPによって返されたアサーションを含むXML SAMLレスポンスは、次のとおりです。

<samlp:Response ..>
    <saml:Issuer ...>http://acme.com
/idp</saml:Issuer>
    <samlp:Status>
        <samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion ...>
        <saml:Issuer ...>http://acme.com /idp</saml:Issuer>
        <dsig:Signature ...>
        ...
        </dsig:Signature>
        <saml:Subject>
            <saml:NameID ...>alice</saml:NameID>
            ...
        </saml:Subject>         <saml:Conditions ...>
         ...
        </saml:Conditions>         <saml:AuthnStatement ...>
        ...
        </saml:AuthnStatement>
        <saml:AttributeStatement ...>
            <saml:Attribute Name="email" ...>
                <saml:AttributeValue
...>alice@oracle.com</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="title" ...>
                <saml:AttributeValue
...>manager</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="surname" ...>
                <saml:AttributeValue
...>Appleton</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="fname" ...>
                <saml:AttributeValue
...>Alice</saml:AttributeValue>
            </saml:Attribute>
        </saml:AttributeStatement>
    </saml:Assertion>
</samlp:Response>

OAM/SPでは次のルールに従って属性が処理されるため、「SPのテスト」ページには様々な結果が表示されます。

図Test_Federation_SSO.jpgの説明

保護されたWebアプリケーション

この例では、次のコンポーネントを使用します。

OAM/WebGateで保護されていないリソースにアクセスするブラウザの例では、次の表示になります(テストでは、Webアプリケーションは前述のように保護されます)。

図Protected_web_Application.jpgの説明

認可条件

次の例は、次の制約があるリソースのOAMセッションに格納されているフェデレーション属性を使用して認可ポリシーを構築する方法を示しています。

このような認可ポリシーを作成するには、次のステップを実行します。

  1. OAM管理コンソールに移動します: http(s)://OAM-admin-host:OAM-adminport/oamconsole

  2. 「アクセス・マネージャ」「アプリケーション・ドメイン」にナビゲートします

  3. 「リソースのアプリケーション・ドメイン」を検索してクリックします

  4. 「認可ポリシー」をクリックします

  5. リソースを保護する認可ポリシーを開きます(この例では保護リソース・ポリシー)。

  6. 「条件」タブをクリックします

  7. 「追加」をクリックして新規条件を定義します:

    1. 名前: TitleCondition

    2. タイプ: Attribute

  8. 「選択項目の追加」をクリックします

  9. 図Add_Condition.jpgの説明

  10. 新規に作成された条件を選択します

  11. 「条件詳細」ウィンドウで、「追加」をクリックします。

    • ネームスペース: Session

    • 属性名: Other

    • 属性名を入力します: fed.title

    • 演算子: Equals

    • 属性値: manager

  12. 「OK」をクリックします

  13. 図Add_Attr_Condition.jpgの説明

  14. 「ルール」タブをクリックします。

  15. 「ルールを許可」の「選択した条件」にある場合は、TRUE条件を削除します。

  16. TitleCondition「ルール許可」、選択した条件に追加します

  17. 「適用」をクリックします

図Authorization_Policy.jpgの説明

テストするには、新しいブラウザで保護されたリソースにアクセスします。IdPにリダイレクトされます。

aliceを使用してIdPで認証する場合、ブラウザでは現在終了時に次のものが表示され、aliceに設定されたリモート・ユーザーHTTPヘッダーが表示されます(IdPではtitle属性がmanagerに設定されており、OAMではOAMセッション属性fed.titleがmanagerに設定されているユーザーのみにアクセスできます)。

図Document_root.jpgの説明

bobを使用してIdPで認証する場合、ブラウザでは現在終了時に次の内容が表示され、エラーが表示されます(IdPではtitle属性がエンジニアに設定されていて、OAMではOAMセッション属性fed.titleがmanagerに設定されているユーザーのみにアクセスできます)。

図OAM_Operation_error.jpgの説明

Fed属性の注入

次の例は、SSOレスポンスから収集されたSAML/OpenID属性を、保護されたWebのHTTPヘッダーとして、次の制約を使用してインジェクトする方法を示しています。

構成は、認可ポリシー定義で認可レスポンス・オブジェクトを使用して行われます

このような認可ポリシーを構成するには、次のステップを実行します。

  1. OAM管理コンソールに移動します: http(s)://OAM-admin-host:OAM-adminport/oamconsole

  2. 「アクセス・マネージャ」「アプリケーション・ドメイン」にナビゲートします

  3. リソースのアプリケーション・ドメインを検索してクリックします

  4. 「認可ポリシー」をクリックします

  5. リソースを保護する認可ポリシーを開きます(この例では保護リソース・ポリシー)。

  6. 「レスポンス」タブをクリックします

  7. 「追加」をクリックして、電子メール・アドレスのエントリを作成します。

    • タイプ: Header

    • 名前: emailaddress

    • : $session.attr.fed.attr.email

  8. 「追加」をクリックします

    図Add_Response.jpgの説明

  9. 「追加」をクリックして、名のエントリを作成します。

    • タイプ: Header

    • 名前: firstname

    • : $session.attr.fed.attr.firstname

  10. 「追加」をクリックします

  11. 「追加」をクリックして、姓のエントリを作成します。

    • タイプ: Header

    • 名前: lastname

    • : $session.attr.fed.attr.lastname

  12. 「追加」をクリックします

  13. 「適用」をクリックします

図ACS_Authorization_Policy.jpgの説明

テストするには、新しいブラウザで保護されたリソースにアクセスします。認証が発生したIdPにリダイレクトされます。

OAM/WebGateは、OAMセッション属性(IdPから受信)に基づいて認可レスポンス・アイテムを注入し、保護されたWebアプリケーションでそれらを表示します(テスト・ページにはHTTPヘッダーがHTTP_NAMEとして表示され、NAMEがHTTPヘッダーの名前です)。

図Authorization_Response.jpgの説明

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。