33.2 OAM認可および保護されているWebアプリケーションに対するフェデレーション属性の使用

この章では、SAML/OpenID SSOメッセージで受信した属性をOracle Access Manager (OAM)認証プロセスで使用する方法、および保護されているWebアプリケーションに渡す方法について説明します。

実行時に、Oracle Identity Federation (OIF)/サービス・プロバイダ(SP)がSAML/OpenID SSOレスポンス・メッセージが正常に処理されると、サーバーで、レスポンスの一部の情報がOAMセッションに属性として保存され、OAM認可ポリシーで次のように使用できるようになります:
  • 承認ルールの条件として
  • 保護されているWebアプリケーションにSAML/OpenID属性を渡すためのレスポンスとして
SAML/OpenID SSOレスポンス情報は、次の識別子で参照される属性としてOAMセッションに保存されます:
  • $session.attr.fed.partnerで参照されるIdPパートナ名。
  • $session.attr.fed.nameidvalueで参照されるSSOレスポンスのNameID値。
  • $session.attr.fed.nameidformatで参照されるSAMLプロトコルのSSOレスポンスのNameID形式。
  • SAMLアサーションの属性文またはOpenID SSOレスポンスに含まれる属性は、$session.attr.fed.attr.ATTR_NAMEを使用して参照され、ATTR_NAMEはローカル・セッション属性名(IdP属性プロファイル・マッピングが適用されている場合)、またはSSOレスポンスの属性名(IdP属性プロファイル・マッピングがこの属性に適用されていない場合)のいずれかになります。

33.2.1 保護リソースへのユーザー・アクセス認証の概要

Oracle Access Management環境は、次のコンポーネントで構成されています:
  • LDAPディレクトリ
  • OAM管理サーバー(OAM管理コンソールを使用)
  • OAMランタイム・サーバー
  • Webアプリケーション
  • HTTPサーバー(OHS、IISなど)上のWebアプリケーションを保護するWebGateエージェント
認証されたユーザーが保護リソースへのアクセスをリクエストすると、WebGateでは、次のタスクが実行されます。コールが解釈され、次のことが確認されます:
  • コールが解釈され、次のことが確認されます:
    • ユーザーが認証されていること
    • ユーザーにリソースへのアクセス権があること(そのリソースの認可ポリシーを評価)
  • データがCookieまたはHTTPヘッダーとしてHTTPリクエストに注入され、HTTPリクエストが保護リソースに転送されます
次に、ユーザーがリソースにアクセスできるかどうかを判断する際に、OAM認可ポリシーで考慮される様々な条件を示します:
  • アイデンティティ: ユーザーが属するユーザーのアイデンティティまたはグループに基づく条件
  • IPアドレス: ユーザーのIPアドレスに基づく条件
  • 一時的: 時間に基づく条件
  • 属性: 属性に基づく条件(LDAP、HTTPリクエストまたはセッション属性)
OAM認可レスポンスでは、次のコンポーネントに基づいて、データがHTTPリクエストに注入され、保護されているWebアプリケーションで使用できるようになります:
  • ユーザーLDAP属性
  • HTTPリクエスト・データ
  • 静的文字列
  • OAMセッション属性

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

33.2.2 フェデレーションSSOの設定の前提条件

フェデレーションSSOを設定するための要件は次のとおりです:
  • サービス・プロバイダとして機能するOIF
  • NameIDがuserIDに設定されているSAMLアサーションを送信するIdP (AcmeIdP)
  • 次の属性を設定します。
    • email (ユーザーの電子メール・アドレス)
    • fname (ユーザーの名)
    • surname (ユーザーの姓)
    • title (ユーザーの最新の役職名)
  • IdP属性プロファイルを使用して、次のマッピングを行うようOIF/SPを構成します:
    • fnameをfirstnameへ
    • surnameをlastnameへ
    • emailはそのまま
次の値を使用して、2人のユーザーを構成します:
  • ユーザー1: Alice
    • userID: alice
    • 電子メール: alice@oracle.com
    • 名: Alice
    • 姓: Appleton
    • 役職: manager
  • ユーザー2: Bob
    • userID: bob
    • 電子メール: bob@oracle.com
    • 名: Bobby
    • 姓: Smith
    • 役職: engineer
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>
OIF/SPが次のルールに従って属性を処理するため、テストSPページには様々な結果が表示されます:
  • emailが変更されていない
  • titleが変更されていない
  • fnameがfirstnameにマップされている
  • surnameがlastnameにマップされている


フェデレーションSSO操作結果

33.2.3 保護されているWebアプリケーションの前提条件

次のコンポーネントが構成されていることを確認します。
  • OHSがインストールされている
  • OHSインスタンスにWebGateエージェントが構成されている
  • WebGateにOAMアプリケーション・ドメインが作成されている(これにより、OHSサーバー上のすべてのリソースが保護されます)
  • 認証ポリシー:
    • 名前: 保護対象リソース・ポリシー
    • 認証スキーム: FederationScheme
  • 認可ポリシー:
    • 名前: 保護対象リソース・ポリシー
    • リソースが認証ポリシーの「保護対象リソース・ポリシー」および認可ポリシーの「保護対象リソース・ポリシー」にリンクされている
OHS上の/cgi-bin/printenvリソースにより、ブラウザから送信されたHTTPリクエストを処理するときに次のデータが出力されます:
  • HTTPヘッダー
  • リクエスト・データ(パス、問合せ文字列)
  • サーバー・データ(IPアドレス、ポート)

OAM/WebGateに保護されずにリソースにアクセスしたブラウザには、次の例のような内容が表示されます(テストでは、Webアプリケーションは、後に示すように保護されます):
保護されているWebアプリケーション

33.2.4 フェデレーション属性を使用した認可ポリシーの作成

次の例では、下に示す制約があるリソースのOAMセッションに格納されているフェデレーション属性を使用して、認可ポリシーを作成する方法を示しています:
  • フェデレーションSSOで認証されたユーザー(リソースはFederationScheme認証ポリシーで保護されています)。
  • IdPからユーザーの役職が渡され、ローカルではtitleと認識されます(IdPからtitle以外の名前で役職が送信される場合は、IdP属性プロファイルを使用してローカルの役職名にマップする必要があります)。
  • 役職がマネージャのユーザーに、リソースへのアクセスを限定する必要があります。

認可ポリシーの作成ステップは、次のとおりです:

  1. OAM管理コンソールに移動します:
    https://oam-admin-host:oam-adminport/oamconsole
  2. 「Access Manager」「アプリケーション・ドメイン」に移動します。
  3. リソースの「アプリケーション・ドメイン」を検索してクリックします。
  4. 「認可ポリシー」をクリックします。
  5. リソースを保護する認可ポリシーを開きます(この例では保護対象リソース・ポリシー)
  6. 「条件」タブをクリックします。
  7. 「追加」をクリックして新しい条件を定義し、次の値を選択します:
    • 名前: TitleCondition
    • タイプ: 属性
  8. 「選択済の追加」をクリックします。

    「条件の追加」ウィンドウ

  9. 新しく作成した条件を選択します。
  10. 「条件詳細」ウィンドウで、「追加」をクリックし、次の値を選択します。
    • ネームスペース: セッション
    • 属性名: その他
    • 入力する属性名: fed.title
    • 演算子: 次と等しい
    • 属性値: マネージャ

    「属性条件の追加」ウィンドウ

  11. 「OK」をクリックします。
  12. 「ルール」タブをクリックします。
  13. 「ルールの許可」の「選択した条件」に存在する場合は、TRUE条件を削除します。
  14. 「ルールの許可」の「選択した条件」に、TitleConditionを追加します。
  15. 「適用」をクリックします。

    認可ポリシーの「ルール」タブ

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

    IdPでaliceとして認証する場合、ブラウザにはフローの最後に次の情報が表示され、リモート・ユーザーのHTTPヘッダーがaliceに設定されているのがわかります(IdPではtitle属性がmanagerに設定されているため、OAMではOAMセッション属性fed.titleがmanagerに設定されているユーザーにのみアクセスが許可されます)。
    aliceに設定されているHTTPのOAMユーザー

    IdPでbobとして認証する場合、ブラウザにはフローの最後に次のエラーが表示されます(IdPではtitle属性がengineerに設定されているため、OAMではOAMセッション属性fed.titleがengineerに設定されているユーザーにのみアクセスが許可されます)。
    OAM操作エラー

33.2.5 フェデレーション属性の注入

次の例は、下に示す制約がある保護されているWebのSSOレスポンスから収集されたSAML/OpenID属性を、HTTPヘッダーとして注入する方法を示しています:
  • フェデレーションSSOで認証されたユーザー(リソースはFederationScheme認証ポリシーで保護されています)。
  • IdPからユーザーの役職が渡され、ローカルではtitleと認識されます(IdPからtitle以外の名前で役職が送信される場合は、IdP属性プロファイルを使用してローカルの役職名にマップする必要があります)。
  • OAM/WebGateが、次のものをインジェクトするように構成されている:
    • 電子メール・アドレスはemailaddressとして
    • 名はfirstnameとして
    • 姓はlastnameとして
  • 構成は、認可ポリシー定義で認可レスポンス・オブジェクトを使用して行います。

フェデレーション属性をインジェクトするステップは、次のとおりです:

  1. OAM管理コンソールに移動します:
    http(s)://oam-admin-host:oam-adminport/oamconsole
  2. 「Access Manager」「アプリケーション・ドメイン」に移動します。
  3. リソースの「アプリケーション・ドメイン」を検索してクリックします。
  4. リソースを保護する認可ポリシーを開きます(この例では保護対象リソース・ポリシー)
  5. 「レスポンス」タブをクリックします。
  6. 「追加」をクリックして、電子メール・アドレスのエントリを作成します:
    • タイプ: ヘッダー
    • 名前: emailaddress
    • 値: $session.attr.fed.attr.email
  7. 「追加」をクリックして、レスポンスを追加します。

    「レスポンスの追加」ウィンドウ

  8. 「追加」をクリックして、名のエントリを作成します:
    • タイプ: ヘッダー
    • 名前: firstname
    • 値: $session.attr.fed.attr.Lrstname
  9. 「追加」をクリックします。
  10. 「追加」をクリックして、姓のエントリを作成します:
    • タイプ: ヘッダー
    • 名前: lastname
    • 値: $session.attr.fed.attr.lastname
  11. 「追加」をクリックします。
  12. 「適用」をクリックして値を保存します。

    「認可ポリシー」の「レスポンス」タブ

    テストするには、新しいブラウザを開き、保護リソースにアクセスします。認証が行われるIdPにリダイレクトされます。

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


    HTTPヘッダー・ページ