Oracle® Fusion MiddlewareOracle Adaptive Access Manager開発者ガイド 11gリリース2 (11.1.2.3.0) E67356-01 |
|
前 |
次 |
Oracle Adaptive Access Manager ServerJava APIを使用して、JavaアプリケーションをOracle Adaptive Access Manager Serverに統合できます。この統合は、Java 1.4またはそれ以降で作成されたアプリケーションでサポートされています。
この章では、次の内容を説明します。
Java API統合を示す最新OAAMサンプル・アプリケーションは、My Oracle Supportからダウンロードできます。
Oracle Adaptive Access Managerの共有ライブラリは、Oracle Adaptive Access Managerとの統合に対応するJava SDKです。これは、統合されたアプリケーションがデプロイされるOracle WebLogic Serverインスタンスにデプロイし、ターゲットとする必要があります。Oracle WebLogic Serverインスタンスが、OAAMがデプロイされているのと同じWebLogic Serverドメインの一部であることを確認してください。
OAAM Webアプリケーションの共有ライブラリIAM_HOME
/oaam/oaam_libs/war/oaam_native_lib.war
をライブラリとしてデプロイします。
Oracle Adaptive Access Managerの共有ライブラリをWebアプリケーションで使用するには、WebLogicデプロイメント記述子ファイルweblogic.xml
に次のエントリを追加して、その共有ライブラリを参照する必要があります。
<library-ref> <library-name>oracle.oaam.libs</library-name> </library-ref>
OAAMエンタープライズ・アプリケーションの共有ライブラリ IAM_HOME
/oaam/oaam_libs/ear/oaam_native_lib.ear
をライブラリとしてデプロイします。
Oracle Adaptive Access Managerの共有ライブラリをエンタープライズ・アプリケーションで使用するには、WebLogicデプロイメント記述子ファイルweblogic-application.xml
に次のエントリを追加して、その共有ライブラリを参照する必要があります。
<library-ref> <library-name>oracle.oaam.libs</library-name> </library-ref>
統合プロセスの高レベルの手順は次のとおりです。
Weblogic Webアプリケーション(WAR
)またはエンタープライズ・アプリケーション(ear
)を作成します。
OAAM SDK共有ライブラリ(oracle.oaam.libs
)への参照をWebLogicデプロイメント記述子に追加します。
OAAM APIをコールするアプリケーションを実装します。
アプリケーションのJARファイルとその他のファイルを追加します。
アプリケーションをパッケージ化し、デプロイしてテストします。
この項では、In-Procメソッドを使用してOAAMを統合する方法について説明します。
OAAM共有ライブラリoracle.oaam.libs
への参照が設定済であることを確認してください。
Oracle Adaptive Access Managerの共有ライブラリをWebアプリケーションで使用するには、WebLogicデプロイメント記述子ファイルweblogic.xml
に次のエントリを追加して、その共有ライブラリを参照する必要があります。
<library-ref> <library-name>oracle.oaam.libs</library-name> </library-ref>
Oracle Adaptive Access Managerの共有ライブラリをエンタープライズ・アプリケーションで使用するには、WebLogicデプロイメント記述子ファイルweblogic-application.xml
に次のエントリを追加して、その共有ライブラリを参照する必要があります。
<library-ref> <library-name>oracle.oaam.libs</library-name> </library-ref>
Oracle Adaptive Access Managerのプロパティをオーバーライドしたり、Oracle Adaptive Access Managerの列挙を拡張するには、これらのプロパティと列挙をoaam_custom.properties
に追加して、そのファイルをネイティブWebアプリケーションのWEB-INF\classes
ディレクトリに配置します。
jdbc/OAAM_SERVER_DB_DS
というJNDI名のOAAMデータソースを設定して、それをOAAMデータベースにポイントします。
この項では、SOAPメソッドを使用してOAAMを統合する方法について説明します。SOAPサービス・ラッパーAPIの統合では、アプリケーションはWebサービスを使用してOracle Adaptive Access Managerと通信します。
初期設定の状態のOAAMでは、WebサービスがURL/oaam_server/services
に公開されています。OAAM 11g Release 2 (11.1.2.0.0)以降、OAAM Webサービスを保護するためのデフォルトのメカニズムでは、Oracle Web Services Manager (OWSM)ポリシーを使用します。この項では、認証(ユーザー名とパスワード・リクエストを使用するHTTP Basic認証)および認可(構成済のユーザー・グループにおけるユーザーのメンバーシップ)のOWSMポリシーの構成について説明します。認証では、渡されたユーザー資格証明が正しいかどうかがチェックされ、認可では、グループにおけるユーザーのメンバーシップ(WebLogic組込みユーザー・ストア内のユーザー/グループなど)に基づいて、リクエストされたリソースに対してユーザーがアクセスを許可されているかどうかがチェックされます。Oracle Web Services Manager (OWSM)ポリシーはOracle Enterprise Manager Fusion Middleware Controlを使用して、SOAP認証と認可を管理します。
OAAM Webサービスを保護するために実行する必要があるタスクの概要を次に示します。
表4-1 OAAM Webアクセスの保護
番号 | タスク | 情報 |
---|---|---|
1 |
Webサービスの認証を有効にします。 HTTP Basic認証を |
OAAM Webサービスは、Oracle Web Services Manager (OWSM)でポリシー 詳細は、第4.4.1項「Webサービスの認証」を参照してください。 |
2 |
有効なユーザー名とパスワードでユーザーを作成して、OAAM Webサービスにアクセスできるように構成するグループに割り当てます。 |
ユーザー名とパスワードを使用して、SOAP認証が実装されます。Webサービス/SOAPクライアントは、OAAM Webサービスとの正常な通信のために、ユーザー名とパスワードを送信する必要があります。 このユーザー名とパスワードは、アプリケーション・サーバーにアクセスできるユーザーに関連付けられている必要があります。そのユーザーがWebサービス上で操作を実行する権限を持つようにするには、そのユーザーを、認可ポリシーに関連付けられたグループに含める必要があります。 詳細は、第4.4.2項「ユーザーとグループの作成」を参照してください。 |
3 |
Webサービス認可を構成します。 |
Oracle Web Services Manager (OWSM)ポリシー 詳細は、第4.4.3項「Webサービス認可の構成」を参照してください。 |
4 |
Webサービスにセキュリティを設定します。 |
Webサービス/SOAPクライアントは、OAAM Webサービスとの正常な通信のために、ユーザー名とパスワードを送信する必要があります。 セキュリティのために、パスワードはキーストアに格納される必要があります。 注意: この手順は、OAAMサーバーでSOAP認証が無効の場合は不要です。 詳細は、第4.4.4項「SOAPユーザー・パスワードを保護するクライアント側のキーストアの設定」を参照してください。 |
5 |
他のSOAPプロパティを構成します。 |
詳細は、第4.4.5項「SOAP統合のためのSOAP関連プロパティのoaam_custom.propertiesへの設定」を参照してください。 |
OAAM Webサービスは、Oracle Web Services Manager (OWSM)でポリシーoracle/wss_http_token_service_policy
を使用することによって保護できます。wss_http_token_service_policy
ポリシーは認証を強制し、HTTPヘッダーの資格証明を使用してユーザーを認証します。SOAPリクエストは、構成済レルム(WebLogic組込みユーザー・ストアのユーザー)に対して認証(HTTP Basic認証)されます。
HTTP Basic認証を/oaam_server/services
に設定するためにOracle Web Services Manager (OWSM)のポリシーをセットアップするには、次の手順を実行します。
URLhttp://weblogic-admin-hostname:port/em
を使用して、Oracle Enterprise Manager Fusion Middleware Controlにログインします。
weblogic_domainでドメインを選択し、oaam_server_server1を選択して右クリックしてから「Webサービス」オプションを選択します。
「ポリシーのアタッチ」をクリックします。
OAAM Webサービスに対応するすべての行を選択して、「次へ」ボタンをクリックします。
SOAP認証を有効にするには、次の手順を実行します。
行oracle/wss_http_token_service_policyを選択します。
SOAP認証を無効にするには、次の手順を実行します。
行oracle/no_authentication_service_policyおよびoracle/no_authorization_service_policyを選択します。
「Next」ボタンをクリックします。
サーバーでSOAP Webサービス認証を無効にすると(デフォルトでは有効になっている)、クライアントでは、認証されていなくてもWebサービスを使用できます。
次のページで「アタッチ」ボタンをクリックします。
必要に応じてOAAMサーバーを再起動します。
この項で認証構成を実行すると、OAAM Webサービスは構成済レルムにあるすべての有効なユーザー名/パスワードからアクセスできるようになります。たとえば、認証に合格できるすべてのユーザー資格証明がOAAM Webサービスにアクセスできます。
ユーザー名とパスワードを使用して、SOAP認証が実装されます。このユーザー名とパスワードは、アプリケーション・サーバーにアクセスできるユーザーに関連付けられている必要があります。そのユーザーがWebサービス上で操作を実行する権限を持つようにするには、そのユーザーをOAAM Webサービスにアクセスできるグループに追加する必要があります。
この項では、次の手順について説明します。
グループを作成します。グループは、後で認可ポリシーに関連付けます。このドキュメントでは、URL /oaam_server/servicesにアクセスできるグループの例として、OAAM_WebServices_Groupを使用します。
OAAM_WebServices_Groupに追加するユーザーを作成します。
WebLogicデプロイメントでは、このSOAPユーザーをWebLogicセキュリティ・レルム内で格納して管理できます。
OAAMクライアントは、次のoaam_custom.properties
プロパティを使用してWebサービスを起動するときに、このユーザー名とパスワードを使用するように構成されています。
vcrypt.soap.auth.keystorePassword - Base64 encoded Password used to open the system_soap.keystore vcrypt.soap.auth.aliasPassword - Base64 encoded Password used to retrieve the key stored in the keystore vcrypt.soap.auth.username - Username of the SOAP user vcrypt.soap.auth.keystoreFile - Filename of the keystore (should be system_soap.keystore)
ユーザーとグループを作成するには、次の手順を実行します。
WebLogicコンソールを使用して、構成済レルム内にグループを作成します。このグループには、グループに認可ポリシーを関連付けるとOAAM Webサービスにアクセスできるようになるユーザーが含まれます。この例では、OAAM_WebServices_Group
グループが作成されます。
ユーザーを識別するための詳細およびユーザーのユーザー名とパスワードを指定してユーザーoaamsoap1
を作成します。
oaamsoap1
のグループ・メンバーシップを構成し、ユーザーoaamsoap1
をグループOAAM_WebServices_Group
と関連付けます。
Oracle Web Services Manager (OWSM)ポリシーoracle/binding_authorization_permitall_policy
を使用すると、OAAM Webサービスの認可を構成できます。binding_authorization_permitall_policy
ポリシーでは、SOAPバインド・レベルで認証されたユーザーに基づいて、リクエストに対して簡単な権限ベースの認可が実行されます。このポリシーにより、ユーザーが操作の実行権限を確実に持つようになります。このポリシーは、ユーザーが作成されている認証ポリシーの後に続ける必要があり、Webサービス・エンドポイントに添付できます。
OAAM_WebServices_Group
グループを認可ポリシーと関連付けます。
URLを使用して、Oracle Enterprise Manager Fusion Middleware Controlにログインします。
http://weblogic-admin-hostname:port/em
WebLogicドメインを展開します。
OAAMサーバー、Webサービス、およびポリシーをホストしているドメインを右クリックします。
oracle/binding_authorization_permitall_policyを選択します。
「編集」をクリックして、「設定」タブをクリックします。
「認証設定」から「選択したロール」を選択します。
「追加」(プラス記号)をクリックして、OAAM_WebServices_Group
グループを「追加対象として選択したロール」リストに移動し、「OK」をクリックします。グループは第4.4.2項「ユーザーとグループの作成」で作成されています。
「保存」をクリックしてポリシーを保存します。
前述のポリシー構成が予想どおりに動作することを確認するには、プロパティactive.protocol
をremote
に設定します。OAAMサーバーをホストするドメインに移動して、「Webサービス」、「プラットフォーム・ポリシー構成」、および「ポリシー・アクセッサ・プロパティ」を右クリックすると、プロパティのこの値をオンにできます。
認可ポリシーをWebサービス・エンドポイントに添付します。
注意: OAAMサーバーによってEnterprise Manager上に公開されているWebサービス・エンドポイントのリストを取得するには、Fusion Middleware Controlの「Identity and Access」に移動します。OAAMを展開してから、oaam_serverを展開し、「Webサービス」を右クリックします。
URLを使用して、Oracle Enterprise Manager Fusion Middleware Controlにログインします。
http://weblogic-admin-hostname:port/em
weblogic_domainでドメインを選択し、oaam_server_server1を選択して右クリックしてから「Webサービス」オプションを選択します。
「ポリシーのアタッチ」をクリックします。
OAAM Webサービスに対応するすべての行を選択して、「次へ」ボタンをクリックします。
行oracle/binding_authorization_permitall_policyを選択します。
「Next」ボタンをクリックします。
次のページで「アタッチ」ボタンをクリックします。
必要に応じてOAAMサーバーを再起動します。
Webサービス/SOAPクライアントは、OAAM Webサービスとの正常な通信のために、ユーザー名とパスワードを送信する必要があります。
セキュリティのために、パスワードはキーストアに格納される必要があります。
ネイティブ・クライアントWebサービスのセキュリティを設定するには:
$ORACLE_HOME
/oaam/cli
ディレクトリで、ファイル(soap_key.file
など)を作成し、それにHTTP認証ユーザー・パスワードを入力します。(OAAM Webサービス・グループのロール/グループに追加されたユーザーのパスワード)。
sample.config_3des_input.properties
をsoap_3des_input.properties
にコピーします。
cp sample.config_3des_input.properties soap_3des_input.properties
soap_3des_input.properties
をキーストア・パスワード、別名パスワードおよびパスワード・ファイルで更新します。
#This is the password for opening the keystore. keystorepasswd= #This is the password reading alias (key) in the keystore. For example, #Welcome1 keystorealiaspasswd= #File containing from key. Please note, keys in AES could be binary. #Also note algorithms like 3DES require minimum 24 characters in the key #keyFile=soap_key.file keyFile= keystorefilename=system_soap.keystore keystorealias=vcrypt.soap.call.passwd
ORACLE_MW_HOME
およびJAVA_HOME
とソースsetCliEnv.sh
を設定します。
キーストアを生成します。
Unix/Linuxの場合は、次を実行します。
$JAVA_EXE -Djava.security.policy=conf/jmx.policy -classpath $CLSPTH com.bharosa.vcrypt.common.util.KeyStoreUtil updateOrCreateKeyStore readFromFile=soap_3des_input.properties
Windowsの場合は、次を実行します。
genkeystore.cmd soap_3des_input.properties
KeyStore
コマンドが成功した場合は、次のような出力が表示されます。
updateOrCreateKeyStore done! Keystore file:system_soap.keystore,algorithm=DESede KeyStore Password=ZG92ZTEyMzQ= Alias Password=ZG92ZTEyMw==
キーストア・パスワードと画面に出力された別名パスワードを書き留めます。これらをoaam_custom.properties
に追加する必要があります。
次のプロパティをエンコードされたパスワード(手順5)および認証ユーザー名とともにoaam_custom.properties
に追加します。
OAAMクライアントは、次のoaam_custom.properties
プロパティを使用してWebサービスを起動するときに、このユーザー名とパスワードを使用するように構成されています。
vcrypt.soap.auth.keystorePassword - Base64 encoded keystore password used to open the system_soap.keystore (Java_keystore_password) vcrypt.soap.auth.aliasPassword - Base64 encoded password to the alias used to retrieve the key stored in the keystore (Keystore_alias_password) vcrypt.soap.auth.username - Username of the SOAP user configured for accessing the SOAP services (SOAP_User_name) vcrypt.soap.auth.keystoreFile - Filename of the keystore (should be system_soap.keystore)
system_soap.keystore
ファイルをソース・コード制御システムに保存します。このファイルを処理する際には、十分なセキュリティ対策を施してください。ファイルには重要なパスワード情報が含まれています。権限のある人員のみにこのファイルへの読取りアクセスが与えられていることを確認してください。このファイルを失うと、Oracle Adaptive Access Managerは暗号化されたデータのリカバリができなくなります。
system_soap.keystore
をapplication
/WEB-INF/classes
(ネイティブ・クライアント・デプロイメントのクラスパス)にコピーします。
soap_key.file
ファイルとsoap_3des_input.properties
ファイルを両方とも削除します。
次のプロパティを、ネイティブ・アプリケーションのoaam_custom.properties
に設定します。
SOAPクラスの指定
OAAM SOAPクライアントがWebLogicベースのSOAP実装を使用するように次のプロパティを設定します。
vcrypt.common.util.vcryptsoap.impl.classname=com.bharosa.vcrypt.common.impl.VCryptSOAPGenericImpl
異なるSOAP実装(たとえばAXISなど)の使用については、VCryptSOAP
のカスタマイズされた実装(VCryptSOAPGenericImpl
など)を準備および構成する必要があります。
SOAPサーバー側URLの指定
vcrypt.tracker.soap.url
プロパティを設定します。
vcrypt.tracker.soap.url=http://host-name:port/oaam_server/services
vcrypt.tracker.soap.url
設定によって、アプリケーションが通信するWebサービスの場所が指定されます。
次に例を示します。
vcrypt.tracker.soap.url=http://localhost:14300/oaam_server/services/
SOAPコール・タイムアウトの指定
vcrypt.soap.call.timeout
プロパティをミリ秒単位で設定します。
たとえば、次のようになります。
vcrypt.soap.call.timeout=10000
その他のプロパティ
vcrypt.tracker.impl.classname=
com.bharosa.vcrypt.tracker.impl.VCryptTrackerSOAPImpl
vcrypt.user.image.dirlist.property.name=bharosa.image.dirlist
bharosa.config.impl.classname=com.bharosa.common.util.BharosaConfigPropsImpl
bharosa.config.load.impl.classname=
com.bharosa.common.util.BharosaConfigLoadPropsImpl
vcrypt.tracker.soap.useSOAPServer=true
vcrypt.soap.disable=false
# Environment specific values need to be replaced below this line
bharosa.image.dirlist=absolute_folder_path_where_oaam_images_are_available
Default value is: ${oracle.oaam.home}/oaam_images
.
# If SOAP Authentication is enabled, then the following have to be set
# otherwise just set the property vcrypt.soap.auth=false
vcrypt.soap.auth=true
Oracle Enterprise Manager Fusion Middleware ControlからOracle Web Services Manager (OWSM)ポリシーを使用して、認証を有効化または無効化できます。
サーバーでSOAP Webサービス認証を無効化すると(デフォルトでは有効)、クライアントは認証されなくてもWebサービスを使用できます。
URL http://<host-name>:7001/em
とWebLogic管理ユーザー名およびパスワードを使用して、アイデンティティ管理ドメインのOracle Enterprise Manager Fusion Middleware Controlにログインします。
左側のメニューで「WebLogicドメイン」およびその下にあるOAAMドメインを展開して、oaam_server_server1を見つけます。
oaam_server_server1を右クリックして、「Webサービス」メニュー・オプションを選択します。
「Oracle Infrastructure Web Services」タブをクリックします。
ページの右上にある「ポリシーのアタッチ」リンクをクリックします。
次のページでOAAM Webサービスに関連する行をすべて選択し、「次」ボタンをクリックします。
行oracle/no_authentication_service_policyおよびoracle/no_authorization_service_policyを選択し、「次」ボタンをクリックします。
次のページで「アタッチ」ボタンをクリックします。
必要に応じてOAAMサーバーを再起動します。
VCryptResponse
には、処理のステータスに関する情報が含まれています。処理のステータスが成功(isSuccess
)であった場合に役立つ情報が含まれています。エラーが発生した場合は、エラー・コードも含まれます。また、その他のペイロード情報が拡張データ・マップの形式で含まれていることもあります。統合の要件に応じて、VCryptResponse
のこれらの機能が使用できます。
Oracle Adaptive Access Managerには、次の処理を行うAPIが用意されています。
クライアント・アプリケーションからの情報を収集および追跡する。
デバイスおよび場所情報を判別するために、ユーザー・ログイン情報、ユーザー・ログイン・ステータス、およびユーザー・セッションの各種属性を取得する。
トランザクション詳細を収集する。
すべての認証シナリオと標準フローの詳細は、第2章「Oracle Adaptive Access Managerのネイティブ統合」を参照してください。
注意: isElementInList()、getListElements()、およびupdateList()の各APIは、「アラート・グループ」リストの更新/アクションをサポートしていません。 |
addQuestionは、指定されたユーザーの新規の質問を追加します。
public boolean addQuestion(java.lang.String loginId, java.lang.String questionText, java.lang.String answerText)
authenticatePassword
は、パスワードを認証します。
public VCryptAuthResult authenticatePassword(java.lang.String loginId, java.lang.String password, int authSessionType, int clientType, java.lang.String clientVersion, java.lang.String ipAddress, int fingerPrintType, java.lang.String fingerPrint)
VCryptAuthResult
オブジェクトを返します
authenticateQuestion
は、質問または回答を認証します。
public VCryptAuthResult authenticateQuestion(java.lang.String loginId, java.lang.Long authSessionId, java.lang.String answer, java.lang.String ipAddress, int fingerPrintType, java.lang.String fingerPrint)
認証試行の結果を記述したVCryptAuthResult
を返します。
cancelAllTemporaryAllows
は、カスタマIDに設定されている一時許可をすべて取り消します。
public VCryptResponse cancelAllTemporatyAllows(String customerId);
clearSafeDeviceList
は、リクエストに関連付けられているユーザーのユーザー安全デバイス・リストを消去します。
public VCryptBooleanResponse clearSafeDeviceList(String requestId);
セッションIDはトランザクションの作成および更新に必要とされます。セッションIDを使用できない場合、createOAAMSession
APIをコールしてOAAMセッションを作成する必要があります。セッションIDをセッションから取得した後、CreateTransaction
APIをコールしてトランザクションを作成できます。
セッションを作成する場合は、createOAAMSession
リクエストで値を指定し、その後でAPIをコールします。
createOAAMSession(String requestId, Date requestTime, OAAMUserData user,
OAAMIPData ip, List<oaamdevicefingerprintdata> fingerprintDataList, OAAMSessionData sessionData)
表4-7 createOAAMSessionのパラメータ
パラメータ | 説明 |
---|---|
requestId |
requestIdはユーザー・セッションを識別します。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
requestTime |
リクエスト上の日付-時間スタンプ。移入されない場合はサーバーで生成されます。 |
user |
このセッションに関連付けられているユーザー・データ。 |
ip |
このセッションに関連付けられているIPアドレス・データ。 |
fingerprintDataList |
デバイス・フィンガープリントのリスト |
sessionData |
このセッションに関連付けられているセッション・データ。 |
CookieSetが含まれるVCryptObjectResponseが返されます。
createOrUpdateEntities
APIを使用すると、次のタスクを実行できます。
エンティティを作成および更新する。
エンティティ更新時に属性値を置換およびマージする。
public VCryptObjectResponse<VCryptObjectResponse<EntityHeader>[]> createOrUpdateEntities(EntityData[] entityRequestData,boolean isReplaceEntity, int commitBatchSize, String requestId);
表4-8 エンティティの作成または更新API
パラメータ | 説明 |
---|---|
entityRequestData |
EntityDataオブジェクトの配列です。EntityDataオブジェクトには、1つのエンティティの作成に必要な情報が含まれています。EntityData.javaの詳細は、Oracle Adaptive Access Manager Java APIリファレンスを参照してください。 |
isReplaceEntity |
エンティティの更新時に属性の置換またはマージを判別するためのフラグ。デフォルト値: |
commitBatchSize |
同時にコミットする必要のあるエンティティの数を判別します。デフォルトおよび最小値は |
requestId |
セッションを識別する値。この値はクライアントによって送信されます。クライアントがこの値を設定しない場合はOAAMで生成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
VCryptObjectResponse: |
エンティティが作成されなかった場合は、
|
セッションIDはトランザクションの作成に必要とされます。セッションIDを使用できない場合、createOAAMSession
APIをコールしてOAAMセッションを作成する必要があります。セッションIDをセッションから取得した後、createTransaction
APIをコールしてトランザクションを作成できます。
createTransactionは、トランザクションを新規に作成します。
public VCryptResponse createTransaction( TransactionCreateRequestData trxUpdData = new TransactionCreateRequestData(sessionId, requestTime, transactionDefKey, externalTransactionId, trxStatus, trxDataMap, analyzePatterns); response = VCryptTrackerUtil.getVCryptTrackerInstance().createTransaction(trxUpdData); TransactionResponse transResponse = response.getTransactionResponse(); Long transId = null; if (transResponse != null){ transId = transResponse.getTransactionId(); }
表4-9 createTransactionのパラメータと戻り値
パラメータ | 説明 |
---|---|
TransactionCreateRequestData |
トランザクションを作成するオブジェクト。検証に失敗した場合、例外 このオブジェクトの構造は次のとおりです。
|
VCryptResponse |
レスポンス・オブジェクト。 |
createUser
は、認証データベースにユーザーを作成します。
public VCryptAuthUser createUser (VCryptAuthUser user)
deleteQuestion
は、指定されたユーザーの質問を削除します。
public boolean deleteQuestion(java.lang.String loginId, java.lang.String question)
getActionCount
は、指定されたactionEnumId
のアクション数を構成済のアクション列挙から取得します。
public VCryptIntResponse getActionCount(String requestId, Sting customerId, Integer actionEnumId);
表4-12 getActionCountのパラメータ
パラメータ | 説明 |
---|---|
requestId |
リクエストID(エラーが発生したときにクライアントのリクエストをロギングおよびトレースするために使用)。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
customerId |
カスタマID。 |
actionEnumId |
|
注意: このAPIを使用するには、対応するアクションincrementCacheCounter プロパティをtrue に設定する必要があります。 |
getCaption
は、ユーザーのキャプションを取得します。
public java.lang.String getCaption(java.lang.String loginId)
generateOTP() APIは、OAAM JAVAおよびSOAP APIでは非推奨になりました。本番コードを作成する場合は、かわりにgetOTPCode() APIを使用してください。getOTPCode() APIの使用方法の詳細は、Oracle Adaptive Access Manager Java APIリファレンスを参照してください。
getUserDevicesはユーザーに関連付けられているデバイスを取得します。リクエストがNULLまたはrequest.userId
がNULLの場合、INVALID_DATA
のエラー・コードが返されます。request.status、request.fromIndex
またはrequest.toIndex
が欠落または無効である場合、SECURE
、0
および50
がそれぞれのデフォルトになります。request.userId
が有効なVTUser
レコードにマップしない場合、INVALID_DATA
のエラー・コードが返されます。その他のエラーについては、UNEXPECTED_ERROR
のエラー・コードが返されます。
getUserDevices(GetUserDevicesRequestData request)
SUCCESS
ではUserDevice
のリスト、ERROR
ではエラー・メッセージとともにGetUserDevicesResultData
が含まれるVCryptObjectResponse
を返します。
getUserDevicesの詳細は、Oracle Adaptive Access Manager Java APIリファレンスを参照してください。
getFinalAuthStatus
は、ユーザーの最終認証ステータスを返します。30日より古いステータスは使用できません。
public VCryptIntResponse getFinalAuthStatus(String requestId, String userId);
getImage
は、ユーザーのimagePath
を取得します。
public java.lang.String getImage(java.lang.String loginId)
getRulesData
は、指定されたセッションIDに対して実行されたすべてのルールを返し、トリガーされたルールに関する情報を提供します。
public VCryptSessionRuleData getRulesData(String requestId);
getSecretQuestion
は、ユーザーの機密質問を取得します。
public VCryptQuestion getSecretQuestion(java.lang.String loginId)
getSignOnQuestions
は、ユーザーに使用可能なすべての機密質問を取得します。
public VCryptQuestion getSignOnQuestions(java.lang.String loginId)
getUserByLoginId
は、指定されたカスタマおよびグループに対して、パスワードおよびPINを含まないユーザー詳細を返します。
public VCryptAuthUser getUserByLoginId(String loginId, String groupName);
handleTrackerRequest
は、フィンガープリント詳細を取得してデバイスを識別します。指定されたリクエスト時間のフィンガープリント詳細を取得できる場合もあり、過去のリクエスト時間にも対応できます。
public CookieSet handleTrackerRequest(String requestId, String remoteIPAddr, String remoteHost, String secureCookie, int secureClientType, String secureClientVersion, String digitalCookie, int digitalClientType, String digitalClientVersion, int fingerPrintType, String fingerPrint, int fingerPrintType2, String fingerPrint2); public CookieSet handleTrackerRequest(String requestId, Date requestTime, String remoteIPAddr, String remoteHost, String secureCookie, int secureClientType, String secureClientVersion, String digitalSigCookie, int digitalClientType, String digitalClientVersion, int fingerPrintType, String fingerPrint, int fingerPrintType2, String fingerPrint2);
返されたオブジェクトには、そのコンテンツにアクセスするファンクションがあります。これらを次に示します。
public String getFlashCookie() public String getSecureCookie() public String getRequestId() public VCryptResponse getVCryptResponse()
表4-21 handleTrackerRequestのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
remoteIPAddr |
リクエスト発生元のIPで、HTTPリクエストから抽出されます。 |
remoteHost |
リクエスト発生元のマシンのホスト名(オプション)。 |
secureCookie |
セキュアなCookie。ブラウザから受信した場合のみ渡されます。 |
secureClientType |
認証に使用されるクライアントのタイプを識別する列挙値。対応する列挙名は |
secureClientVersion |
クライアントのバージョン(オプション)。 |
digitalCookie |
デジタル署名Cookie。フラッシュCookieも使用できます。ブラウザにより送信された場合のみ渡されます。 |
digitalClientType |
使用されたフラッシュ・クライアントのタイプを指定するデジタル・クライアントのタイプ。指定されていない場合は、値0を使用します。 |
digitalClientVersion |
デジタル・クライアントのバージョン。フラッシュ・クライアントのバージョンも使用できます。 |
fingerPrintType |
有効値のリストについては、OAAM列挙
|
fingerPrint |
フィンガープリント。ブラウザの特性を記述している場合は、ヘッダーがこの文字列に解析されます。これはブラウザ・ヘッダー情報を表します。 |
fingerPrintType2 |
同じリクエストに複数のフィンガープリントがある場合に使用します。これはプロパティ・ファイルに定義されています(オプション)。 |
fingerPrint2 |
2番目のフィンガープリント値(オプション)。 |
requestTime |
リクエストが行われた時間。 |
handleTransactionLog
は、トランザクション詳細を取得します。
public VCryptResponse handleTransactionLog(String requestId, Map[] contextMap); public VCryptResponse handleTransactionLog(String requestId, Date requestTime, Map[] contextMap); public VCryptResponse handleTransactionLog(String requestId, Date requestTime,Integer status, Map[] contextMap);
表4-22 handleTransactionLogのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
requestTime |
リクエストが行われた時間。 |
contextMap |
|
status |
トランザクションのステータス。 |
IsDeviceMarkedSafe
は、リクエストに関連付けられているユーザー・デバイスが安全かどうかを示す値を返します。
public VCryptBooleanResponse IsDeviceMarkedSafe(String requestId);
markDeviceSafe
は、ユーザー・デバイスが安全であるとマークします。
public boolean markDeviceSafe(String requestId, boolean isSafe);
processPatternAnalysis
は、データ・パターン処理をトリガーします。
public VCryptResponse processPatternAnalysis(String requestId, long transactionId, int status, String transactionType);
表4-25 processPatternAnalysisのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
transactionId |
トランザクションの識別子。認証タイプのデータの場合、 |
status |
ユーザー定義列挙 |
transactionType |
トランザクションのタイプを示します。認証トランザクションの場合は、 |
ルール・エンジンはOAAMの一部であり、チェックポイントでポリシーを実施します。OAAMには、コール側のコンテキストに応じて結果を返す、ポリシーを評価するAPIが組み込まれています。
セッションIDはトランザクションの作成に必要とされます。セッションIDを使用できない場合、createOAAMSession
APIをコールしてOAAMセッションを作成する必要があります。セッションIDは、ログイン・セッションのすべてのAPIコールで必要です。
processRules
は、渡されたチェックポイントのポリシー・セットを処理します。
VCryptRulesResult ruleResult = VCryptTrackerUtil.getVCryptRulesEngineInstance().processRules( sessionId, transId, externalTransactionId, requestTime, runtimeList, contextDataMap);
processRules
はルール・エンジンに関連するメソッドをコールし、メソッドVCryptTrackerUtil.getVCryptRulesEngineInstance()
をコールすることによってルール・エンジンのインスタンスを取得します。
表4-26 processRulesのパラメータ
パラメータ | 説明 |
---|---|
sessionId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
transId |
トランザクション・セッションID。これは、トランザクション・セッションのすべてのAPIコールに必要なIDです。 |
externalTransactionId |
|
requestTime |
リクエストが行われた時間。 |
runtimeTypes |
評価されるチェックポイントのリスト。このリストのチェックポイントが個別に評価されます。runtimeTypesは、Integer型のシングルトン・リストです。 たとえば、トランザクション前チェックポイントを実行するには、次のリストを作成します。
|
contextDataMap |
コンテキスト・データを識別するキーと値のペアのリスト。このAPIの |
processRules()メソッドでの複数チェックポイントの実行に関する情報
チェックポイント評価の順序は、リスト内の順序に基づいています。OAAMルール・エンジンはチェックポイント・リストを反復して、一度に1つずつチェックポイントを評価します。
各チェックポイントの評価結果は、キーとしてCheckPointId
、値としてVCryptRulesResult
とともに、ResultMap
に格納されます。
さらに、ResultMap
はVCryptRulesResult
に設定されます。
VCryptRulesResult
が、processRules()
メソッドの結果として返されます。
チェックポイントの実行が失敗した場合、ResultMap
の対応するVCryptRulesResult
がその情報を取得しますが、他のチェックポイントの実行は影響を受けません。ただし、システム障害の場合は、processRules()
自体の結果にエラーの詳細が表示されます。
コール元が各チェックポイントの実行結果をフェッチしようとする前に、processRules()
メソッドの結果の成功ステータスをテストすることをお薦めします。
デバイスIDの取得
ルール・エンジンは、ルールの結果だけでなく、ユーザー・セッションと同等の内部識別子であるデバイスIDを返すことができます。
次のコード・サンプルで、デバイスIDの取得方法を説明します。
VCryptRulesResult rulesResult = new VCryptRulesEngineImpl().processRules(<params..>); If (!rulesResult.getVCryptResponse().isSuccess()) { Logger.error("Error running rules " + rulesResult.getVCryptResponse().getErrorMessage()); } Long deviceId = rulesResult.getDeviceId();
デバイスIDを取得する際に、次の点を確認してください。
Oracle Adaptive Access Managerのバージョンが10.1.4.5またはそれ以上である。
プロパティbharosa.tracker.send.devideId
がtrueに設定されていて、デバイスIDが取得可能である。
bharosa.tracker.send.deviceId=true
有効なチェックポイント
有効なチェックポイントのリストは、OAAMの列挙profile.type.enum
を参照してください。たとえば、profile.type.enum.preauth=1
は、認証前チェックポイントが数値1
によって指定されていることを示しています。
場所とデバイスのデータ
プロパティbharosa.tracker.sendLocationData=true
を設定した状態で、processRules
APIをコールしたときに、場所(都市名、州名、国名)とデバイスのデータが返されます。
VCryptRulesResult rulesResult = processRules(/*params*/); VCryptResponse response = rulesResult.getVCryptResponse(); If (response.isSuccess()) { String ipAddress = response.getExtendedMap (VCryptResponse.DATA_REMOTE_IP_ADDRESS) ; String deviceId= response.getExtendedMap(VCryptResponse.DATA_DEVICE_ID) ; // if interested in city, state, country String city = response.getExtendedMap(VCryptResponse.DATA_CITY_NAME) ; String state = response.getExtendedMap(VCryptResponse.DATA_STATE_NAME ; String country = response.getExtendedMap(VCryptResponse.DATA_COUNTRY_NAME) ; }
resetUser
は、登録、質問、イメージ、フレーズを含め、カスタマに設定されたすべてのプロファイルをリセットします。
public VCryptResponse resetUser(String customerId);
searchEntityByKey
APIを使用すると、キー属性に基づいてエンティティを検索できます。
public VCryptObjectResponse<EntityHeader> searchEntityByKey(EntityData entityData);
setCaption
は、指定されたユーザーのキャプションを新規に設定します。
public boolean setCaption(java.lang.String loginId, java.lang.String caption)
setImage
は、ユーザーのイメージを新規に設定します。
public boolean setImage(java.lang.String loginId, java.lang.String imagePath)
操作が成功したか、または失敗したかを返します。
setPassword
は、指定されたユーザーのパスワードを新規に設定します。
public boolean setPassword(java.lang.String loginId, java.lang.String password, int passwordStatus)
操作が成功したか、または失敗したかを返します。
setTemporaryAllow
は、ユーザーに一時許可を設定します。一時許可によって、最終ルール・アクションをオーバーライドできます。
public VCryptResponse setTemporaryAllow(String customerId, int tempAllowType, Date expirationDate);
ユーザーに関連付けられているデバイスを変更します。このメソッドはisSecure
フラグの切替えと、デバイスに対するわかりやすい名前の設定に使用できます。このメソッドは成功するか失敗するか、のいずれかです。いずれかのデバイスを更新できない場合、どのデバイスも更新されません。userId
がnull
である、または有効なVTUser
レコードにマップしない場合、INVALID_DATA
のエラー・コードが返されます。デバイスがnull
またはempty
の場合、INVALID_DATA
のエラー・コードが返されます。有効なVTUserDeviceMap
にマップしないvtUserMapId
がいずれかのデバイスにある場合、INVALID_DATA
のエラー・コードが返され、変更は行われません。指定されたユーザー以外のユーザーにいずれかのデバイスが関連付けられている場合、INVALID_DATA
のエラー・コードが返され、変更は行われません。デバイス配列のいずれかの要素がNULLの場合、これらは無視されてNULL以外の要素が更新されます。その他のエラーについては、UNEXPECTED_ERROR
のエラー・コードが返されます。
VCryptResponse setUserDevices(String userId, UserDevice[] devices)
SUCCESS
またはERROR
を(ERROR
の場合はエラー・メッセージとともに)示す、VCryptResponse
を返します。
setUserDevicesの詳細は、Oracle Adaptive Access Manager Java APIリファレンスを参照してください。
updateAuthStatus
はユーザー認証ステータスを更新し、必要に応じてパターン・データ処理をトリガーします。このメソッドは、ユーザー認証ステータスに変更が生じた場合にコールする必要があります。updateAuthStatus
をコールする前に、アプリケーションで必ずupdateLogをコールしてください。
認証ステータス値のリストは、ユーザー定義列挙auth.status.enum
で指定されます。アプリケーションでの必要に応じて、この列挙にアイテムを追加したり、この列挙からアイテムを削除したりできますが、この列挙の値のみを認証ステータスの識別に使用できます。
次のシナリオでは、ユーザー・ログイン(認証)ステータスの更新を処理する別の方法について説明します。
ログイン・ステータスをupdateLog
コールに渡します。このシナリオでは、updateAuthStatus
へのコールはまったく行われません。
ログイン・ステータスを設定する前にユーザーにログインを許可します。このシナリオでは、最初にupdateLog
コールでステータスpending
を渡し、次にログイン・データを処理し、さらにupdateAuthStatus
コールで適切なステータスを渡します。
アプリケーション・フローにユーザーへのチャレンジが含まれている場合は、まずステータスをpending
に設定し、その後で、回答に応じてステータスをsuccess
またはwrong_answer
にリセットします。
通常、ルール・エンジンの起動後にupdateAuthStatus
をコールする必要はありません。これは、エンジンに、ルール実行の一環として認証ステータスの設定が含まれているためです。
public VCryptResponse updateAuthStatus(String requestID, int resultStatus, int clientType, String clientVersion);
public VCryptResponse updateAuthStatus(String requestID, Date requestTime, int resultStatus, int clientType, String clientVersion);
public VCryptResponse updateAuthStatus(String requestID, int resultStatus, int clientType, String clientVersion, boolean analyzePatterns);
public VCryptResponse updateAuthStatus(String requestID, Date requestTime, int resultStatus, int clientType, String clientVersion boolean analyzePatterns);
表4-34 updateAuthStatusのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
requestTime |
リクエストが行われた時間。 |
resultStatus |
ユーザー定義列挙 |
clientType |
認証に使用されたクライアント・タイプを示す列挙値。失敗カウンタの自動増分が機能するには、クライアント・タイプを9に設定する必要があります(質問/回答)。 |
clientVersion |
クライアントのバージョン(オプション)。 |
analyzePatterns |
パターン処理を実行するかどうかを示すブール値です。値が |
updateLog
はユーザー・ログを更新し、必要に応じてCookieSetを作成します。
public CookieSet updateLog(String requestId, String remoteIPAddr, String remoteHost, String secureCookie, String digitalCookie, String groupId, String userId, String loginId, boolean isSecure, int result, int clientType, String clientVersion, int fingerPrintType, String fingerPrint, int digFingerPrintType, String digFingerPrint);
public CookieSet updateLog(String requestId, Date requestTime, String remoteIPAddr, String remoteHost, String secureCookie, String digitalCookie, String groupId, String userId, String loginId, boolean isSecure, int result, int clientType, String clientVersion, int fingerPrintType, String fingerPrint, int fingerPrintType2, String fingerPrint2);
表4-35 updateLogのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
remoteIPAddr |
リクエスト発生元のIPで、HTTPリクエストから抽出されます。 |
remoteHost |
リクエスト発生元のホスト名(オプション)。 |
secureCookie |
セキュアなCookie。ブラウザから受信した場合のみ渡されます。 |
digitalCookie |
デジタル署名Cookie。フラッシュCookieも使用できます。ブラウザにより送信された場合のみ渡されます。 |
groupId |
このユーザーが属するグループのID。 |
userId |
ユーザーID。これはユーザーの主IDキーです。無効なユーザーの場合はNULLになります。 |
loginId |
ユーザーがログインのために使用するID(必須)。 |
isSecure |
このノードがセキュアで登録可能であるかどうかを示すブール値。また、セキュアなデバイス(登録済デバイス)からログインが行われていることも示します。デバイスの概念がない場合は、falseに設定されます。 |
result |
ユーザー定義列挙 |
clientType |
認証に使用されたクライアント・タイプを示す列挙値。対応する列挙名はauth.client.type.enumです。 |
clientVersion |
クライアントのバージョン(オプション)。 |
fingerPrintType |
有効値のリストについては、OAAM列挙
|
fingerPrint |
フィンガープリント。ブラウザの特性を記述している場合は、ヘッダーがこの文字列に解析されます。これはブラウザ・ヘッダー情報を表します。 |
digFingerPrintType |
有効値のリストについては、OAAMの列挙
|
digFingerPrint |
デジタル・フィンガープリント。 |
requestTime |
リクエストが行われた時間。 |
fingerPrintType2 |
同じリクエストに複数のフィンガープリントがある場合に使用します。プロパティ・ファイルに定義されています(オプション)。 |
fingerPrint2 |
2番目のフィンガープリント値(オプション)。 |
セッションIDとトランザクションIDの両方がトランザクションの更新に必要とされます。セッションIDを使用できない場合、createOAAMSession
APIをコールしてOAAMセッションを作成する必要があります。セッションIDはcreateTransaction
APIによって必要とされます。updateTransaction
APIをコールしてトランザクションを更新するには、createTransaction
APIをコールしてトランザクションIDを作成する必要があります。
updateTransaction
は、以前に作成されたトランザクションを更新します。
TransactionUpdateRequestData trxUpdData = new TransactionUpdateRequestData(sessionId, requestTime, transactionId, new Integer(trxStatus), trxDataMap, Boolean.TRUE); response = VCryptTrackerUtil.getVCryptTrackerInstance().updateTransaction(trxUpdData);
表4-36 updateTransactionのパラメータと戻り値
パラメータ | 説明 |
---|---|
TransactionUpdateRequestData |
トランザクションを更新するオブジェクト。更新されるトランザクションのハンドルは、 このオブジェクトの構造は次のとおりです。
|
VCryptTrackerInstance |
レスポンス・オブジェクト。メソッド |
updateTransactionStatus
はトランザクション・ステータスを更新し、必要に応じてデータ・パターン処理をトリガーします。
public VCryptResponse updateTransactionStatus(String requestId, long transactionId, int status); public VCryptResponse updateTransactionStatus(String requestId, Date requestTime, long transactionId, int status); public VCryptResponse updateTransactionStatus(String requestId, long transactionId, int status, Map[] contextMap); public VCryptResponse updateTransactionStatus(String requestId, Date requestTime, long transactionId, int status, Map[] contextMap); public VCryptResponse updateTransactionStatus(String requestId, long transactionId, int status, boolean analyzePatterns); public VCryptResponse updateTransactionStatus(String requestId, Date requestTime, long transactionId, int status, Map[] contextMap, boolean analyzePatterns);
表4-37 updateTransactionStatusのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。requestIdが指定されない場合、OAAMサーバーで作成されます。ただし、requestIdが指定されてからOAAMサーバーでそれが見つからない場合は、エラーが返されます。 |
requestTime |
リクエストが行われた時間。 |
contextMap |
|
Status |
トランザクションのステータス。 |
transactionId |
更新するステータスを持つトランザクションのID。NULLの場合は、指定されたセッションで最後のトランザクションを使用します。 |
analyzePatterns |
パターン処理を実行するかどうかを示すブール値です。値としてtrueを渡すと、resultStatus値がsuccessの場合に、トランザクションに対してパターン処理が実行されます。 |