この章では、Oracle Identity Federationサーバーの構成と管理に関するその他のトピックについて説明します。内容は次のとおりです。
使用中のバックエンドとフローが初期化される場所に応じて、フェデレーテッド・シングル・サインオン(SSO)処理の実行にはいくつかの方法があります。表6-1に、可能な組合せを示します。
表6-1 フェデレーテッド・シングル・サインオンの組合せ
| 組合せ | フロー |
|---|---|
|
Oracle Single Sign-On |
ユーザーが |
|
Oracle Access Manager |
ユーザーがWebGateによって保護されたリソースにアクセスすると、シングル・サインオンがトリガーされ、Oracle Identity FederationはSPとして動作します。 |
|
SPが開始するシングル・サインオン |
ユーザーが直接Oracle Identity Federation URLにアクセスすることでシングル・サインオンを開始し、Oracle Identity FederationはSPとして動作します。 |
|
IdPが開始するシングル・サインオン |
ユーザーが直接Oracle Identity Federation URLにアクセスすることでシングル・サインオンを開始し、Oracle Identity FederationはIdPとして動作します。 |
この項では、様々な組合せの構成方法を説明します。
Oracle Single Sign-Onは、mod_ossoによって保護されたリソースをリクエストする場合に、SSO処理をトリガーするように構成できます。
そうするには、Oracle Single Sign-Onパートナ・アプリケーションが定義され、mod_ossoによって保護される必要があります。また、パートナ・アプリケーションがSASSO認証プラグインに関連付けられたSSOセキュリティ・レベルを使用するように構成される必要があります。それには、Oracle Single Sign-OnデプロイメントのORACLE_HOME/sso/conf/policy.propertiesファイルを編集し、パートナ・アプリケーション(ホスト名とポートで定義)を、SASSOAuthLevelと同一のセキュリティ・レベルに設定します。
次に例を示します。
MediumHighSecurity_AuthPlugin = oracle.security.sso.server.auth.SASSOAuth MediumSecurity_AuthPlugin = oracle.security.sso.server.auth.SSOServerAuth ... www.app.com\:7890 = MediumHighSecurity ... SASSOAuthnUrl= http\://oif-hostname\:oif-port/fed/user/sposso SASSOLogoutUrl = http\://oif-hostname\:oif-port/fed/user/spsloosso SASSOAuthLevel = MediumHighSecurity
ファイルを保存し、Oracle Single Sign-Onサーバーを再起動して変更を適用します。
次にユーザーが保護されたリソースへの未認証アクセスを試みると、そのユーザーはOracle Identity Federationにリダイレクトされ、そこでSSO処理が行われます。
URL問合せパラメータ
保護されたリソースをリクエストする場合、Oracle Identity FederationがSSO処理を実行するために使用するURL問合せパラメータを指定できます。パラメータは次のとおりです。
providerid - SSO処理を実行するために使用するアイデンティティ・プロバイダの識別子です(オプション)。指定されていない場合、Fusion Middleware Controlの「サービス・プロバイダ」→「共通」→「デフォルトSSOアイデンティティ・プロバイダ」で構成されたデフォルトのSSOプロバイダが使用されます。
federationid - SSOで使用するアフィリエーションの識別子です(オプション)。
そうしたURLの例を次に示します。
http://protected_app:port/path?providerid=http%3A%2F%2Fidp.com
URL問合せパラメータ値が正しくURLエンコードされていることを確認します。
SSO構成の詳細は、Oracle Single Sign-Onのドキュメントを参照してください。
Oracle Access Manager WebGateエージェントによって保護されているリソースをユーザーがリクエストした場合にSSO処理が開始されるようにOracle Accessポリシーを構成できます。
それには、Oracle Access Policy Managerを使用して、ポリシー・ドメイン、またはリソースを保護するポリシーを構成します。ポリシー・ドメインまたはポリシー用に認証ルールを作成する場合は、Fed SSO認証スキームを選択します。Oracle Accessを使用するように構成する場合、Oracle Identity Federationは自動的にこの認証スキームを作成します。リソースがアクセスされるとスキームによりシングル・サインオン処理が開始され、結果としてフェデレーテッド・ユーザーに関連付けられたローカル・ユーザーのためのセッションが作成されます。ポリシー・ドメインまたはポリシーのための認可ルールと式を設定して、結果的に作成されたローカル・ユーザーにアクセスを割り当てます。
URL問合せパラメータ
保護されたリソースをリクエストする場合、Oracle Identity FederationがSSO処理を実行するために使用するURL問合せパラメータを指定できます。パラメータは次のとおりです。
providerid - SSO処理を実行するために使用するアイデンティティ・プロバイダの識別子です(オプション)。指定されていない場合、Fusion Middleware Controlの「サービス・プロバイダ」→「共通」→「デフォルトSSOアイデンティティ・プロバイダ」で構成されたデフォルトのSSOプロバイダが使用されます。
federationid - SSOで使用するアフィリエーションの識別子です(オプション)。
そうしたURLの例を次に示します。
http://protected_app:port/path?providerid=http%3A%2F%2Fidp.com
URL問合せパラメータ値が正しくURLエンコードされていることを確認します。
SSO構成の詳細は、『Oracle Access Manager IDおよび共通管理ガイド』を参照してください。
Oracle Identity Federationサーバーがサービス・プロバイダとして動作する場合、ユーザーは、Oracle Identity Federation /SPインスタンスで直接サービスをリクエストすることによって、SSO処理を開始することができます。
Oracle Identity FederationでリクエストされるURLは次のとおりです。
http(s)://OIF_host:OIF_port/fed/sp/initiatesso
URL問合せパラメータ
そのURLをリクエストする場合、URL問合せパラメータを指定できます。
providerid - SSO処理を実行するために使用するアイデンティティ・プロバイダの識別子です(オプション)。指定されていない場合、Fusion Middleware Controlの「サービス・プロバイダ」→「共通」→「デフォルトSSOアイデンティティ・プロバイダ」で構成されたデフォルトのSSOプロバイダが使用されます。
federationid - SSOで使用するアフィリエーションの識別子です(オプション)。
returnurl - SSO処理が成功した場合にユーザーが送られるURLです。Fusion Middleware Controlの「フェデレーション」→「サービス・プロバイダ」(共通)で設定された「非送信請求SSOリレー状態」プロパティが空の場合は必須です。
そうしたURLの例を次に示します。
http://oif_host:oif_port/fed/sp/initiatesso?providerid=http%3A%2F%2Fidp.com&returnurl=http%3A%2F%FProtectedAppHost%2FProtectedAppPath
問合せパラメータ値が正しくURLエンコードされていることを確認します。
Oracle Identity Federationには、IdPとして動作するOracle Identity FederationインスタンスでURLを直接リクエストすることによってSSO処理を開始する機能が用意されています。
URLフォーマット
Oracle Identity FederationでリクエストされるURLは次のような形式になります。
http(s)://oif_host:oif_port/fed/idp/initiatesso
URL問合せパラメータ
そのURLをリクエストする場合、URL問合せパラメータを指定できます。
providerid - SSO処理を実行するために使用するサービス・プロバイダの識別子です(オプション)。
federationid - SSOで使用するアフィリエーションの識別子です(オプション)。
returnurl - SSO処理が成功した場合にユーザーが送られるURLです(オプション)。
acsurl - アサーション・コンシューマ・サービスURLです。この値にはAssertion Consumer Service URLの値でエンコードされたURLを含める必要があります。
OIF/IdPは、指定されたURLをSPメタデータにリストされているAssertion Consumer Service URLと比較します。メタデータ内のACS URLのいずれかと一致する必要があります。
問合せパラメータ値が正しくURLエンコードされていることを確認します。
そうしたURLの例を次に示します。
http://oif_host:oif_port/fed/idp/initiatesso?providerid=http%3A%2F%2Fsp.com&returnurl=http%3A%2F%FProtectedAppHost%2FProtectedAppPath
アフィリエーションの実行時動作は、Oracle Identity FederationサーバーがIdPとSPのいずれとして動作しているかにより異なります。
Oracle Identity FederationがIdPとして動作している場合
Oracle Identity FederationがIdPの場合、アフィリエーション/SPがトラスト・サークルに存在し、有効であれば、Oracle Identity Federationサーバーは、アフィリエーションを使用するサービス・プロバイダが送信するあらゆるリクエストを処理する準備ができています。
Oracle Identity FederationがSPとして動作している場合
SPとして、SPが所属するアフィリエーションを使用して、IdPへのシングル・サインオン処理をトリガーできます。そのための手順は、IdMバックエンドが保護しているURLにfederationid問合せパラメータを含め、そのアフィリエーションIDにパラメータ値を設定します。
Oracle Single Sign-Onバックエンドを例にとって、リソースがmod_ossoによって保護され、Oracle Identity Federation認証用として構成されていると仮定します。このとき、federationid問合せパラメータを使用してこのリソースのURLをリクエストすると、Oracle Identity Federationは、ピアIdPに対してシングル・サインオンを実行する際にアフィリエーションを使用します。そのようなURLの例を次に示します。
http://protected_res_host:protected_res_port/path?federationid=http%3A%2F%Faffiliationid
同一のfederationid問合せパラメータを使用して、直接http://oif_host:oif_port/fed/sp/initiatesso URLにアクセスすることも可能です。この場合、Oracle Identity Federationはシングル・サインオン処理をトリガーし、ピアIdPの「非送信請求SSOリレー状態」を、ユーザーが認証成功後にリダイレクトされるURLとして使用します。
|
注意: 「非送信請求SSOリレー状態」は、Fusion Middleware Controlの「フェデレーション」→「信頼できるプロバイダの編集」で設定します。 |
この項では、LDAPの構成およびメンテナンスについて説明します。内容は次のとおりです。
Oracle Identity Federationがユーザー・データ・ストア、フェデレーション・データ・ストアまたは認証エンジンとして動作するように高可用性LDAPサーバーと統合されている場合、サーバーは後続のリクエストで再利用可能なLDAP接続のプールを保持します。
長期的には、非アクティブの状態が長く続いたためにLDAPサーバーが接続をクローズすることがあります。チェックしないままだと、これがエラーの原因となり、Oracle Identity Federationのパフォーマンスが低下する可能性があります。
非アクティブ属性を設定することにより、LDAP接続がアクティブでないために削除されるまでプールに保持しておく期間をOracle Identity Federationに指示できます。デフォルトでは、非アクティブ・タイムアウトは300秒に設定されています。
Oracle Identity Federationの非アクティブ設定を設定するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
次の例に示すように、authnenginesグループのldapconnectioninactivitytimeout longプロパティに非アクティブ・タイムアウトを秒単位で設定し、LDAP認証エンジンの非アクティブ・タイムアウトを構成します。
setConfigProperty('authnengines', 'ldapconnectioninactivitytimeout', '300', 'long')
次の例に示すように、datastoreグループのuserldapconnectioninactivitytimeout longプロパティに非アクティブ・タイムアウトを秒単位で設定し、LDAPユーザー・データ・ストアの非アクティブ・タイムアウトを構成します。
setConfigProperty('datastore',
'userldapconnectioninactivitytimeout', '300', 'long')
次の例に示すように、datastoreグループのfedldapconnectioninactivitytimeout longプロパティに非アクティブ・タイムアウトを秒単位で設定し、LDAPフェデレーション・データ・ストアの非アクティブ・タイムアウトを構成します。
setConfigProperty('datastore','fedldapconnectioninactivitytimeout', '300', 'long')
Oracle Identity Federationがユーザー・データ・ストア、フェデレーション・データ・ストアまたは認証エンジンとしてLDAPサーバーと統合されている場合、サーバーはユーザー属性の取得、ユーザーの認証、ユーザーの検索および関連処理の実行のためにLDAPディレクトリと通信します。
LDAPサーバーは応答しなくなることがありますが、その場合、スレッド/ユーザーはレスポンスまたはエラーを待つことになります。サーバーが応答していないときにエラーを長時間待つことがないよう、Oracle Identity FederationでLDAP接続に対する読取りタイムアウト・プロパティを設定します。読取りタイムアウトの時間内にLDAPサーバーが応答しない場合はエラーが生成され、Oracle Identity Federationは接続をクローズし、新しい接続をオープンして、LDAPコマンドを再発行します。
読取りタイムアウト設定を設定することにより、LDAPサーバーからのデータの待機時間をOracle Identity Federationサーバーに指示できます。デフォルトでは、読取りタイムアウトは10秒に設定されています。
Oracle Identity Federationの読取りタイムアウト設定を設定するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、必要に応じて次のプロパティを例に示すように設定します。
authnenginesグループのldapconnectionreadtimeout longプロパティに読取りタイムアウトを秒単位で設定して、LDAP認証エンジンの読取りタイムアウトを構成します。
setConfigProperty('authnengines', 'ldapconnectionreadtimeout', 'long','10')
datastoreグループのuserldapconnectionreadtimeout longプロパティに読取りタイムアウトを秒単位で設定して、LDAPユーザー・データ・ストアの読取りタイムアウトを構成します。
setConfigProperty('datastore',
'userldapconnectionreadtimeout', 'long', '10')
datastoreグループのfedldapconnectionreadtimeout longプロパティに読取りタイムアウトを秒単位で設定して、LDAPフェデレーション・データ・ストアの読取りタイムアウトを構成します。
setConfigProperty('datastore', 'fedldapconnectionreadtimeout', 'long', '10')
Oracle Identity Federation 11gは、DMSおよび監査プロセスに対する実行コンテキストID(ECID)をサポートしています。
Oracle Identity Federationでは、Oracle Internet DirectoryとのLDAP接続を作成する場合に、OID LDAP接続に対してECIDコンテキストを渡すことができます。
この機能は、デフォルトで無効になっています。この機能を有効(無効)にするには、次のプロパティをtrue(false)に設定します。
LDAP認証エンジンのconfigにあるauthnenginesグループのldapuseecidブール型プロパティを設定します。
LDAPユーザー・ストアのconfigにあるauthnenginesグループのuserldapuseecidブール型プロパティを設定します。
LDAPフェデレーション・データ・ストアのconfigにあるauthnenginesグループのfedldapuseecidbooleanプロパティを設定します。
|
注意: LDAPサーバー(ECIDサポートが有効になっている)は、Oracle Internet Directory 11gリリース1(11.1.1)以降にする必要があります。 |
この項では、高可用構成に関するその他のトピックについて説明します。内容は次のとおりです。
デフォルトでは、Oracle Identity Federationは、高可用性LDAPサーバーと統合されるようには構成されていません。Oracle Identity FederationをHA LDAPサーバーと統合して、ユーザー・データ・ストア、フェデレーション・データ・ストア、または認証エンジンとして動作させるには、LDAPサーバーの機能に基づいてOracle Identity Federationを構成する必要があります。
Oracle Identity FederationのWLSTスクリプト環境を入力してから、必要に応じて次のプロパティを設定します。
ユーザー・データ・ストアをHA LDAPサーバーと統合するには、datastoreグループのuserldaphaenabledブール型プロパティをtrueに設定します。統合しない場合はfalseに設定します。
setConfigProperty('datastore','userldaphaenabled', 'true', 'boolean')
フェデレーション・データ・ストアをHA LDAPサーバーと統合するには、datastoreグループのfedldaphaenabledブール型プロパティをtrueに設定します。統合しない場合はfalseに設定します。
setConfigProperty('datastore', 'fedldaphaenabled',
'true', 'boolean')
LDAP認証エンジンをHA LDAPサーバーと統合するには、authnenginesグループのldaphaenabledブール型プロパティをtrueに設定します。統合しない場合はfalseに設定します。
setConfigProperty('authnengines','ldaphaenabled', 'true', 'boolean')
Oracle Identity FederationをHAモードでクラスタにデプロイする場合、Oracle Identity Federationが実行されているOracle WebLogicサーバー全体にユーザーHTTPセッション状態がレプリケートされるよう構成できます。
デフォルトでは、Oracle Identity FederationのHTTPセッション状態レプリケーションは無効になっています。これを有効にするには、『Oracle Fusion Middleware高可用性ガイド』のクラスタ全体の構成の変更に関する項を参照してください。
この項の以降では、HTTPセッション状態レプリケーションを有効にした場合のOracle Identity Federationのその他の構成について説明します。
|
注意: パフォーマンス上の理由により、HTTPセッション状態レプリケーションは無効にすることをお薦めします。 |
この追加構成を行うことにより、フェデレーション・リクエストの処理時に、エラーが生じることなく、個々のOracle Identity Federationサーバーにユーザーがアクセスできるようになります。
サーバー・インスタンス間でのHTTPセッション状態のレプリケート速度が不十分な場合など、状態がまだコピーされていないOracle Identity Federationインスタンスのサービスにユーザーがアクセスすると、エラーが発生することがあります。
この問題を回避するには、次の2つのオプションのいずれかを選択します。
ロード・バランサでスティッキー・セッションを有効にし、特定のユーザーがHTTPリクエストを送信する際には必ず同じOracle WebLogic Server管理対象サーバーにアクセスするよう強制します。
または
Oracle Identity Federationの追加の構成プロパティを設定して、HTTPセッション状態のレプリケートがまだ完了していないことをサーバーが検出した場合に、情報がコピーされるまでそのサーバーが待機するようにします。この機能を有効にして、待機時間を構成します。
|
注意: パフォーマンス上の理由により、スティッキー・セッションは無効にすることをお薦めします。 |
Oracle Identity FederationのユーザーHTTPセッション状態レプリケーションの設定を有効にして待機時間を設定するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
Oracle Identity Federationがセッション状態のレプリケートを待機するよう構成するには、serverconfigグループのsessionreplicationenabledブール型プロパティをtrueに設定します。待機しない場合は、falseに設定します。
setConfigProperty('serverconfig','sessionreplicationenabled', 'true', 'boolean')
serverconfigグループのsessionreplicationtimeout longプロパティに待機時間をミリ秒単位で設定します。次に例を示します。
setConfigProperty('serverconfig', 'sessionreplicationtimeout', '2000', 'long')
この項では、Oracle Identity FederationのRDBMS構成に関するその他のトピックについて説明します。内容は次のとおりです。
Oracle Identity FederationでRDBMSを使用してユーザー・セッション・オブジェクトを格納する場合、サーバーはキャッシュ・メカニズムを使用して、実行時のパフォーマンスを向上させます。つまり、サーバーは最近使用されたセッション・オブジェクトへの参照をメモリー内に保持し、データベースへの読取りアクセスを回避します。
|
注意: ユーザーのセッションはSSO処理の実行時に何度もアクセスされるため、これは重要な機能です。 |
キャッシュ内のセッション・エントリの最大数、およびキャッシュ内のセッションがクリアされるまでの最大時間を構成できます。デフォルトでは、Oracle Identity Federationサーバーにキャッシュされるセッション・エントリの最大数は25,000、最大時間は300秒です。
最適なタイムアウトを設定することは、特にクラスタ・モードで次のように設定されている場合は、別のOracle Identity Federationサーバーによってセッションが破棄される可能性があるため重要です。
スティッキー・セッションを使用せずにロード・バランサを使用している
SOAPログアウトが有効になっている
Oracle Identity Federationの最大エントリ数とタイムアウトを設定するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次の例に示すプロパティを設定します。
datastoreグループのtransientrdbmssessioncachesize longプロパティに最大エントリ数を設定します。
setConfigProperty('datastore', 'transientrdbmssessioncachesize', '25000', 'long')
datastoreグループのtransientrdbmssessioncachetimeout longプロパティにキャッシュ・タイムアウトを秒単位で設定します。
setConfigProperty('datastore', 'transientrdbmssessioncachetimeout', '300', 'long')
RDBMSに格納されるデータの量を減らすために、Oracle Identity Federationはデータを圧縮してからデータベースに格納する機能を備えています。
Oracle Identity FederationとRDBMSを統合し、ユーザー・セッション・データやメッセージ・データを格納する場合、どの時点でデータ圧縮を行うか決めることは重要事項になります。
圧縮可能なデータには次の3種類があります。
|
注意: Liberty 1.xのサポートは非推奨です。 |
SSOアーティファクト・プロファイルのAuthnRequest: Oracle Identity FederationがLiberty 1.xプロトコルのIdPとして動作する場合、サーバーは、アーティファクト・プロファイルが使用されたときに、AuthnRequestメッセージをRDBMSに格納します。Liberty 1.xを使用しない場合、このデータは圧縮しないでください。デフォルトでは、圧縮は無効です。
SSOアーティファクト・プロファイルのアサーション・レスポンス: Oracle Identity FederationがSSOプロトコルのIdPとして動作する場合、サーバーは、アーティファクト・プロファイルが使用されたときに、アサーションを含むレスポンス・メッセージをRDBMSに格納します。アサーションに属性が含まれている場合は、これを有効にする必要があります。デフォルトでは、圧縮は有効です。
ユーザー・セッション・データ: Oracle Identity Federationは、実行時にユーザー関連のセッション・データを格納します。(カスタム認証エンジンで設定されているか、Oracle Identity FederationがSPである場合に属性アサーション・ストレージが有効になっていたために)複数の属性がユーザー・セッションに格納される場合、圧縮を使用する必要があります。デフォルトでは、圧縮は無効です。
データを圧縮するようOracle Identity Federationを構成するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
SSOアーティファクト・プロファイルのAuthnRequestを圧縮する必要がある場合は、datastoreのtransientartifactrequestcompressionブール型プロパティをtrueに設定します。圧縮する必要がない場合は、falseに設定します。
setConfigProperty('datastore','transientartifactrequestcompression', 'true', 'boolean')
SSOアーティファクト・プロファイルのアサーション・レスポンスを圧縮する場合は、datastoreのtransientartifactresponsecompressionブール型プロパティをtrueに設定します。圧縮しない場合は、falseに設定します。
setConfigProperty('datastore', 'transientartifactresponsecompression', 'true', 'boolean')
ユーザー・セッション・データを圧縮する場合は、datastoreのtransientcompressionブール型プロパティをtrueに設定します。圧縮しない場合は、falseに設定します。
setConfigProperty('datastore', 'transientcompression', 'true', 'boolean')
|
注意: Liberty 1.xのサポートは非推奨です。 |
この項では、セッション・リポジトリのメンテナンスに関連するトピックについて説明します。
Oracle Identity Federationサーバーは、現在の認証ユーザーのセッション情報を格納するセッション・ストアとして機能します。Oracle Identity Federationがアイデンティティ・プロバイダ(IdP)として動作する場合、このセッション・リポジトリに、SSOアサーションに移入するための属性を格納できます。
ユーザー・セッションに格納されている属性は、次の2つの方法でストアに追加できます。
カスタム認証エンジンで、ユーザー・セッションに保存される属性のリストを設定します。
サービス・プロバイダ(SP)として動作するOracle Identity Federationによって、着信アサーションの処理時に行います。Oracle Identity Federationでは、アサーションに含まれる属性およびユーザー・セッションの名前IDとプロバイダIDを保存できます。
デフォルトでは、パフォーマンス上の理由により、Oracle Identity FederationがSPとして動作する場合、ユーザー・セッションのアサーション情報の格納は無効になっています。
アサーション情報を格納するようOracle Identity Federationサーバーを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
アサーションに含まれる属性および名前IDとプロバイダIDをユーザー・セッションに格納する場合は、spglobalグループのsessionstoreassertionattrsブール型プロパティをtrueに設定します。
setConfigProperty('spglobal',
'sessionstoreassertionattrs', 'true', 'boolean')
それ以外の場合はfalseに設定します。
setConfigProperty('spglobal','sessionstoreassertionattrs', 'false', 'boolean')
この項では、Oracle Identity FederationのHTTP構成に関するその他のトピックについて説明します。内容は次のとおりです。
RFC2965に対する非標準拡張では、HttpOnlyフラグを指定することにより、set-cookieヘッダーがさらに拡張されます。このフラグを設定した場合、クライアント(ブラウザ)では、スクリプト環境で使用可能なCookieコンテンツが生成されません。たとえば、Java Scriptのdocument.cookieメソッドはCookieコンテンツを返しません。これにより、クロスサイト・スクリプティングなどの攻撃から大幅に保護されます。
デフォルトでは、Oracle Identity FederationではHttpOnlyフラグは設定されていません。
Oracle Identity Federationサーバーは、ユーザーのブラウザに次のものを設定する際に、HttpOnlyフラグを設定するよう構成できます。
Oracle Identity Federationがユーザー・セッションの参照に使用するCookie
Oracle Access ManagerのCookie
HttpOnlyヘッダーを設定するようOracle Identity Federationを構成するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
Oracle Identity FederationのCookieをブラウザに送信する際にHttpOnlyフラグを設定する場合は、serverconfigグループのcookiehttponlyenabledブール型プロパティをtrueに設定します。フラグを設定しない場合は、falseに設定します。
setConfigProperty('serverconfig',
'cookiehttponlyenabled', 'true', 'boolean')
Oracle Access ManagerのCookieをブラウザに送信する際にHttpOnlyフラグを設定する場合は、spenginesグループのoamcookiehttponlyenabledブール型プロパティをtrueに設定します。フラグを設定しない場合は、falseに設定します。
setConfigProperty('spengines',
'oamcookiehttponlyenabled', 'true', 'boolean')
SAML/WS-Fedの仕様は、POSTプロファイルを定義しています。このプロファイルは、SAML/WS-FederationサーバーがHTMLフォームを使用してユーザーのブラウザをリモートのSAML/WS-Fed実装にリダイレクトする場合に使用します。
通常、このようなサーバーは、ブラウザに対して次のものを含むFORMが記述されたHTMLページを送信します。
リモート・サーバーを参照するアクションURL
SAML/WS-Fedメッセージを含む非表示フィールドや属性
このプロファイルを使用する場合、Oracle Identity Federationサーバーは、アクションURL、リモート・サーバーを参照するプロバイダID、およびリモート・サーバーに送信する非表示フィールドのリストを作成します。このデータは、postprofile.jspページ($ORACLE_IDM_HOME/fed/install/oif.earファイルのweb.warに含まれる)に渡され、この情報を使用して、ブラウザに表示されるHTMLページが作成されます。
このページを次のようにカスタマイズできます。
ブラウザに表示される内容の変更
リモート・サーバーに送信するフィールドの追加
|
注意: リモートのSAML/WS-Federationサーバーが仕様に準拠していない場合、これらのフィールドを処理できない可能性があります。 |
特定のデプロイメント要求に沿うようにファイルを変更するには、POSTプロファイルに影響しないよう注意してください。たとえばこれは、アクションURLや非表示フィールドなど、Oracle Identity Federationサーバーによって設定される必須パラメータ/フィールドを削除した場合などに発生する可能性があります。ファイルを変更するには、oif.earおよびweb.warを解凍して変更を行い、web.warおよびEARファイルを再パッケージ化します。
Oracle Identity Federationは、SAML/WS-Fed/Libertyプロトコルを実装しています。これらのプロトコルは、ブラウザなどのHTTPクライアントにシングル・サインオン(SSO)機能を提供します。Oracle Identity Federationサーバーがブラウザに対してHTTPリダイレクト・コマンドを発行する場合、実行時にSSO処理で実行されるプロトコルやプロファイルに、HTTPリダイレクトを含めることができます。
|
注意: Liberty 1.xのサポートは非推奨です。 |
デフォルトでは、Oracle Identity Federationは、リダイレクトの発行時に302 HTTPステータス・コードを使用します。クライアントがHTTP 1.1をサポートする場合、リダイレクトを発行する際に、かわりに303 HTTPステータス・コードを使用するようOracle Identity Federationサーバーを構成できます。
303 HTTPステータス・コードを使用するよう(可能な場合)Oracle Identity Federationを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
Oracle Identity Federationサーバーで303 HTTPステータス・コードを使用する場合(可能な場合)は、serverconfigグループのredirectuse302ブール型プロパティをfalseに設定します。
setConfigProperty('serverconfig',
'redirectuse302', 'false', 'boolean')
それ以外の場合は、プロパティをtrueに設定します。
この項は次のトピックで構成されています。
Oracle Identity Federationサーバーは、eAuth仕様に準拠するよう構成できます。構成のほとんどは、Fusion Middleware Controlを使用して行いますが、仕様によりSSOアサーションの次の2つの属性が必須になります。これらの属性は、MBean/WLSTスクリプトによってのみ構成できます。
us:gov:e-authentication:basic:specVer属性。このサーバーでサポートされるeAuth仕様のバージョンが含まれます。
us:gov:e-authentication:basic:Sid属性。シングル・サインオンを実行するユーザーのセッション識別子が含まれます。
この2つの属性を(特定のプロバイダに対して)設定して、eAuthバージョンの値を設定するようOracle Identity Federationを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力してから、必要に応じて次のプロパティを設定します。
リモート・プロバイダのeauthmodeenabledブール型プロパティをtrueに設定して、eAuthモードを有効にします。
setFederationProperty(REMOTE_PROVIDER_ID, 'eauthmodeenabled', 'true', 'boolean') ## ## replace REMOTE_PROVIDER_ID with the identifier of the remote provider
idpglobalグループのeauthversion文字列プロパティを、Oracle Identity Federationサーバーが使用する値(2.0など)に設定します。
setConfigProperty('idpglobal', 'eauthversion', '2.0', 'string')
11gリリース1(11.1.1.7.0)以降では、Oracle Identity Federationでバックエンド属性交換(BAE)の直接属性交換プロファイルがサポートされます。このプロファイルは、SAML 2.0仕様で定義されるSAML属性問合せプロファイルに基づきます。
|
関連項目: 次の場所にある『Security Markup Language (SAML) 2.0 Identifier and Protocol Profiles for Backend Attribute Exchange (BAE) v2.0』ドキュメント
|
BAEの直接属性交換プロファイルと相互作用するパートナの構成
BAEの直接属性交換プロファイルを使用して、パートナと相互運用するOracle Identity Federationを構成するには、次のようにします。
該当のパートナとの属性問合せプロトコルの交換について、Oracle Identity Federationを構成します。
詳細は、次の資料を参照してください。
BAEモードの該当のパートナを構成します。Oracle Identity Federationパートナに関するメッセージの送信や処理を行う場合にOracle Identity FederationでBAEプロファイル・ルールを使用するように、そのパートナのエントリでブール型プロパティを設定する必要があります。
パートナに対するBAEの直接属性交換プロファイルの設定
特定のパートナに対してBAEプロファイルを設定するようにOracle Identity Federationを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力して、パートナのattributebaeenabledブール型プロパティを設定します。
setPartnerProperty("PARTNER_PROVIDER_ID", "attributebaeenabled" , "true","boolean")
該当のパートナに対してBAE機能を有効にします(PARTNER_PROVIDER_IDを、パートナのProviderIDに置き換えます)。
setPartnerProperty("PARTNER_PROVIDER_ID", "attributebaeenabled" , "false","boolean")
該当のパートナに対してBAE機能を無効にします(PARTNER_PROVIDER_IDを、パートナのProviderIDに置き換えます)。
SAML 2.0仕様には、X.500 LDAP属性プロファイルが定義されており、このプロファイルに準拠するようアサーションに含める必要のある属性がリストされています。
要件は次のとおりです。
フォーマットは、urn:oasis:names:tc:SAML:2.0:attrname-format:uriにする必要があります。
名前はURIにする必要があります。
SAML属性要素でXMLエンコーディング属性を指定する必要があり、その値は「LDAP」に設定する必要があります。
最初の2つの要件を満たすには、Oracle Identity Federationサーバー・インスタンスの属性をFusion Middleware Controlで構成します。
最後の要件を満たすには、WLSTスクリプトを使用してOracle Identity Federationを構成します。これにより、アサーションに含まれる属性をOracle Identity Federation/IDP/AttributeAuthorityが送信する際の送信先のプロバイダにプロパティが設定されます。
X.500 LDAP属性プロファイルに対するWLSTの使用方法
Oracle Identity Federationサーバー・インスタンスのWLSTスクリプト環境を入力してから、Oracle Identity Federationがアサーションを提供するリモート・プロバイダのattrx500ldapenabledプロパティを設定します。
attrx500ldapenabledブール型プロパティをtrueに設定して、サーバーがX.500 LDAP属性プロファイルに準拠するようにします。それ以外の場合はfalseに設定します。
setFederationProperty(REMOTE_PROVIDER_ID, 'attrx500ldapenabled', 'true', 'boolean') ## ## replace REMOTE_PROVIDER_ID with the identifier of the remote provider
Oracle Identity Federationサーバーでログアウト処理が呼び出されたときに、WS-Fed/SAMLグローバル・ログアウトを実行するかどうかを指定できます。
一般的なフェデレーション・デプロイメントでは、ユーザーがフェデレーション・サーバーでログアウトを呼び出した場合のフローは、次のようになります。
ユーザーは、/fed/user/logout URLでOracle Identity Federationのログアウト・サービスを呼び出します。
ログアウト・サービスの詳細は、第4.2.6項「ログアウト処理の起動」を参照してください。
Oracle Identity Federationは、次の操作を行います。
ユーザーを各種認証エンジンおよびSP統合モジュール(Oracle Access Manager、Oracle Single Sign-Onなど)からログアウトさせます。
ユーザーをリダイレクトして、現在のユーザー・セッションで呼び出されたリモート・フェデレーション・パートナからログアウトさせます。この操作をグローバル・ログアウトと呼びます。
グローバル・ログアウトが完了したら、ログアウト処理を終了します。
グローバル・ログアウト・フローを無効にする場合、Fusion Middleware Controlで次の2つの方法を使用できます。
グローバルに無効にする場合は、「ローカルのみログアウト」設定を選択します(第5.2項「サーバー・プロパティの構成」を参照)。
プロバイダごとに無効にする場合は、パートナ構成セクションの「Oracle Identity Federation設定」タブにある「このプロバイダでグローバル・ログアウトを実行しないでください」設定を選択します。
この2つの方法では、ログアウト・フローの動作を静的に制御できますが、オンデマンド・グローバル・ログアウトを使用すると、ユーザーが実行時にグローバル・ログアウト・プロトコルを呼び出せるかどうかを指定できます。
ユーザーがグローバル・ログアウトを選択できるかどうかを指定するには、serverconfigグループのslouserprefenabledブール型プロパティを次のように設定して、フェデレーション・サーバーを構成します。
グローバル・ログアウトの選択をユーザーに許可する場合はtrueに設定します。
グローバル・ログアウトの選択をユーザーに許可しない場合はfalseに設定します。
プロパティを設定するには、Oracle Identity Federationサーバー・インスタンスのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
setConfigProperty('serverconfig', 'slouserprefenabled', 'true', 'boolean')
オンデマンド・グローバル・ログアウトが有効な場合、ユーザーは、Oracle Identity Federationのログアウト・サービスURLを呼び出す際にglobalslo問合せパラメータを指定することにより、WS-Fed/SAMLログアウト処理を実行できます。
このブール型のパラメータには、次の2つのいずれかの値を指定できます。
true。グローバル・ログアウト処理が実行されることを意味します。
false。ローカル・ログアウト処理のみが実行されることを意味します。
ユーザーは、第4.2.6項「ログアウト処理の起動」の手順に従って、次のようなURLでサービスを呼び出します。
http://hostname:port/fed/user/logout?returnurl=http%3A%2F%2Fanotherhostname%2Fpath&globalslo=false
Oracle Identity Federationには、SAML 1.x/SAML 2.0/Liberty 1.xプロトコルで使用されるSOAPエンドポイントを保護するために、次の2つの方法が用意されています。
SSL証明書を介したクライアント認証を使用したSSL: SOAPエンドポイントは、SSLを使用し、SSLクライアント証明書を要求することによって保護されます。
HTTP Basic認証: この方法の場合、SOAPエンドポイントはHTTP Basic認証メカニズムを使用して保護されます。
|
注意: Liberty 1.xのサポートは非推奨です。 |
この項の内容は次のとおりです。
次の方法の詳細は、第8.1項「Oracle Identity FederationでのSSLの構成」を参照してください。
SOAP URLを保護するためのSSLの構成
SSLによって保護されているSOAPエンドポイントに接続するためのOracle Identity Federationの構成
この項では、次の内容について説明します。
SOAP URLを保護するためにサーバー上でHTTP Basic認証を構成する方法
HTTP Basic認証によって保護されているリモート・サーバーに、SOAPプロトコルを介して接続する際に使用される資格証明を構成する方法
|
注意:
|
この項では、SOAPエンドポイントを保護するために必要な手順を示します。構成の変更は、Oracle WebLogic管理サーバーで行います。
手順は次のとおりです。
作成したポリシーを確認するためのOracle WebLogic Serverの構成
Oracle WebLogic Server管理コンソールにログインします。
左側のペインで、「セキュリティ・レルム」を選択し、「myrealm」→「構成」→「詳細」の順に移動します。
次の設定を選択します。
ロールとポリシーのチェック: すべてのWebアプリケーションとEJB
WebアプリケーションまたはEJBのデプロイ時: デプロイメント・ディスクリプタのロールとポリシーを初期化
「保存」をクリックします。
管理サーバーを停止するために、「環境」→「サーバー」→「制御」に移動し、「AdminServer」を選択して、「停止」→「ただちに強制停止」をクリックします。
ターミナル・ウィンドウから、スクリプト$DOMAIN_HOME/bin/startWebLogic.shを呼び出して、管理サーバーを起動します。
グループおよびユーザーの作成
Oracle WebLogic Server管理コンソールにログインします。
左側のペインで、「セキュリティ・レルム」を選択し、「myrealm」→「ユーザーとグループ」→「グループ」の順に移動します。
「新規」をクリックして、名前(soapusersなど)を選択します。「OK」をクリックします。
「ユーザーとグループ」→「ユーザー」の順に移動します。
「新規」をクリックして、名前とパスワードを選択します。「OK」をクリックします。
作成したユーザーをクリックして、「グループ」タブを選択します。
作成したグループを選択して、「選択済み」列に移動します。「保存」をクリックします。
さらにユーザーを入力するには、ステップ4から7までを繰り返します。
ロールおよびポリシーの作成
Oracle WebLogic Serverの管理サーバー・コンソールにログインします。
左側のペインで、「デプロイメント」を選択し、Oracle Identity Federationアプリケーションを展開して、「/fed」をクリックします。
「セキュリティ」→「ロール」の順に移動します。
「新規」をクリックして、名前(soapusersなど)を選択します。「URLパターン」で、「/」を入力します。「OK」をクリックします。
作成したロールをクリックして、「条件の追加」を選択します。
「グループ」を選択して、「次へ」をクリックします。
作成したグループの名前を入力して、「追加」→「終了」の順にクリックします。
「保存」をクリックします。
左側のペインで、「デプロイメント」を選択し、Oracle Identity Federationアプリケーションを展開して、「/fed」をクリックします。
「セキュリティ」→「ポリシー」の順に移動します。
SOAPエンドポイントを保護するには、一連のポリシー(保護が必要なURLごとに1つのポリシー)を作成する必要があります。保護が必要なURLのリストを表6-2に示します。ポリシーを作成するには、次の手順に従います。
「新規」をクリックして、保護する必要のあるURLを(表1から)入力します。「OK」をクリックします。
作成したポリシーをクリックして、「条件の追加」を選択します。
「ロール」を選択して、「次へ」をクリックします。
作成したロールの名前を入力して、「追加」→「終了」の順にクリックします。
「保存」をクリックします。
グループ、ユーザー、ロールおよびポリシーを作成したら、管理サーバーおよび管理対象サーバーを再起動して変更を有効にします。
クライアント側では、Oracle Identity Federationにより、SOAPチャネルでピア・プロバイダに接続する場合のBasic認証のサポートが実装されます。Oracle Identity Federation構成を更新し、サーバーがリモート・プロバイダのSOAPエンドポイントに接続する際、入力した資格証明が使用されるようにする必要があります。
Oracle Identity Federationから保護されているSOAP URLへの接続を有効にするには、次の手順を実行します。
Oracle Identity FederationがデプロイされているドメインでFusion Middleware Controlコンソールにログインします。
「Oracle Identity Federation」→「管理」→「フェデレーション」の順にナビゲートします。
SOAPチャネルでHTTP Basic認証が必要なリモート・プロバイダを選択し、「編集」をクリックします。
「Oracle Identity Federation設定」タブで、「HTTP基本認証の有効化」を選択して、リモート・プロバイダへの接続時にサーバーが使用するユーザー名とパスワードを入力します。
「適用」をクリックします。
SAML 2.0では、サービス・プロバイダはユーザーが認証に使用したアイデンティティ・プロバイダを検出できます。ユーザーを認証した後で、IdPはそのプロバイダIDをユーザーのブラウザのCookieの値に追加します。SPはこのCookieを読み取り、使用されたIdPを検出します。IdPおよびSPでこのCookieを読み書きするには、このCookieがすべてのIdPおよびSPに共通のドメインにある必要があります。そのため、このCookieは共通ドメインCookie(CDC)と呼ばれます。
Oracle Identity Federationは、SPとして動作している場合に、CDCプロファイルが有効で、ターゲットIdPのプロバイダIDが指定されずにSSO処理が開始されると、共通ドメインCookieを読み取り、リスト内で最初のIdPに対してSSOを実行します。Oracle Identity Federationを構成して、SSOを実行するIdPを選択するようユーザーに求めることもできます。ユーザーは、CDC内にあるすべてのIdPのリストから選択できます。このIdPは、SPとして動作するOracle Identity Federationに信頼されています。
この項では、Oracle Identity Federationを構成して、CDCプロファイルを使用する方法について説明します。内容は次のとおりです。
共通ドメインCookieは常にセキュアなCookieとしてマークされます。そのため、CDCプロファイルを使用するには、アイデンティティ・プロバイダとして動作しているか、サービス・プロバイダとして動作しているかにかかわらず、SSLを有効にする必要があります。SSLを有効にするには、第8.1項「Oracle Identity FederationでのSSLの構成」の手順を参照してください。
Oracle Identity FederationがIdPとして動作している場合は、次の手順に従ってCDCプロファイルを構成します。
Oracle Enterprise Managerにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「アイデンティティ・プロバイダ」の順に移動します。
「共通」タブで、「共通ドメインの有効化」を選択して、次のプロパティを入力します。
共通ドメインURL: 次の形式でOracle Identity Federationがリスニングしている、共通ドメイン内のOracle Identity Federation intro URLです。
https://hostname_in_common_domain:sslport/fed/idp/intro
次に例を示します。
https://mycorp.commondomain.com:4443/fed/idp/intro
|
注意: このURLには、前述の手順で構成したHTTPSとSSLポートを使用する必要があります。 |
名前: Cookieが書き込まれるドメインです(.commondomain.comなど)。
|
注意: ドメインの名前は、ピリオド(.)で始まる必要があります。 |
Cookie存続期間(日): Cookieの存続期間(日単位)です。
Oracle Identity Federationがサービス・プロバイダとして動作している場合は、次の手順に従ってCDCプロファイルを構成します。
Fusion Middleware Controlにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「サービス・プロバイダ」の順に移動します。
「共通」タブで、「共通ドメインCookieサービスの有効化」を選択して、次のプロパティを入力します。
サービスURL - 次の形式でOracle Identity Federationがリスニングしている、共通ドメイン内のOracle Identity Federation introsso URLです。
https://hostname_in_common_domain:sslport/fed/sp/introsso
次に例を示します。
https://mycorp.commondomain.com:4443/fed/sp/introsso
|
注意: このURLには、前述の手順で構成したHTTPSとSSLポートを使用する必要があります。 |
ターゲットIdPのプロバイダIDが指定されずにSSOフローが開始された場合に、ユーザーに対して共通ドメインCookie内の信頼できるIdPのリストから入力を求めるようにするには、次の手順に従ってOracle Identity Federationを構成します。
第6.10.3項「サービス・プロバイダとして動作する場合のCDCプロファイルの構成」の手順に従って、CDCプロファイルを構成します。
Oracle Identity FederationのWLSTコマンドまたはMBeanを使用して、Config「spglobal」のcommondomainidpdiscenabledプロパティをtrueに設定します。
WLSTコマンドの使用
次のコマンドを使用します。
setConfigProperty('spglobal', 'commondomainidpdiscenabled', 'true', 'BOOLEAN')
詳細は、第9章「Oracle Identity Federationコマンドライン・ツール」を参照してください。
MBeanの使用
spglobalというConfigMXBeanで、次の引数を指定してputProperty処理を呼び出します。
名前: commondomainidpdiscenabled
値: true
型: BOOLEAN
詳細は、付録A「Oracle Identity Federation MBean」を参照してください。
アイデンティティ・プロバイダ検出は、SSOで使用するアイデンティティ・プロバイダを(多くの場合、ユーザーとの対話によって)選択するためのサービスです。Oracle Identity Federationは、アイデンティティ・プロバイダ検出サービスを備えていませんが、SPが開始するSSOにおいて、SPへの認証リクエストでIdPが渡されなかった場合に、IdPを選択するサービスを使用できるようサポートしています。
詳細は次の仕様を参照してください。
http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-idp-discovery-cs-01.pdf
Oracle Identity Federationがサービス・プロバイダとして動作している場合、ターゲットIdPのプロバイダIDが指定されずにSSO処理が開始された場合に、SSOを実行するアイデンティティ・プロバイダを選択するためのカスタムページにユーザーをリダイレクトするよう構成できます。
ユーザーがアイデンティティ・プロバイダを選択すると、選択したIdPを含むSSOリクエストがカスタム・ページからOracle Identity Federationに再送信されます。
IdP検出を構成するには、次の手順に従います。
Fusion Middleware Controlにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「サービス・プロバイダ」の順に移動します。
「共通」タブで、「アイデンティティ・プロバイダ検出サービスの有効化」を選択して、次のプロパティを入力します。
Service URL: 選択対象のIdPを表示するカスタム・ページの場所です。
Oracle Identity Federationは、IdP検出サービス・ページへのリダイレクト時に次のパラメータを指定します。
return: このページからOracle Identity Federationに対する新しいリクエストの送信先のURLです。リクエストには選択されたIdPのプロバイダIDが含まれます。
returnIDParam: Oracle Identity Federationに送信するリクエストで、選択されたIdPのプロバイダIDを指定する際に使用するパラメータの名前です。
このページはこれらのパラメータの値を取得し、IdPのリストを表示した後、選択されたIdPのプロバイダIDを指定して新しいリクエストをOracle Identity Federationに送信します。
|
注意: URL問合せパラメータ値が正しくURLエンコードされていることを確認します。 |
例
IdP検出サービス・ページの例を次に示します。このページでは、ユーザーがアイデンティティ・プロバイダを(プロバイダIDのリストhttp://idp1.com, http://idp2.com, http://idp3.comから)選択すると、選択されたプロバイダIDがOracle Identity Federationに送信され、SSOフローが続行されます。
<%@ page buffer="5kb" autoFlush="true" session="false"%>
<%@ page language="java" import="java.util.*, java.net.*"%>
<%
// Set the Expires and Cache Control Headers
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "Thu, 29 Oct 1969 17:04:19 GMT");
// Set request and response type
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String submitURL = request.getParameter("return");
String returnIDParam = request.getParameter("returnIDParam");
List idps = new ArrayList();
idps.add("http://idp1.com");
idps.add("http://idp2.com");
idps.add("http://idp3.com");
%>
<html>
<title>
Select an Identity Provider
</title>
<body bgcolor="#FFFFFF"><form method="POST" action="<%=submitURL%>" id="PageForm" name="PageForm" autocomplete="off">
<center>
<table cellspacing="2" cellpadding="5" border="0" width="500">
<tr><td colspan="2" align="center">
Select an Identity Provider
</td></tr>
</tr>
<tr>
<td align="right">Provider ID</td>
<td>
<select size="1" name="<%=returnIDParam%>">
<%
Iterator idpIT = idps.iterator();
while(idpIT.hasNext())
{
String idp = (String)idpIT.next();
%>
<option value="<%=(idp)%>"><%=idp%></option>
<%
}
%>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Continue"/>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
Oracle Identity Federationでは、サーバーが情報カードのRP(リソース・プロバイダ)として動作する場合、情報カードを認証エンジンとして使用できます。
フローは次のようになります。
Oracle Identity Federationは、そのユーザーを認証するためにチャレンジが必要であると判断し、情報カード認証エンジンを選択します。
Oracle Identity Federationは、情報カードのリンクが含まれるログイン・ページを表示します。このリンクには、Oracle Identity Federationがリクエストする、STSサーバーからのクレームと、戻されるアサーションのタイプ(オプション)が含まれます。Oracle Identity Federationでは、認識されているSTSサーバーを個別に表示することも、1つの情報カード・リンクのみを表示して、認識済のSTSサーバーは表示しないこともできます。
ユーザーがリンクをクリックします。
ユーザーのマシンにインストールされているアイデンティティ・セレクタが起動され、この処理で使用可能なカードが表示されます。
ユーザーがカードを選択します。
アイデンティティ・セレクタは、STSサーバーに接続してSAMLアサーションを取得します。(注意: SAMLアサーションは、Oracle Identity Federation SSLサーバー証明書を使用して暗号化されます。)
アイデンティティ・セレクタは、SAMLアサーションをOracle Identity Federationに提供します。
Oracle Identity Federationは、暗号化キーストアを使用してアサーションを復号化し、署名を検証します。
Oracle Identity Federationは、SAMLアサーションをローカル・ユーザーにマップします。このとき、「SAML 1.x」およびSAML 2.0タブの「サービス・プロバイダ」ページにリストされている設定に基づいて、SAML 1.xまたはSAML 2.0のアサーション・マッピング・モジュールを使用します。(注意: Oracle Identity Federationがサービス・プロバイダとして動作する場合、このステップはフェデレーションSSOと同様のフローになります。)
アサーションがローカル・ユーザー・レコードにマッピングされると、認証フェーズが完了し、Oracle Identity Federationは情報カード認証エンジンを呼び出す前に実行していた処理を再開します。
情報カード認証エンジンは、さらに、情報カード・プロバイダのオプション属性をリクエストできます。
情報カード・エンジンは、特定の属性を返すよう指示されると、それらの属性をオプション・クレームとして情報カード・プロバイダへのリクエストに追加します。この特定の属性とは、アサーションの内容の一部が認証エンジンで移入されたユーザー・セッション属性に依存していることに起因して、IdPとして動作しているOracle Identity Federationがリクエストした属性です。
この項は次のトピックで構成されています。
サーバー側の設定は次のとおりです。
次の手順を実行します。
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Filesを次のURLからダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
ミドルウェア・ホーム・フォルダの下にあるすべての$JAVA_HOME/jre/lib/securityディレクトリでファイルを解凍します(これらのディレクトリを検索するには、US_export_policy.jarファイルを探します)。それぞれの$JAVA_HOME/jre/lib/securityディレクトリで、デフォルトの低強度のlocal_policy.jarファイルとUS_export_policy.jarファイルをOracleが提供するファイルで上書きします。
|
関連項目: 『Oracle Fusion Middleware管理者ガイド』の「Middlewareホームとは」に関する項 |
管理サーバーおよびOracle Identity Federationが実行されている管理対象サーバーを再起動します。
Fusion Middleware ControlでOracle Identity Federationインスタンスに移動して、次の操作を実行します。
情報カード認証ではSSLが必要です。第8.1項「Oracle Identity FederationでのSSLの構成」の説明に従ってOracle WebLogic ServerでSSLを構成し、Oracle Identity FederationサーバーでSSLを有効にします。SSLキーストアが存在しない場合は、新しいSSLキーストアを作成する必要があります。
SSLサーバー証明書では、RSA公開鍵アルゴリズムを使用する必要があります。これはSAML暗号化処理で必要になります。
Oracle Identity Federation暗号化ウォレットには、Oracle WebLogic ServerでSSLサポートに使用されるSSLキーストアを使用します。このキーストアを使用すると、情報カード・クライアントはSSLサーバー証明書を使用してアサーションを暗号化します。そのため、Oracle Identity Federationでは、このキーストアをSSLトラフィックで使用される鍵ペアの暗号化ウォレットとして使用する必要があります。
SSL JavaキーストアをOracle Identity Federation暗号化ウォレットとしてロードします。「管理」→「セキュリティおよび信頼」の順に移動し、パスワードと別名を指定して、新しいウォレット・キーストアをアップロードします。
|
注意: 暗号化キーストアが変更されているため、信頼できるパートナにメタデータを再分配する必要があります。 |
「IDMデータ・ストア」→「認証エンジン」の順に移動し、情報カード・エンジンを有効にします。WS-Trustアサーションをユーザー・データ・ストアのレコードにマップするかどうかによって、「アサーションのユーザーへのマップ」のボックスを選択または選択解除します。
|
注意: Oracle Identity Federationは、認証メカニズムを必須クレームとして追加するよう構成できます。これにより、情報カード・プロバイダからの特定の認証方式をリクエストできるようになります。この機能を有効にするには、「認証メカニズムを含む」ボックスを選択します。 |
|
注意: 情報カード・プロバイダがこの機能をサポートしない場合を除いて、ほとんどのデプロイメントで、このボックスのチェックは外したままにしてください。 このボックスを選択した場合、Oracle Identity Federationは、認証メカニズムのマッピングで定義されているとおりに、ローカル認証メカニズムの値をSAML認証方式に変換します。 また、このボックスを選択した場合、Oracle Identity Federationは、指定の情報カード・プロバイダが認証メカニズムの組込みをサポートしているかどうかを確認するために、「認証メカニズム・クレームをサポートします」というプロバイダ固有のプロパティを確認します。このプロパティは、「リモート・プロバイダ」構成セクションの信頼できるプロバイダ設定で定義されています。 |
必要に応じて、デフォルト認証エンジンにする情報カードを選択し、変更を保存します。
「アサーションのユーザーへのマップ」ボックスを選択すると、「サービス・プロバイダ」ページのSAML 2.0/SAML 1.xアサーションタブの構成に基づいて、着信アサーションがユーザー・レコードにマップされます。
|
注意: 個人発行者カードにマップされている認証メカニズムで認証を行うために情報カード認証エンジンが呼び出された場合、その個人発行者カードのみがログイン・ページに表示されます。個人発行者カードにマップされている認証メカニズム以外で呼び出された場合は、すべての情報カード・プロバイダが表示されます。 |
Oracle Identity Federationが個人カード発行者用のSTSからアサーションを受け取る場合、Oracle Identity Federationと発行者との間で信頼関係が確立されている必要があります。この信頼関係を確立するには、STSを定義し、サーバーのフェデレーションで有効にします。
Fusion Middleware Controlで、Oracle Identity Federationインスタンスを特定し、次の操作を実行します。
「管理」→「フェデレーション」の順に移動し、http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/selfで識別されるWS-Fed 1.1 IdPを追加します。
STSを選択して、「更新」をクリックし、「手動更新」を選択します。
「シングル・サインオン/情報カード・モード」ドロップダウンから、「情報カード」(STSが情報カード・プロトコルのみをサポートする場合)、または「シングル・サインオンと情報カード」(STSが情報カード・プロトコルとSSOプロトコルをサポートする場合)を選択します。
情報カードには、STSで作成され、アサーションに組み込まれた属性やクレームを、リライイング・パーティ(この場合は、Oracle Identity Federation)で表示する必要があることが記述されています。属性およびオプションの名前IDがアサーションに含まれる場合、Oracle Identity Federationはこのアサーションをローカル・ユーザー・レコードにマップできます(この操作のための構成がされている場合)。
STSにリクエストする属性を追加するには、「属性マッピング」をクリックします。
カード・セレクタが呼び出されたときに、Oracle Identity Federationサーバーで必要な属性がリストされるように属性マッピングを構成します。「情報カードの内容が必要」と表示されているそれぞれの属性について、Oracle Identity Federationは、その属性をWS-Trustサーバーからのアサーションで戻すよう要求します。「ユーザー属性名」は、Oracle Identity Federationの属性を参照するために使用します。「アサーション属性名」は、STSで認識される属性の名前です。また、「フォーマットまたはネームスペース」は、属性がバインドされるネームスペースです。Oracle Identity FederationからSTSへの必要なクレームは、ネームスペース、「/」、およびアサーション属性名が連結されたもので構成されます。
次に例を示します。
属性エントリ(「ユーザー属性名」: lastname、「アサーション属性名」: surname、「フォーマットまたはネームスペース」: http://schemas.xmlsoap.org/ws/2005/05/identity/claims)を追加します。「情報カードの内容が必要」ボックスを選択します。
別の属性エントリ(「ユーザー属性名」: firstname、「アサーション属性名」: givenname、「フォーマットまたはネームスペース」: http://schemas.xmlsoap.org/ws/2005/05/identity/claims)を追加します。「情報カードの内容が必要」ボックスを選択します。
個人カード発行者から提供されるアサーションをローカル・ユーザーにマップするようOracle Identity Federationを構成します。
たとえば、「Oracle Identity Federation設定」タブの「アサーション設定」タブで、「名前IDによるユーザーのマップ」ボックスを選択解除し、「属性問合せによるユーザーのマップ」を選択して、LDAP問合せ(&(sn=%lastname%)(givenname=%firstname%))を入力します。
変更を保存します。
「認証メカニズム・クレームをサポートします」ボックスを選択または選択解除し、認証メカニズムを必要な情報カード属性としてリストするかどうかを指定します。リクエストする認証メカニズムを属性で指定する機能は、すべてのWS-Trustサーバーでサポートされているとはかぎりません。
変更を保存します。
Oracle Identity FederationがリモートSTSからアサーションを受け取る場合、Oracle Identity Federationサーバーとリモート・サーバーとの間で信頼関係が確立されている必要があります。この信頼関係を確立するには、STSを定義し、サーバーのフェデレーションで有効にします。
Fusion Middleware Controlで、Oracle Identity Federationインスタンスを特定し、次の操作を実行します。
エントリを追加するには、STSのプロバイダIDを入力して、IdPおよびWS-Fed 1.1バージョンを選択します。
STSを選択して、「更新」をクリックします。
IdPの署名検証証明書を入力します。
「シングル・サインオン/情報カード・モード」ドロップダウンから、「情報カード」(STSが情報カード・プロトコルのみをサポートする場合)、または「シングル・サインオンと情報カード」(STSが情報カード・プロトコルとSSOプロトコルの両方をサポートする場合)を選択します。
情報カードには、STSで作成され、アサーションに組み込まれた属性やクレームを、リライイング・パーティ(この場合は、Oracle Identity Federation)で表示する必要があることが記述されています。属性およびオプションの名前IDがアサーションに含まれる場合、Oracle Identity Federationはこのアサーションをローカル・ユーザー・レコードにマップできます(この操作のための構成がされている場合)。
STSにリクエストする属性を追加するには、「属性マッピング」をクリックします。
カード・セレクタが呼び出されたときに、Oracle Identity Federationサーバーで必要な属性がリストされるように属性マッピングを構成します。「情報カードの内容が必要」と表示されているそれぞれの属性について、Oracle Identity Federationは、その属性をWS-Trustサーバーからのアサーションで戻すよう要求します。「ユーザー属性名」は、Oracle Identity Federationの属性を参照するために使用します。「アサーション属性名」は、STSで認識される属性の名前です。また、「フォーマットまたはネームスペース」は、属性がバインドされるネームスペースです。Oracle Identity FederationからSTSへの必要なクレームは、ネームスペース、「/」、およびアサーション属性名が連結されたもので構成されます。
次に例を示します。
属性エントリ(「ユーザー属性名」: lastname、「アサーション属性名」: surname、「フォーマットまたはネームスペース」: http://schemas.xmlsoap.org/ws/2005/05/identity/claims)を追加します。「情報カードの内容が必要」ボックスを選択します。
さらに、別の属性エントリ(「ユーザー属性名」: firstname、「アサーション属性名」: givenname、「フォーマットまたはネームスペース」: http://schemas.xmlsoap.org/ws/2005/05/identity/claims)を追加します。「情報カードの内容が必要」ボックスを選択します。
個人カード発行者から提供されるアサーションをローカル・ユーザーにマップするようOracle Identity Federationを構成します。
たとえば、「Oracle Identity Federation設定」タブの「アサーション設定」タブで、「名前IDによるユーザーのマップ」ボックスを選択解除し、「属性問合せによるユーザーのマップ」を選択して、LDAP問合せ(&(sn=%lastname%)(givenname=%firstname%))を入力します。
変更を保存します。
この項は次のトピックで構成されています。
クライアント・マシンで、Oracle Identity Federationを信頼し、ローカル・コンピュータに格納されている情報カードの使用をユーザーに許可するには、Windows CardSpaceに対応したOracle Identity Federation SSL証明書を信頼する必要があります。SSLサーバーを生成した認証局をクライアントで信頼しない場合は、証明書をインポートする必要があります。
証明書をインポートするには、次の手順を実行します。
Internet Explorerを使用して、https://host:portの形式のURLに移動します。
ページを右クリックします。
「プロパティ」を選択します。
「証明書」を選択します。
「証明のパス」タブをクリックします。
証明書を発行したCAを選択し、証明書を表示します。
「証明書のインストール」をクリックし、「信頼されたルート証明機関」に証明書をインポートします。
Windows CardSpaceで個人情報カードを作成するには、次の手順を実行します。
Windowsの「コントロール パネル」に移動します。
「Windows CardSpace」をダブルクリックします(ない場合は、Microsoftのダウンロード・サイト(http://www.microsoft.com/downloads)から.NETをインストールします)。
「Add a Card」をクリックします。
「Create a Personal Card」を選択して、各フィールドを入力します。
変更を保存します。
この項では、実行時の動作を管理するために構成可能な追加機能について説明します。
SSOプロトコルおよびログアウト・プロトコルの実行時に、Oracle Identity FederationはSAML/WS-Fedプロトコル交換を実行し、次のような最終のターゲットURLにユーザーをリダイレクトします。
保護されているリソース(SSO実行時)、または
returnurl(ログアウト実行時)
これらのURLは、実行時に問合せパラメータとして指定できます(たとえば、IdPが開始するSSOやログアウト・フローなどでのreturnurl問合せパラメータ)。
|
注意:
|
URLを指定する場合の例を次に示します。
ユーザーは次のようにアクセスして、IdPが開始するSSOフローを開始できます。
/fed/idp/initiatesso?providerid=SP_PROVIDER_ID&returnurl=http%3A%2F%2Furl.com
ユーザーは次のようにアクセスして、ログアウト・フローを開始できます。
/fed/user/logout?returnurl=http%3A%2F%2Furl.com
Oracle Identity Federationでは、実行時に指定されるURLを検証できます。検証を構成するには、承認済のホスト名または承認済のドメイン名のリストを指定します。
|
注意: ドメインは「.」で始まる文字列です。たとえば、Oracleドメイン用の |
デフォルトでは、検証は無効です。
戻りURL検証モジュールを構成するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、serverconfigグループのreturnurlvalidationenabledブール型プロパティをtrue(またはfalse)に設定し、モジュールを有効(または無効)にします。次に例を示します。
setConfigProperty('serverconfig', 'returnurlvalidationenabled', 'true', 'boolean')
ホスト名またはドメインを承認済URLのリストに追加するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のコマンドを発行します。
ホスト名をreturnurlvalidationlistリストに追加するには、次のようにします。
addConfigPropertyListEntry('serverconfig','returnurlvalidationlist',
'hostname.domain.com','string')
ドメインをreturnurlvalidationlistリストに追加するには、次のようにします。
addConfigPropertyListEntry('serverconfig','returnurlvalidationlist',
'.domain.com','string')
Oracle Identity FederationがSPとして動作している場合、フェデレーション・シングル・サインオン・フローでサーバーが受信したアサーションが含まれるXMLメッセージを送信できます。これは、使用されたバインディングに応じて、SAMLまたはSOAPメッセージになります。
次の点に注意してください。
XMLメッセージは、アサーションで受信した属性とともにSPエンジンに送信されます。
メッセージは、orafed-xmlmessageで参照されるマップに格納されます。
属性マップは、oracle.security.fed.sp.attributesで参照されるHttpServletRequestオブジェクトに属性として格納されます。
メッセージの送信を有効にするには、spglobalグループのspattrsincludexmlmessageブール型プロパティをtrueに設定します。
メッセージの送信を無効にするには、このプロパティをfalseに設定します。
|
注意: デフォルト構成は、 |
Oracle Identity Federationでは、次のような様々な理由でエラーが発生します。
ページが見つからない
フェデレーテッド・シングル・サインオン(SSO)エラー
ランタイム・エラー
エラーが発生すると、サーバーはエラー・コード(404、401または500)を返し、ユーザーにはOracle WebLogic Serverのエラー・ページが表示されます。
Oracle Identity Federationを構成して、ユーザーのリダイレクト先をエラー・コードに基づいたカスタム・ページにすることができます。
serverconfig構成グループの文字列プロパティまたはurlerrornnnを、Oracle Identity Federationからエラーが返された場合のユーザーのリダイレクト先のURLに設定します。ここで、nnnは、401、404または500です。(つまり、urlerror401、urlerror404およびurlerror500プロパティを設定できます。)
Oracle Identity Federationは、SSOプロトコル・メッセージに対するXMLスキーマ検証をサポートしています。
この機能は、schemavalidationenabledプロパティで実装されています。デフォルトでは、検証はオフになっています。
スキーマ検証を有効にするには、Oracle Identity Federationサーバー・インスタンスのスクリプト環境を入力してから、schemavalidationenabledプロパティをtrueに設定します。
setConfigProperty('serverconfig','schemavalidationenabled','true','boolean')
検証を無効にするには、このプロパティをfalse(デフォルト値)に設定します。
setConfigProperty('serverconfig','schemavalidationenabled','false','boolean')
フェデレーション・データ・ストアとしてLDAPサーバーまたはRDBMSを使用するようOracle Identity Federationが構成されている場合、サーバーは、フェデレーション・レコードの作成、検索、更新、削除に伴う各種処理を実行します。
通常、フェデレーション・レコードは次のもので構成されています。
IdP名前ID: アイデンティティ・プロバイダで作成され、SAMLメッセージで使用される名前識別子データです。
SP名前ID: 名前識別子管理の更新処理時にサービス・プロバイダでオプションで設定される名前識別子データです。
名前IDが設定されている場合は、その名前IDがSAMLメッセージで使用されます。設定されていない場合は、IdP名前IDが使用されます。
Oracle Identity Federationがサービス・プロバイダとして動作する場合、サーバーはアサーションを処理する操作で、アサーションに含まれる名前ID要素の参照先のフェデレーション・レコードを検索しようとします。デフォルトでは、まずSP名前IDに基づいて検索を実行し、結果が戻らなかった場合は、IdP名前IDに基づいて検索を実行します。
一部のデプロイメントでは、Oracle Identity Federationが次のような状態であることが考えられます。
どの名前ID管理プロトコル交換を実行するようにも構成されていない。
SP名前IDを設定するためにフェデレーション・レコードが更新されていない(つまり、どのフェデレーション・レコードに対しても、管理者が管理ツールを使用して更新処理を実行したことがないということです)。
この場合、SP名前IDを使用したアサーションの処理で、フェデレーション・レコードの最初の検索が実行された際に、いずれのレコードも返されません。また、レスポンス時間が増大します。
SP名前ID検索が不要な場合は、これを無効にすることでパフォーマンスを向上させることができます。検索を有効または無効にするには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、この構成を次のように変更します。
|
注意: デフォルトでは、SP名前ID検索は有効です。 |
SP名前ID検索を有効にするには、datastoreグループのfedusespnameidlookupブール型プロパティをtrueに設定します。
SP名前ID検索を無効にするには、datastoreグループのfedusespnameidlookupブール型プロパティをfalseに設定します。
次に例を示します。
setConfigProperty('datastore', 'fedusespnameidlookup', 'false', 'boolean')
背景
Oracle Identity Federation 10gでは、SHAREid/COREid Federation 2.xと同様に、SAML 1.xおよびWS-Federationプロトコル・サポートのサービスURLを提供していました。これらは、SAML 2.0およびLiberty 1.xサービスURLとは異なります。これらのURLは、SAML 2.0およびLiberty 1.xサービスURLとの一貫性を保つために、11gのOracle Identity Federationで変更されました。つまり、Oracle Identity Federation 11gにアップグレードするカスタマがSAML 1.xまたはWS-Federationを使用する場合、パートナ・プロバイダに新しいシングル・サインオンのサービスURLを知らせる必要があります。
|
注意: Liberty 1.xのサポートは非推奨です。 |
この移行を容易にするために、Oracle Identity Federation 11gには、SHAREidサービスURLとの下位互換性を可能にする個別モジュールが用意されています。このモジュールは、Oracle Identity Federationとのデプロイが可能なJ2EEアプリケーションです。このモジュールにより、ShareID/Oracle Identity Federation 10gのサービスURLのリクエストが処理され、そのリクエストはOracle Identity Federation 11gの対応するサービスURLにリダイレクトまたは転送されます。
|
注意: SAML1xプロトコルの場合、10gでは、認証リクエストの送信時に「METHOD」問合せパラメータを希望のプロファイルに設定することによって、認証レスポンス・プロファイルのバインディングを設定できました。この機能は11gではサポートされていないため、希望のプロファイルのバインディングを使用して認証レスポンスを送信するようにIdPを構成する必要があります。 |
手順
ShareIDプロキシを設定するには、次の手順を実行します。
|
注意: 付録B「Oracle Identity FederationのプロキシとしてのOracle HTTP Serverの使用」のようにプロキシが構成されている場合は、oif.confファイルを変更して、/shareid URLがOracle WebLogic Serverに転送されるようにする必要があります。 |
|
関連項目: 『Oracle Fusion Middleware管理者ガイド』のOracle WebLogic Server管理コンソールの使用開始に関する項 |
Oracle WebLogic Server管理コンソールで、「デプロイメント」ページに移動します。
「ロックして編集」をクリックします。
「インストール」をクリックします。
shareidupdate.earファイルの場所($ORACLE_HOME/fed/install)に移動します。
「次へ」をクリックします。
「Install this deployment as an application」を選択してから「Next」をクリックします。
管理対象サーバーの名前を選択して、「次へ」をクリックします。
「セキュリティ」セクションで「詳細」を選択します。
「終了」をクリックします。
「変更の適用」をクリックします。
「デプロイメント」ページに戻って、「shareidupdate」という新しいアプリケーションを検索します(注意: アプリケーションが最初の10エントリに表示されていない場合は、「次へ」をクリックしてください)。
shareidupdateアプリケーションの状態が「アクティブ」と表示されていない場合は、アプリケーションを選択し、「起動」→「すべてのリクエストを処理」をクリックし、「はい」をクリックします。「デプロイメント」ページでshareidupdateアプリケーションを検索すると、今度は状態が「アクティブ」として表示されるはずです。
デフォルトでは、shareidupdateプロキシは、着信プロトコル(HTTPまたはHTTPS)、サーバー名、およびサーバー・ポートを、メッセージのリダイレクト先のプロトコル、サーバー名、およびサーバー・ポートとして使用します。プロキシ・サーバーを使用する場合などには、デフォルト値以外の使用も検討してください。
これらの値を設定する手順は、次のとおりです、
shareidupdate web.xmlファイルを見つけます。これは、次のパスのサブフォルダにあるはずです。
DOMAIN_HOME/servers/SERVER_NAME/tmp/_WL_user/shareidupdate
プロパティIsSecure、ServerName、ServerPortを使用しているサーブレットに追加します。(注意: 使用するプロトコルがHTTPSの場合は、IsSecureをtrueに、HTTPの場合は、falseに設定します。)
変更を保存して、アプリケーションを再起動します。
たとえば、<servlet>要素には次のような要素が含まれます。
<init-param>
<param-name>IsSecure</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>ServerPort</param-name>
<param-value>7777</param-value>
</init-value>
Oracle Identity FederationがSPとして動作している場合、フェデレーション・レコードを使用せずに、アサーションに格納されている属性と名前識別子の値に基づいてユーザーを検索できます。
アサーションをユーザー・レコードにマップする際にフェデレーテッド・アイデンティティを使用するよう構成されていない場合、Oracle Identity Federation/SPは、着信アサーションに格納されている名前IDと属性を使用して、リポジトリのユーザーをマップします。ユーザー・レコードが見つかった場合、Oracle Identity Federation/SPは、IDおよびアクセス管理フレームワーク内にそのユーザーの認証済セッションを作成し、ユーザーを最終のターゲットURLにリダイレクトします。
このフローではフェデレーション・レコードを使用しないため、Oracle Identity Federationをサービス・プロバイダとして使用するようにフェデレーション・データ・ストアを構成する必要はありません。
このフローでOracle Identity Federationがユーザーを検索できなかった場合は、デフォルトの動作として、ユーザーには401 Unauthorizedエラーが返ります。ユーザーのリダイレクト先を認証エンジンに変更するようOracle Identity Federationを構成することにより、ユーザー・アカウントのプロビジョニングなど、カスタムの是正措置を開始することができます。この動作は、「ユーザー・マッピング失敗時のエラー」プロパティで実装します。第6.16.2項「Oracle Identity Federationの構成」の「マッピングに失敗した場合」というタイトルの手順を参照してください。
認証エンジンからOracle Identity Federationに戻る際にも、依然としてユーザーをマップできない場合は、最終的に401が返されます。
制限事項
次の制限に注意してください。
Oracle Identity Federation/SPは、フェデレーテッド・アイデンティティを使用せずにアサーションをマップするよう構成されている場合、フェデレーション・レコードが格納されないため、Fusion Middleware Controlの「アイデンティティ・フェデレーション」セクションで使用できるアカウント・リンク情報はありません。
また、名前識別子更新プロファイルおよびフェデレーション終了プロファイルは完了しません。そのため、ピアIdPがこのプロファイルのいずれかのメッセージを送信すると、Oracle Identity Federation/SPはフェデレーション・レコードが見つからなかったことを示すエラー・メッセージを返します。
この項は次のトピックで構成されています。
リポジトリ内のユーザー・レコードを検索する場合、次の2つのオプションがあります。
名前IDフォーマット・マッピングの使用。名前IDはユーザー属性にリンクされます。
LDAP/SQL問合せの使用。問合せにはアサーションに格納される名前IDと属性が含まれます。
どちらのオプションも有効な場合、Oracle Identity Federation/SPは、最初に名前IDマッピング検索を使用し、結果が戻らなかった場合はLDAP/SQL問合せフローを使用します。
問合せに含まれるプレースホルダは、アサーションに含まれる属性と名前IDの値で置き換えられます。プレースホルダには%NAME%フォーマットが使用され、Oracle Identity Federation/SPはNAMEを次のもので置き換えます。
アサーションに含まれる属性を参照する属性名。問合せの作成時に、Oracle Identity Federation/SPは、%AttributeName%をAttributeNameで参照される属性の値で置き換えます。
|
注意: アサーションに含まれる属性は、属性マッピング・モジュールによって、リモート・プロバイダ用に構成されている属性名/値にマップされます。属性名はこのリストの属性を参照する必要があります。 |
orafed-nameid-value - このプレースホルダが名前IDの値で置き換えられることを示します。
orafed-nameid-qualifier - このプレースホルダが名前ID識別子で置き換えられることを示します。
orafed-nameid-format - このプレースホルダが名前IDフォーマットで置き換えられることを示します。
orafed-providerid - このプレースホルダがピア・プロバイダIDで置き換えられることを示します。
SAML 2.0モジュールでは、フェデレーテッド・アイデンティティの使用がサポートされますが、SAML 1.xモジュールではサポートされません。
ユーザー・マッピング処理でアサーションのフェデレーテッド・アイデンティティを使用するようOracle Identity Federationを構成する手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択または選択解除します。
名前IDを使用してユーザーをマップする手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「名前IDによるユーザーのマップ」を選択します。
検索手順で使用されるようにユーザー・レコードの名前IDフォーマットと属性を構成します。
LDAP/RDBMS問合せを使用してユーザーをマップする手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「属性問合せによるユーザーのマップ」を選択します。
検索手順で使用されるLDAPまたはSQL問合せを入力します。
マッピングに失敗した場合
マッピングに失敗した場合、401エラー・コードを返すかわりに認証エンジンを呼び出すようOracle Identity Federationを構成できます。サーバーを構成するには、次の手順を実行します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「ユーザー・マッピング失敗時のエラー」を選択解除して、認証エンジンを呼び出すことにより、アサーションの内容と属性にアクセスできるようになります。
|
注意: アサーションに含まれる属性は、属性マッピング・モジュールによって、リモート・プロバイダ用に構成されている属性名/値にマップされます。属性名はこのリストの属性を参照する必要があります。 |
この例では、Oracle Identity Federation/SPはアサーションに含まれる名前IDを使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索します。名前IDのフォーマットはemailAddressです。また、検索ではLDAPユーザー・レコードのmail属性を使用します。
名前IDマッピング機能を使用してユーザーを検索するようにサーバーを構成します。次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択解除します。
「属性問合せによるユーザーのマップ」を選択解除します。
「名前IDによるユーザーのマップ」を選択します。
電子メール・アドレス名前IDフォーマットを有効にして、ユーザー・レコードで電子メール・アドレスが格納されている属性を入力します(通常、LDAPサーバーの場合はmail)。
「ユーザー・マッピング失敗時のエラー」を選択します。これにより、ユーザーが見つからなかった場合に、Oracle Identity Federationからブラウザに401エラーが返るようになります。
変更を適用します。
この例では、Oracle Identity Federation/SPはアサーションに含まれる名前IDを使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索します。名前IDのフォーマットはemailAddressです。また、検索ではLDAPユーザー・レコードのmail属性を使用します。
LDAP/SQL問合せ機能を使用してユーザーを検索するようにサーバーを構成します。次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択解除します。
「属性問合せによるユーザーのマップ」を選択します。
「属性問合せ」フィールドに、LDAP問合せ「(&(mail=%orafed-nameid-value%))」を入力します。
「名前IDによるユーザーのマップ」を選択解除します。
「ユーザー・マッピング失敗時のエラー」を選択します。これにより、ユーザーが見つからなかった場合に、Oracle Identity Federationからブラウザに401エラーが返るようになります。
変更を適用します。
この例では、Oracle Identity Federation/SPはアサーションに含まれるSAMLの電子メール・アドレスと姓の属性を使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索します。
ローカル属性mailおよびsnはLDAPユーザー・レコードから取得されます。アサーションの属性は、emailおよびlastnameとして参照されます。Oracle Identity Federation/SPは属性名マッピングを使用するように構成されていません。そのため、LDAP問合せではSAMLアサーションに含まれる属性名が使用されます。属性名マッピングが構成されている場合は、LDAP問合せで属性名マッピングの名前が使用されます(詳細は、第5.9項「属性マッピングおよびフィルタリングの構成」を参照してください)。
LDAP/SQL問合せ機能を使用してユーザーを検索するようにサーバーを構成します。次の構成手順を実行します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択解除します。
「属性問合せによるユーザーのマップ」を選択します。
「属性問合せ」フィールドに、LDAP問合せ「(&(mail=%email%)(sn=%lastname%))」を入力します。
「名前IDによるユーザーのマップ」を選択解除します。
「ユーザー・マッピング失敗時のエラー」を選択します。これにより、ユーザーが見つからなかった場合に、Oracle Identity Federationからブラウザに401エラーが返るようになります。
変更を適用します。
この例では、Oracle Identity Federation/SPは名前IDに含まれる電子メール・アドレスを使用して、ユーザーを検索します。処理が失敗した場合は、アサーション内のSAMLの姓属性を使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索します。このとき、LDAPユーザー・レコードのローカル属性mailおよびsnを使用します。
名前IDマッピングおよびLDAP/SQL問合せの両方を使用してユーザーを検索するようにサーバーを構成します。次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択解除します。
「属性問合せによるユーザーのマップ」を選択します。
「属性問合せ」フィールドに、LDAP問合せ「(&(sn=%lastname%))」を入力します。
「名前IDによるユーザーのマップ」を選択します。
電子メール・アドレス名前IDフォーマットを有効にして、ユーザー・レコードで電子メール・アドレスが格納されている属性を入力します(通常、LDAPサーバーの場合はmail)。
「ユーザー・マッピング失敗時のエラー」を選択します。これにより、ユーザーが見つからなかった場合に、Oracle Identity Federationからブラウザに401エラーが返るようになります。
変更を適用します。
Oracle Identity Federation/SPで、ピア・アイデンティティ・プロバイダに固有の属性ベースの認証構成が必要な場合、フェデレーション・リストのIdPのエントリに設定情報を格納する必要があります。
この例では、Oracle Identity Federation/SPを設定して、http://idp.comで参照されるIdPに属性ベースの認証を設定します。次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「フェデレーション」の順に移動します。
アイデンティティ・プロバイダを選択して、「更新」をクリックします。
「Oracle Identity Federation設定」タブをクリックします。
「サービス・プロバイダ/リクエスタ設定」セクションを開いて、アサーション設定に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択解除します。
「属性問合せによるユーザーのマップ」を選択します。
「属性問合せ」フィールドに、LDAP問合せ「(&(mail=%email%)(sn=%lastname%))」を入力します。
「名前IDによるユーザーのマップ」を選択解除します。
「ユーザー・マッピング失敗時のエラー」を選択します。これにより、ユーザーが見つからなかった場合に、Oracle Identity Federationからブラウザに401エラーが返るようになります。
変更を適用します。
SP側の自動アカウントにより、サービス・プロバイダはユーザーへのアサーションに含まれるアイデンティティを直接マップできます。
Oracle Identity Federationがサービス・プロバイダとして動作しており、フェデレーテッド・アイデンティティを使用してSAML 2.0着信アサーションをマップするように構成されている場合、アサーションで受信した属性と名前識別子に基づいてユーザーが検索され、自動的にフェデレーション・レコードが作成されます。
この項では、アカウント・リンクに関連するトピックについて説明します。
フェデレーテッド・アイデンティティを使用するよう構成されており、自動アカウント・リンクが有効な場合、管理者は次の2つの方法でリポジトリ内のユーザー・レコードを検索できます。
名前IDフォーマット・マッピングの使用。名前IDはユーザー属性にリンクされます。これは既存のマッピングを使用します。
LDAP/SQL問合せの使用。問合せにはアサーションに格納される名前IDと属性が含まれます。
どちらのオプションも有効な場合、Oracle Identity Federation/SPは、最初に名前IDマッピング検索を使用し、結果が戻らなかった場合はLDAP/SQL問合せフローを使用します。このフローで、Oracle Identity Federation/SPがユーザー・レコードを見つけられなかった場合、サーバーはユーザーの資格証明を要求します。
管理者は、ユーザーの検索時に使用するLDAP/SQL問合せをOracle Identity Federation構成で指定します。問合せに含まれるプレースホルダは、アサーションに含まれる属性と名前IDの値で置き換えられます。プレースホルダには%NAME%フォーマットが使用され、Oracle Identity Federation/SPはNAMEを次のもので置き換えます。
アサーションに含まれる属性を参照する属性名。問合せの作成時に、Oracle Identity Federation/SPは、%AttributeName%をAttributeNameで参照される属性の値で置き換えます。
|
注意: アサーションに含まれる属性は、属性マッピング・モジュールによって、リモート・プロバイダ用に構成されている属性名/値にマップされます。属性名はこのリストの属性を参照する必要があります。 |
orafed-nameid-value - このプレースホルダは名前IDの値で置き換えられます。
orafed-nameid-qualifier - このプレースホルダは名前ID識別子で置き換えられます。
orafed-nameid-format - このプレースホルダは名前IDフォーマットで置き換えられます。
orafed-providerid - このプレースホルダはピア・プロバイダIDで置き換えられます。
SAML 2.0モジュールのみで、フェデレーテッド・アイデンティティの使用がサポートされます。SAML 1.xモジュールではサポートされません。
ユーザー・マッピングでアサーションのフェデレーテッド・アイデンティティを使用するようOracle Identity Federationを構成し、自動アカウント・リンク処理を有効にする手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択します。
「自動アカウント・リンクの有効化」を選択します。
名前IDを使用してユーザーをマップする手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「名前IDによるユーザーのマップ」を選択します。
名前IDフォーマットを有効にし、ユーザー・レコードの属性が自動アカウント・リンク処理の検索手順で使用されるように構成します。
LDAP/RDBMS問合せを使用してユーザーをマップする手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「属性問合せによるユーザーのマップ」を選択します。
自動アカウント・リンク処理の検索手順で使用されるLDAPまたはSQL問合せを入力します。
この例では、Oracle Identity Federation/SPはアサーションに含まれる名前IDを使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索します。名前IDのフォーマットはemailAddressです。また、検索ではLDAPユーザー・レコードのmail属性を使用します。
自動アカウント・リンクで、名前IDマッピング機能を使用してユーザーを検索するようにサーバーを構成します。
次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択します。
「自動アカウント・リンクの有効化」を選択します。
「属性問合せによるユーザーのマップ」を選択解除します。
「名前IDによるユーザーのマップ」を選択します。
電子メール・アドレス名前IDフォーマットを有効にして、ユーザー・レコードで電子メール・アドレスが格納されている属性を入力します(通常、LDAPサーバーの場合はmail)。
変更を適用します。
この例では、Oracle Identity Federation/SPはアサーションに含まれる名前IDを使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索し、フェデレーション・レコードを自動的に作成します。名前IDのフォーマットはemailAddressです。また、検索ではLDAPユーザー・レコードのmail属性を使用します。
LDAP/SQL問合せ機能を使用してユーザーを検索するようにサーバーを構成します。次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択します。
「自動アカウント・リンクの有効化」を選択します。
「属性問合せによるユーザーのマップ」を選択します。
属性問合せを「(&(mail=%orafed-nameid-value%))」に設定します。
「名前IDによるユーザーのマップ」を選択解除します。
変更を適用します。
この例では、Oracle Identity Federation/SPはアサーションに含まれるSAMLの電子メール・アドレスと姓の属性を使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索し、フェデレーション・レコードを自動的に作成します。LDAPユーザー・レコードのローカル属性mailおよびsnが使用されます。アサーションの属性は、emailおよびlastnameとして参照されます。
Oracle Identity Federation/SPは属性名マッピングを使用するように構成されていません。そのため、LDAP問合せではSAMLアサーションに含まれる属性名が使用されます。属性名マッピングが構成されている場合は、LDAP問合せで属性名マッピングの名前が使用されます(属性名マッピングの詳細は、第5.9項「属性マッピングおよびフィルタリングの構成」を参照してください)。
LDAP/SQL問合せ機能を使用してユーザーを検索するようにサーバーを構成します。次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択します。
「自動アカウント・リンクの有効化」を選択します。
「属性問合せによるユーザーのマップ」を選択します。
属性問合せを「(&(mail=%email%)(sn=%lastname%))」に設定します。
「名前IDによるユーザーのマップ」を選択解除します。
変更を適用します。
この例では、Oracle Identity Federation/SPは名前IDに含まれる電子メール・アドレスを使用して、ユーザーを検索し、フェデレーション・レコードを作成します。処理に失敗した場合、Oracle Identity Federation/SPはアサーションに含まれるSAMLの姓の属性を使用して、LDAPユーザー・データ・ストアでローカル・ユーザーを検索します。LDAPユーザー・レコードのローカル属性mailおよびsnが使用されます。
名前IDマッピング機能およびLDAP/SQL問合せ機能を使用してユーザーを検索するようにサーバーを構成します。
次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→SAML 2.0→「アサーション設定」の順に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択します。
「自動アカウント・リンクの有効化」を選択します。
「属性問合せによるユーザーのマップ」を選択します。
属性問合せを「(&(sn=%lastname%))」に設定します。
「名前IDによるユーザーのマップ」を選択します。
電子メール・アドレス名前IDフォーマットを有効にして、ユーザー・レコードで電子メール・アドレスが格納されている属性を入力します(通常、LDAPサーバーの場合はmail)。
Oracle Identity Federation/SPで、ピア・アイデンティティ・プロバイダに固有の属性ベースの認証構成が必要な場合、フェデレーション・リストのIdPのエントリに設定情報を格納する必要があります。
この例では、Oracle Identity Federation/SPでフェデレーテッド・アイデンティティを使用し、http://idp.comで参照されるIdPへの属性問合せによって自動アカウント・リンクを設定します。
次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「フェデレーション」の順に移動します。
アイデンティティ・プロバイダを選択して、「更新」をクリックします。
「Oracle Identity Federation設定」タブをクリックします。
「サービス・プロバイダ/リクエスタ設定」セクションを開いて、アサーション設定に移動します。
「フェデレーテッド・アイデンティティによるユーザーのマップ」を選択します。
「自動アカウント・リンクの有効化」を選択します。
「属性問合せによるユーザーのマップ」を選択します。
「属性問合せ」フィールドに、LDAP問合せ「(&(mail=%email%)(sn=%lastname%))」を入力します。
「名前IDによるユーザーのマップ」を選択解除します。
「ユーザー・マッピング失敗時のエラー」を選択します。これにより、ユーザーが見つからなかった場合に、Oracle Identity Federationからブラウザに401エラーが返るようになります。
変更を適用します。
Oracle Identity Federation IdPを構成することにより、そのユーザーにフェデレーテッド・シングル・サインオンの実行権限が付与(または拒否)されているかどうかを、ユーザーのディレクトリ・レコードの属性値に基づいて判断できます。
承諾が取得されている場合、そのユーザーがOracle Identity Federation/IdP、またはOracle Identity Federationに統合されているIDおよびアクセス管理(IAM)フレームワーク内で認証されると、SSO処理が自動的に実行されます。承諾が取得されていない場合は、そのユーザーがIAMドメインのOracle Identity Federationですでに認証されていても、フェデレーションSSO処理が行われるたびに、Oracle Identity Federation/IdPはユーザーの資格証明を要求する必要があります。
|
注意: この項では、Oracle Identity Federation/IdPはアイデンティティ・プロバイダとして動作しているOracle Identity Federationを意味します。 |
このセクションの内容は次のとおりです。
Oracle Identity Federation/IdPでは、この機能を次の3つのモードで実装できます。
オフ - オプトイン/オプトアウト機能は実行されません。
オプトイン - オプトイン/オプトアウトのユーザー属性が、管理者が設定した値と一致する場合、Oracle Identity Federation/IdPはフェデレーションSSO処理でユーザーの再認証を実行しません。一致しない場合は、再認証を実行します。
オプトアウト - オプトイン/オプトアウトのユーザー属性が、管理者が設定した値と一致する場合、Oracle Identity Federation/IdPはフェデレーションSSO処理でユーザーの再認証を実行します。一致しない場合は、再認証を実行しません。
オプトイン/オプトアウトを使用するようにOracle Identity Federationを構成する手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「アイデンティティ・プロバイダ」の順に移動します。
オプトイン/オプトアウトモードを選択します。
オフ: オプトイン/オプトアウト機能は実行されません。
オプトイン: オプトイン・モードがアクティブです。
オプトアウト: オプトアウト・モードがアクティブです。
モードを「オプトイン」または「オプトアウト」に設定する場合は、ユーザー・レコードから取得する属性を参照するオプトイン/アウト・ユーザー属性を入力します。この値は、管理者が設定する値と比較されます。
モードを「オプトイン」または「オプトアウト」に設定する場合は、管理者によって設定され、ユーザー属性との比較に使用される値を保持するオプトイン/アウト属性値を入力します。
この例では、オプトイン/オプトアウト機能がオフになっているため、Oracle Identity Federation/IdPでフェデレーション・レコードが作成されるときに、ユーザーの資格証明が要求されることはありません。
次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「アイデンティティ・プロバイダ」の順に移動します。
オプトイン/オプトアウトモードで「オフ」を選択します。
変更を適用します。
この例では、オプトイン/オプトアウト機能がオプトインに設定されており、ユーザー設定が含まれる属性はfedrecordcreationで、ユーザーがオプトインしたことを示す値はagreedです。
Oracle Identity Federation/IdPはフェデレーションの作成処理時に、ユーザーのfedrecordcreation属性値がagreedと異なる場合にのみ、ユーザーの資格証明を再度要求します。
次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「アイデンティティ・プロバイダ」の順に移動します。
オプトイン/オプトアウトモードで「オプトイン」を選択します。
「オプトイン/アウト・ユーザー属性」をfedrecordcreationに設定します。
「オプトイン/アウト属性値」をagreedに設定します。
変更を適用します。
この例では、この機能をoptoutに設定し、ユーザー設定が含まれる属性をfedrecordcreation、ユーザーがオプトインしたことを示す値をdisallowedにします。
Oracle Identity Federation/IdPはフェデレーションのを作成処理時に、ユーザーのfedrecordcreation属性値がdisallowedと一致する場合にのみ、ユーザーの資格証明を再度要求します。
次の手順を実行して、Oracle Identity Federation/SPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「アイデンティティ・プロバイダ」の順に移動します。
オプトイン/オプトアウトモードで「オプトアウト」を選択します。
「オプトイン/アウト・ユーザー属性」をfedrecordcreationに設定します。
「オプトイン/アウト属性値」をdisallowedに設定します。
変更を適用します。
Oracle Identity Federation/IdPで、ピア・サービス・プロバイダに固有のオプトイン・モード構成が必要な場合、フェデレーション・リストのSPのエントリに設定情報を格納する必要があります。
この例では、http://sp.comで参照されるSPに対して、オプトイン/オプトアウト機能をオプトインに設定し、ユーザー設定が含まれる属性をfedrecordcreation、ユーザーがオプトインしたことを示す値をagreedにします。
Oracle Identity Federation/IdPはフェデレーションの作成処理時に、ユーザーのfedrecordcreation属性値がagreedと異なる場合にのみ、ユーザーの資格証明を再度要求します。
次の手順を実行して、Oracle Identity Federation/IdPを構成します。
Fusion Middleware Controlにログインします。
「管理」→「フェデレーション」の順に移動します。
サービス・プロバイダを選択して、「更新」をクリックします。
「Oracle Identity Federation設定」タブをクリックします。
「アイデンティティ・プロバイダ/認証局設定」セクションを開きます。
オプトイン/オプトアウトモードで「オプトイン」を選択します。
「オプトイン/アウト・ユーザー属性」をfedrecordcreationに設定します。
「オプトイン/アウト属性値」をagreedに設定します。
変更を適用します。
Oracle Identity Federationがサービス・プロバイダとして動作している場合にこの機能を使用すると、アサーションに含まれる情報に基づいたユーザーの検索は行われません。かわりに、SP統合モジュールにアサーションの内容が直接送り戻され、このモジュールによってユーザー・マッピング・フローが実装されます。
マッピングをバイパスする(つまり、アサーションで識別されているプリンシパルをローカル・ユーザーにマップしない)ようにOracle Identity Federation/SPを構成した場合、Oracle Identity Federationは次のことを実行します。
Oracle Identity Federation管理コンソールの「サービス・プロバイダ」セクションで指定されている匿名ユーザーに対してOracle Identity Federationセッションを作成します。これは、サーバーがそのサーバーやピア・プロバイダで認証されるユーザーを認識する必要がある場合(たとえば、ログアウト処理など)に必要です。
そのため、Fusion Middleware Controlの「Oracle Identity Federation」ページにある「匿名ユーザーID」の設定は必須になります。
第10.4.2.3項「サービスの実装」の「Oracle Identity Federationのアサーション処理」で記述されているように、名前ID、属性などの情報をSP統合モジュールに送り戻します。
着信アサーションをユーザー・レコードにマップする(またはマップしない)ようにOracle Identity Federationを構成する手順は次のとおりです。
Fusion Middleware Controlにログインします。
「管理」→「サービス・プロバイダ」→「共通」の順に移動します。
「アサーションのユーザー・アカウントへのマップ」を選択して、着信アサーションをユーザー・レコードにマップするようにOracle Identity Federationを構成します。アサーションをマップしないようにするには選択を解除します。
変更を適用します。
Oracle Identity Federation管理者は、ローカル・ユーザー・ディレクトリ属性に対する名前IDフォーマットのマッピングをパートナ単位で上書きすることができます。
この機能をコマンドラインで構成するには、次の手順を実行します。
第9章「Oracle Identity Federationコマンドライン・ツール」の説明に従って、スクリプト環境を設定します。
java weblogic.WLSTを使用してWLSTシェルを呼び出します。
使用する名前フォーマットに応じて、次のいずれかのコマンドを入力します。
setFederationProperty('SPproviderID','nameformatemail','attribute-name','string')
名前フォーマットが「電子メール・アドレス」の場合
setFederationProperty('SPproviderID','nameformatx500','attribute-name','string')
名前フォーマットが「X509サブジェクト名」の場合
setFederationProperty('SPproviderID','nameformatunspecified','attribute-name','string')
名前フォーマットが「未指定」の場合
setFederationProperty('SPproviderID','nameformatkerberos','attribute-name','string')
名前フォーマットが「Kerberos」の場合
setFederationProperty('providerID','nameformatwindows','attribute-name','string')
名前フォーマットが「Windowsドメイン修飾名」の場合
setFederationProperty('providerID','nameformatcustom','attribute-name','string')
名前フォーマットが「カスタム」の場合
|
注意: フェデレーション・ストアが設定されていて、そのユーザーのフェデレーション・レコードが存在する場合は、フェデレーション・レコードのnameidが使用されます。 |
アサーションを使用して情報を交換する場合、アイデンティティ・プロバイダや属性認証局などのSAMLオーソリティで、アサーションが有効になる条件を設定できます。一般的には次のような条件があります。
アサーションが有効になるまでの期間。
アサーションが無効になる時点。
アサーションを処理できるプロバイダのリスト。アサーションのAudienceRestictionCondition要素にリストされているプロバイダのみが、そのアサーションを使用できます。
SAML仕様では、AudienceRestictionConditionはAudience要素のリストとして定義されており、それぞれはアサーションを処理できるプロバイダを参照しています。
デフォルトでは、Oracle Identity Federationは、アサーションの生成時にAudienceRestrictionCondition要素を作成し、次のルールを使用してアサーションの受信者を組み込みます。
SAML 1.xプロトコル交換の場合は、Audienceをサービス・プロバイダのアサーション・コンシューマ・サービスURLとして設定します。
SAML 2.0プロトコル交換の場合は、Audienceをサービス・プロバイダ/属性リクエスタのProviderIDとして設定します。
SAMLアサーションを使用するWS-Fedプロトコル交換の場合は、Audienceをサービス・プロバイダのProviderIDとして設定します。
Oracle Identity Federationは、アサーションを受信して処理する際に、デフォルトではProviderIDまたはアサーションがポストされたURLを使用して、AudienceRestrictionCondition(存在する場合)を検証します。
デプロイメント・シナリオによっては、AudienceRestrictionCondition要素の生成および検証を無効にする必要がある場合があります。これは、プロトコル・レベル(SAML 1.0、SAML 1.1またはSAML 2.0アサーション)または信頼できるプロバイダ・レベルで実行できます。
SAML 1.x/SAML 2.0アサーションでAudienceRestrictionConditionの生成および処理をグローバル・レベルで制御するようにOracle Identity Federationを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力してから、次のようにします。
idpsaml10、idpsaml11またはidpsaml20グループのaudiencerestrictionenabledブール型プロパティをtrue(デフォルト)に設定して、SAML 1.0、SAML 1.1またはSAML 2.0アサーションの作成におけるAudienceRestrictionConditionの生成を有効にします。
setConfigProperty('idpsaml11', 'audiencerestrictionenabled', 'true', 'boolean')
条件の生成を無効にするには、falseに設定します。
spsaml10、spsaml11またはspsaml20グループのaudiencerestrictionenabledブール型プロパティをtrue(デフォルト)に設定して、SAML 1.0、SAML 1.1またはSAML 2.0アサーションの処理におけるAudienceRestrictionConditionの検証を有効にします。
setConfigProperty('spsaml11', 'audiencerestrictionenabled', 'true', 'boolean')
条件の検証を無効にするには、falseに設定します。
特定の信頼できるプロバイダに対してAudienceRestrictionConditionの生成および処理が有効になるようにOracle Identity Federationを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力してから、REMOTE_PROVIDER_IDで参照される信頼できるプロバイダのaudiencerestrictionenabledブール型プロパティをtrueに設定します。
setFederationProperty(REMOTE_PROVIDER_ID, 'audiencerestrictionenabled', 'true', 'boolean')
条件の生成および処理を無効にするには、プロパティをfalseに設定します。
Oracle Identity Federationを構成して、次のようにカスタム文字列を使用することもできます。
Oracle Identity Federation/IdPによるアサーションの作成時
Oracle Identity Federationは、構成で指定されているカスタム文字列を使用してAudienceRestrictionCondition要素を移入します。
Oracle Identity Federation/SPによるアサーションの処理時
Oracle Identity Federationは、AudienceRestrictionCondition要素(存在する場合)を、構成で指定されているカスタム文字列と比較して検証します。
SAML 1.x/SAML 2.0アサーションのAudienceRestrictionConditionをグローバル・レベルで検証する場合に、特定のオーディエンス値を使用するようにOracle Identity Federationを構成するには、インスタンスのWLSTスクリプト環境を入力してから、spsaml10、spsaml11またはspsaml20グループのaudiencerestrictionvalue文字列プロパティを、SAML 1.0、SAML 1.1またはSAML 2.0アサーションの処理時にOracle Identity FederationがAudienceRestrictionConditionの検証で使用するカスタム値に設定します。
setConfigProperty('spsaml11', 'audiencerestrictionvalue', 'someglobalvalue', 'string')
audiencerestrictionvalueを空の文字列値に設定した場合、Oracle Identity Federation/SPはAudienceRestrictionCondition要素を前述のとおりに検証します。
特定の信頼できるプロバイダに対してAudienceRestrictionConditionの生成時/処理時に特定のAudience値を使用するようにOracle Identity Federationを構成するには、Oracle Identity FederationインスタンスのWLSTスクリプト環境を入力してから、REMOTE_PROVIDER_IDで参照される信頼できるプロバイダのaudiencerestrictionvalue文字列プロパティを、アサーションの作成時/処理時に条件を生成/検証する際に使用するカスタム文字列に設定します。
setFederationProperty(REMOTE_PROVIDER_ID, 'audiencerestrictionvalue', 'customvalue', 'string')
audiencerestrictionvalueを空の文字列値に設定した場合、Oracle Identity Federation/SPはAudienceRestrictionCondition要素を前述のとおりに移入/検証します。
Oracle Identity Federationには証明書検証モジュール(第5.10.3項「セキュリティおよび信頼 - 信頼できるCAおよびCRL」を参照)が用意されています。このモジュールは、XMLデジタル署名検証に使用される任意の証明書を、管理者がアップロードした信頼できるCAおよびCRLの証明書を使用して検証します。
このモジュールはJRE CertPathValidation APIと統合し、JVMで構成されているデフォルトのCertPathValidationモジュールを使用して証明書を検証します。デフォルトのCertPathValidationモジュールはSunの実装です。Oracle Identity Federationでは、Sunのモジュールが提供するオンライン証明書ステータス・プロトコル(OCSP)およびCRL配布ポイント(CDP)の機能を利用できます。
証明書検証を管理するには、次のプロパティを使用します。
Fusion Middleware ControlでOracle Identity Federationサーバー・インスタンス→「セキュリティおよび信頼」→「信頼できるCAおよびCRL」セクションの順に移動します。
「認証検証の有効化」ボックスを選択すると、Oracle Identity Federationで証明書検証が有効になります。
「信頼できる認証局(CA)」表には、CAの既知の信頼できる証明書がすべて表示されます。
「証明書失効リスト」表には、証明書の失効ステータスをチェックするために使用されるCRLが表示されます。
serverconfig構成グループのcertpathvalidationenabledブール型プロパティによって、検証モジュールを使用するかどうかを次のように指定します。
falseは、「信頼できる認証局(CA)」表および「証明書失効リスト」表に基づいて、Oracle Identity Federationの内部証明書検証モジュールが使用されることを意味します。
trueは、JRE CertPathValidationモジュールが使用されることを意味します。このモジュールは、「信頼できる認証局(CA)」表の内容とともにブートストラップされ、信頼できるCAの基準となります。
serverconfig構成グループのcertpathvalidationcrlenabledブール型プロパティには、JRE CertPathValidationモジュールで、「証明書失効リスト」表にリストされたCRLを使用して証明書の失効をチェックするかどうかを次のように指定します。
falseを指定すると、JRE CertPathValidationモジュールでのCRL検証が無効になります。
trueを指定すると、JRE CertPathValidationモジュールでのCRL検証が有効になります。
serverconfig構成グループのcertpathvalidationocspenabledブール型プロパティには、Sun CertPathValidation実装のOCSPプラグインを有効にするかどうかを次のように指定します。
falseを指定すると、OCSP検証が無効になります。
trueを指定すると、OCSP検証が有効になります。
|
注意:
|
serverconfig構成グループのcertpathvalidationocspurl文字列プロパティには、Sun CertPathValidationモジュールが検証のためにリクエストを送信するOCSPサーバーのURLを指定します。
|
注意: OCSP機能を有効にするには、 |
serverconfig構成グループのcertpathvalidationocspcertsubject文字列プロパティには、OCSPサーバーの証明書のサブジェクト名を指定します。
|
注意:
|
serverconfig構成グループのcertpathvalidationcdpenabledブール型プロパティには、CRL失効チェック処理の実行時に、Sun CertPathValidationモジュールでCDP拡張を使用するかどうかを指定します。
OCSPモジュールを有効にすると、Oracle Identity FederationによってJVMに次のJava Securityプロパティが設定されます。
ocsp.enableがtrueに設定されます。
ocsp.responderURLがOCSPサーバーのURLに設定されます。
ocsp.responderCertSubjectNameがOCSPサーバーの証明書のサブジェクト名に設定されます。
|
関連項目: これらのシステム・プロパティの詳細は、Java PKIプログラマーズ・ガイドの次の項を参照してください。
|
CDP機能を有効にすると、com.sun.security.enableCRLDP Javaシステム・プロパティがtrueに設定されます。
|
注意: OCSP機能およびCDP機能を有効にする場合、デフォルトのCertPathValidationモジュールをSun実装に設定する必要があります(標準インストールのデフォルトではtrueです)。 |
場合によっては、SAML 2.0 IdPがSPに対して、Assertion Consumer Service (ACS) URLを認証リクエストの一部として送信するよう要求することがあります。
この機能を使用すると、ACS URLをSAML 2.0認証リクエストで送信するようにOracle Identity Federationを構成できます。このURLは、フェデレーションSSO処理の終了時にIdPによってユーザーがリダイレクトされる場所を参照します。デフォルトでは、この機能はfalse(ACS URLを送信しません)に設定されています。
この機能は、WLSTコマンドを使用して、SAML 2.0グローバル・レベルまたはSAML 2.0パートナ・レベルで構成できます。
この機能を構成するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
認証リクエストを使用してSAML 2.0グローバル・レベルでACS URLを送信するようにサーバーを構成するには、spsaml20グループのsendacsurlauthnrequestブール型プロパティをtrueに設定します。このURLを送信しない場合は、falseに設定します。次に例を示します。
setConfigProperty('spsaml20', 'sendacsurlauthnrequest', 'true', 'boolean')
認証リクエストを使用して特定のIdPパートナにACS URLを送信するようにサーバーを構成するには、そのパートナのsendacsurlauthnrequestブール型プロパティをtrueに設定します。そのパートナにこのURLを送信しない場合は、falseに設定します。次に例を示します。
setFederationProperty(REMOTE_IDP_PROVIDER_ID, 'sendacsurlauthnrequest','true', 'boolean')
この項では、OpenIDパートナおよびリライイング・パートナと連携するようにOracle Identity Federationを構成する方法について説明します。この項の内容は次のとおりです。
OpenIDプロバイダと統合するには、Oracle Identity Federationにパートナ情報をプロビジョニングして、特定の情報をフェデレーテッド・パートナに提供する必要があります。
OPパートナをプロビジョニングするには、次の手順を実行します。
パートナを作成するには、Fusion Middleware ControlでOracle Identity Federationサーバーを見つけて、「フェデレーション」ページに移動し、次の要素を指定します。
OPのプロバイダID: この値は、そのOPとのフェデレーションSSOフロー開始時に(たとえば、/fed/sp/initiatesso URLなどで)使用されます。Oracle Identity FederationがOPである場合は、http(s)://hostname:port/fed/idp/openidv20のようにURLを入力します。
プロトコルのバージョン: OpenID 2.0
ロール: アイデンティティ・プロバイダ
「信頼できるプロバイダ設定」タブで次の設定を使用してパートナを編集します。
検出URL: OPがXRDSメタデータを公開するURLです。Oracle Identity FederationがOPである場合は、http(s)://hostname:port/fed/idp/openidv20のようにURLを使用します。
エンドポイントURL: 認証時にユーザーがOPでリダイレクトされるURLです。Oracle Identity FederationがOPである場合は、http(s)://hostname:port/fed/idp/openidv20のようにURLを使用します。
OPと統合する場合、Oracle Identity Federation/RPがフェデレーテッド・パートナに特定の情報を提供しなければならない場合があります。OPで、次のデータが必要になる場合があります。
レルム: RPを識別するURLです。Oracle Identity Federation/RPのレルムURLは、http(s)://hostname:port/fed/sp/openidv20のようなURLになります。これは、Oracle Identity Federation/RP OpenIDプロバイダIDとしても動作します。
エンドポイントURL: ユーザーが認証情報とともにOPからOracle Identity Federation/RPにリダイレクトされるURLです。Oracle Identity Federation/RPのエンドポイントURLは、http(s)://hostname:port/fed/sp/openidv20のようなURLになります。
リライイング・パーティと統合するには、RPパートナをプロビジョニングして、特定の情報をRPに提供する必要があります。
Fusion Middleware Controlの「アイデンティティ・プロバイダ」ページの「OpenID 2.0」タブで「一般OpenIDサービス・プロバイダ」を作成していない場合は、任意のRPがOracle Identity Federation/OPとフェデレーテッドSSOを実行できるように、RPパートナをプロビジョニングする必要があります。
「フェデレーション」ページで次の内容を指定して、パートナを作成します。
RPのプロバイダID: RPレルム値です。そのRPとのフェデレーションSSOフロー開始時に(たとえば、/fed/idp/initiatesso URLなどで)使用されます。RP検出で、レルムURLからRP XRDSメタデータをダウンロードする際にも使用されます。Oracle Identity FederationがRPである場合は、http(s)://hostname:port/fed/sp/openidv20のようにURLを入力します。
プロトコルのバージョン: OpenID 2.0
ロール: サービス・プロバイダ
「信頼できるプロバイダ設定」タブで次の設定を使用してパートナを編集します。
エンドポイントURL: ユーザーが認証情報とともにOPからOracle Identity Federation/RPにリダイレクトされるURLです。Oracle Identity FederationがRPである場合は、http(s)://hostname:port/fed/sp/openidv20のようにURLを入力します。
RPと統合する場合、Oracle Identity Federation/OPがフェデレーテッド・パートナに情報を提供しなければならない場合があります。RPで、次のデータが必要になる場合があります。
検出URL: Oracle Identity Federation/OPがXRDSメタデータを公開するURLです。OIF/OPの検出URLは、http(s)://hostname:port/fed/idp/openidv20のようなURLになります。
エンドポイントURL: ユーザーが認証時にRPからOracle Identity Federation/OPにリダイレクトされるURLです。Oracle Identity Federation/OPのエンドポイントURLは、http(s)://hostname:port/fed/idp/openidv20のようなURLになります。
Oracle Identity FederationがOpenIDパートナと連携できるようにするには、属性を構成する必要があります。
Oracle Identity Federation/OPがOpenIDレスポンスで属性を送信できるようにするには、次のようにOpenID Attibute Exchange (AX)プロトコルを有効にする必要があります。
Fusion Middleware Controlで、「アイデンティティ・プロバイダ」ページに移動し、「OpenID 2.0」タブを選択します。
「Attribute Exchange (AX) 1.0の有効化」ボックスを選択します。
変更を保存します。
各RP(または一般OpenIDサービス・プロバイダ)に対して、そのRPの属性を送信するようにOracle Identity Federation/OPを構成し、OpenIDレスポンスに組み込むことのできる属性を定義する必要があります。
Fusion Middleware Controlで、「フェデレーション」ページに移動します。
RPを選択して、「編集」をクリックします。
「属性名マッピングの編集」をクリックします。
OpenIDレスポンスで送信可能な属性を表すエントリを追加します。
「追加」をクリックします。
ユーザー・データ・ストアの属性の名前を「ユーザー属性名」フィールドに入力します。
OpenIDレスポンスの属性の名前は、「フォーマットまたはネームスペース」および「アサーション属性名」で構成されます。ここで、「フォーマットまたはネームスペース」には属性名のURL接頭辞を含めます。また、「アサーション属性名」には接尾辞を含めます。たとえば、http://openid.net/schema/contact/internet/email属性を定義する場合、「フォーマットまたはネームスペース」にはhttp://openid.net/schema/contact/internet/を、「アサーション属性名」にはemailを設定します。
Oracle Identity Federationユーザー・セッションから属性を取得する場合は、「ユーザー・セッションから値を取得」ボックスを選択します。
RPからリクエストされなかった場合でも、この属性を常にOpenIDレスポンスで送信する場合は、「SSOアサーションで送信」を選択します。
「OK」をクリックします。
すべての属性を追加したら、「OK」をクリックします。
「シングル・サインオン(SSO)の属性の有効化」ボックスを選択します。
「適用」をクリックします。
Oracle Identity Federation/RPは、実行時に属性をリクエストする際に、カスタムの事前SPアクション・モジュールまたはカスタムSPエンジンを経由するか、またはユーザーを認証するOPの構成に基づくことができます。
OPの属性をリクエストするようにOracle Identity Federation/RPを構成する手順は次のとおりです。
Fusion Middleware Controlで、「フェデレーション」ページに移動します。
OPを選択して、「編集」をクリックします。
「属性名マッピングの編集」をクリックします。
OPにリクエストする属性を表すエントリを追加します。
「追加」をクリックします。
この属性を表す際にローカルに使用する名前を「ユーザー属性名」フィールドに入力します。
OpenIDレスポンスの属性の名前は、「フォーマットまたはネームスペース」および「アサーション属性名」で構成されます。ここで、「フォーマットまたはネームスペース」には属性名のURL接頭辞を含めます。また、「アサーション属性名」には接尾辞を含めます。たとえば、http://openid.net/schema/contact/internet/email属性を定義する場合、「フォーマットまたはネームスペース」にはhttp://openid.net/schema/contact/internet/を、「アサーション属性名」にはemailを設定します。
このOPのこの属性をリクエストするには、「情報カードの内容が必要」ボックスを選択します。
「OK」をクリックします。
すべての属性を追加したら、「OK」をクリックします。
Oracle Identity Federationは、OpenID User Interface Extension 1.0 (UI Ext)をサポートしています。これには、様々な環境や言語に応じて最適化されたOpenIDユーザー・インタフェースをサポートするためのメカニズムが定義されています。
Oracle Identity Federationでは、IdPとユーザーとの視覚的な対話方法を示すデータをIdPへのリダイレクトURLに組み込むよう指定できます。
構成パラメータは次のとおりです。
openiduiextenabled (boolean, false by default)
UI Extをサポートしていることを公開するようにOracle Identity Federation/IdPを構成します。IdPとして動作するOracle Identity Federationのテストのみを目的としています。
openiduiextlangenabled (boolean, false by default)
IdPでUI Ext言語をサポートしている場合、Oracle Identity Federation/SPからIdPへのリダイレクトURLで、UI Ext言語パラメータを送信するようにOracle Identity Federation/SPを構成します。
openiduiextpopupenabled (boolean, false by default)
IdPでUI Extモードをサポートしている場合、Oracle Identity Federation/SPからIdPへのリダイレクトURLで、UI Extモード・パラメータをpopupに設定して送信するようにOracle Identity Federation/SPを構成します。
openiduiexticonenabled (boolean, false by default)
後述のopeniduiexticonurlパラメータで指定された値でUI ExtアイコンをサポートすることをXRDSで公開するようにOracle Identity Federation/SPを構成します。
openiduiexticonurl (string, empty by default)
IdPで使用されるアイコンのURLの場所を指定します。これはSP XRDSで公開されます。
この機能を構成するには、Oracle Identity FederationのWLSTスクリプト環境を入力してから、次のプロパティを設定します。
setConfigProperty('idpopenid20', 'openiduiextenabled', 'true', 'boolean')
setConfigProperty('spopenid20', 'openiduiextlangenabled', 'true', 'boolean')
setConfigProperty('spopenid20', 'openiduiextpopupenabled', 'true', 'boolean')
setConfigProperty('spopenid20', 'openiduiexticonenabled', 'true', 'boolean')
setConfigProperty('spopenid20', 'openiduiexticonurl', 'http://my.icon.com', 'string')
|
注意: http://my.icon.comはアイコンのURLの場所で置き換えてください。 |