Oracle® Fusion Middleware Oracle Access Management管理者ガイド 11g リリース2 (11.1.2.3) for All Platforms E61950-08 |
|
![]() 前 |
![]() 次 |
拡張ルールが追加され、既存の認証ポリシーを拡張できるようになりました。
次の構成は認証後ルールではサポートされていませんが、認証前ルールと認証後ルールの両方を適用できます。
2つ以上のリソースが同じOHS/Webゲートによりフロントエンドされ、同じ認証スキームにより保護されている。
1つの認証後ルールが、ステップアップ認証で定義されたリソースの1つに対して構成されている。
ユーザーが、認証後ルールが構成されていないリソースにアクセスした後で、ステップアップ認証用に認証後ルールが構成されているリソースにアクセスする。この場合、そのリソースに構成されている認証後ルールは無効になります。
ノート:
拡張ルールは、ライセンスが必要なアダプティブ認証サービスの一部です。「アダプティブ認証サービスについて」を参照してください。
拡張ルールには、ブール式が含まれています。トリガーされた認証スキーム結果が複数存在する場合は、実行順序が最も早い結果が最終的な結果として選択されます。表22-24は、拡張ルールの作成時に定義する必要のある属性をまとめたものです。
表22-24 拡張ルールの属性
名前 | 説明 |
---|---|
名前 |
認証ルール名。名前はチェックポイント内で一意であることが必要です。 |
説明 |
ルールの説明 |
実行順序 |
結果が複数ある場合の結果の実行順序 |
条件 |
スクリプト。ユーザーはHTTPリクエスト・ヘッダーの可用性に基づいて条件を構成し、目的の結果を設定できます。 |
結果 |
ルールが適用される認証スキームのID。アクセス/拒否。
ノート: 「アクセスの拒否」オプションが選択されている場合は、リクエストされたURLが見つかりませんでした というエラー・メッセージが表示されます。 |
詳細は、次の各項を参照してください。
特定のシナリオに対して拡張ルールを構成できます。
次のユースケースの場合、拡張ルールを構成します。
非ブラウザ・クライアント - ユーザー認証では、ユーザーが入力するためのフォームベースのログイン・ページがブラウザを介して表示されます。非ブラウザ・クライアント(スイッチ、ルーターなど)が、リクエスト・ヘッダーを介して渡された資格証明に基づいてBasic認証を行うことが必要な場合もあります。非ブラウザ・クライアント認証は、認証前拡張ルールとしてのみ構成できます。非ブラウザ・クライアント認証をサポートするには、目的の条件を(HTTPリクエスト・ヘッダーの可用性に基づいて)認証ルール内で構成し、目的の結果を設定します。
Windowsネイティブ認証オプション - ユーザーがVPNと企業ネットワークのどちらを使用しているかに応じてWindowsネイティブ認証(WNA)とフォームベース・ユーザー認証を切り替えできるように、拡張ルールを構成できます。
ユーザー認証スキーム・オプション - ユーザーが認証方式を選択できるように拡張ルールを構成できます。選択した内容はリクエスト・パラメータとして渡されます。
第2ファクタ認証 - 定義されたユーザーまたはリクエスト属性に基づいて第2ファクタ認証を許可するように、拡張ルールを構成できます。SFAの詳細は、「アダプティブ認証サービスの概要」を参照してください。
表22-25に、これらの拡張ルール・ユースケースで条件を構成する方法の例を示します。
表22-25 拡張ルールのサンプル
サンプル・ルール | Jythonスクリプト・ベースの条件のサンプル | ノート |
---|---|---|
プライベートまたはパブリックのIPルールに基づいて認証スキームを切り替える |
location.clientIP.startswith('10.')またはlocation.clientIP.startswith('172.16')またはlocation.clientIP.startswith('192.168') |
このルールは、認証前および認証後のチェックポイントで使用できます。 |
ブラック・リストIP |
['130.35.50.115', '130.35.50.112', '130.35.50.113']のlocation.clientIP |
このルールは、認証前および認証後のチェックポイントで使用できます。 |
クライアント・ブラウザ・タイプ |
request.userAgent.lower().find('firefox') > 0 |
このルールは、認証前および認証後のチェックポイントで使用できます。 |
ユーザー属性'description'が'test'のユーザーへのアクセスをブロック |
user.userMap['description'] == 'test' |
このルールを使用できるのは、認証後チェックポイントのみです。 |
非ブラウザ・クライアント |
request.authorization.lower().startswith('basic') |
このルールを使用できるのは、認証前チェックポイントのみです。 |
カスタムHTTPヘッダー値 |
request.requestMap['param'] == 'test' |
このルールは、認証前および認証後のチェックポイントで使用できます。 |
範囲内のIPアドレスに基づいて認証スキームを切り替える |
location.isIPinRange('192.35.50.180','192.35.50.188') |
このルールは、認証前および認証後のチェックポイントで使用できます。 |
Access Managerサーバーは、認証条件を実行する前に、(条件に基づいてブール式を作成するために)使用可能なデータを使用してリクエスト・コンテキストを用意します。
表22-26 リクエスト・コンテキスト・データ
属性名 | 説明 |
---|---|
requestMap |
すべてのリクエスト・ヘッダー、パラメータおよびPOSTデータ値のマップ。この例では、カスタム・ヘッダー・キーをリクエスト・ヘッダーから取得して値'test'と比較できます。 request.requestMap['custom-header'].lower().find('test') > 0 |
resourceMap |
一致するリソースの詳細のマップ |
accept |
'Accept'ヘッダー値を返します。 |
acceptCharset |
'Accept-Charset'ヘッダー値を返します。 |
acceptEncoding |
'Accept-Encoding'ヘッダー値を返します。 |
acceptLanguage |
'Accept-Language'ヘッダー値を返します。 |
authorization |
'Authorization'ヘッダー値を返します。 |
connection |
'Connection'ヘッダー値を返します。 |
contentLength |
'ContentLength'ヘッダー値を返します。 |
cookie |
'Cookie'ヘッダー値を返します。 |
host |
'Host'ヘッダー値を返します。 |
ifModifiedSince |
'ifModifiedSince'ヘッダー値を返します。 |
pragma |
'Pragma'ヘッダー値を返します。 |
referer |
'Referer'ヘッダー値を返します。 |
userAgent |
'UserAgent'ヘッダー値を返します。 |
resourceHost |
一致したリソースのHost値を返します。 |
resourcePost |
一致したリソースのPort値を返します。 |
resourceOperation |
一致したリソースのOperation値を返します。 |
resourceQueryString |
一致したリソースのQueryStringを返します。 |
resourceName |
一致したリソースの名前を返します。 |
resourceType |
一致したリソースのタイプを返します。 |
resourceURL |
一致したリソースのURLを返します。たとえば、’landingPage’がrequest.resourceURLの中にある場合、resourceURLの中にlandingPageがあると、条件はtrueに評価されます。 |
isIPinRange('start IP' ,'end IP') |
location.clientIPが指定された範囲内にある場合、trueに評価されます。次に例を示します。 location.isIPinRange('192.35.50.180','192.35.50.188') |
表22-27 ロケーション・コンテキスト・データ
属性名 | 説明 |
---|---|
locationMap |
すべてのロケーション・データ値のマップ。例: location.locationMap['CLIENT_IP'] == '10.1.23.4' |
clientIP |
クライアントIPアドレスを返します。例: location.clientIP.startswith('10.2') |
proxyIP |
プロキシIPアドレスを返します。 |
表22-28 セッション・コンテキスト・データ
属性名 | 説明 |
---|---|
sessionMap |
すべてのセッション・データ値のマップ。例: session.sessionMap['count'] > 2; |
count |
現在のユーザーのセッション数を返します。例: session.count > 2 |
表22-29 ユーザー・コンテキスト・データ
属性名 | 説明 |
---|---|
userMap |
すべてのユーザー・プロファイル・データのマップ。例: user.userMap['email'] == 'john.joe@example.com' |