Oracle® Fusion Middleware Oracle Adaptive Access Manager開発者ガイド 11gリリース2 (11.1.2) B71697-03 |
|
前 |
次 |
Oracle Adaptive Access Manager Java APIを使用して、JavaアプリケーションをOracle Adaptive Access Manager Serverに統合できます。この統合は、Java 1.4またはそれ以降で作成されたアプリケーションでサポートされています。
この章では、次の内容を説明します。
Oracle Adaptive Access Managerの共有ライブラリは、Oracle Adaptive Access Managerとの統合に対応するJava SDKです。これは、統合されたアプリケーションがデプロイされるOracle WebLogic Serverインスタンスにデプロイし、ターゲットとする必要があります。Oracle WebLogic Serverインスタンスが、OAAMがデプロイされているのと同じWebLogic Serverドメインの一部であることを確認してください。
統合プロセスの高レベルの手順は次のとおりです。
Weblogic Webアプリケーション(WAR
)またはエンタープライズ・アプリケーション(ear
)を作成します。
OAAM SDK共有ライブラリ(oracle.oaam.libs
)への参照をWebLogicデプロイメント記述子に追加します。
OAAM APIをコールするアプリケーションを実装します。
アプリケーションのJARファイルとその他のファイルを追加します。
アプリケーションをパッケージ化し、デプロイしてテストします。
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>
Oracle Adaptive Access Managerのプロパティをオーバーライドしたり、Oracle Adaptive Access Managerの列挙を拡張するには、これらのプロパティと列挙をoaam_custom.properties
に追加して、そのファイルをネイティブWebアプリケーションのWEB-INF\classes
ディレクトリに配置します。
Oracle Adaptive Access Managerのプロパティのカスタマイズ、拡張またはオーバーライドの手順については、第7章「OAAM拡張共有ライブラリの使用によるOAAMのカスタマイズ」を参照してください。
この項では、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サービスは、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サービスにアクセスできるグループに追加する必要があります。
Webサービスを保護するには、URL: /oaam_server/services
にアクセス可能なグループに属する、有効な資格証明を持つユーザーを作成する必要があります。
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_WebServices_Groupというグループを作成します。
ユーザーを作成して、ステップ1で作成したグループとユーザーを関連付けます。
グループ・メンバーシップに対してユーザーを更新します。
Oracle Web Services Manager (OWSM)ポリシーoracle/binding_authorization_permitall_policy
を使用すると、OAAM Webサービスの認可を構成できます。binding_authorization_permitall_policy
ポリシーでは、SOAPバインド・レベルで認証されたユーザーに基づいて、リクエストに対して簡単な権限ベースの認可が実行されます。このポリシーにより、ユーザーが操作の実行権限を確実に持つようになります。このポリシーは、ユーザーが作成されている認証ポリシーの後に続ける必要があり、Webサービス・エンドポイントに添付できます。
URLを使用して、Oracle Enterprise Manager Fusion Middleware Controlにログインします。
http://weblogic-admin-hostname:port/em
WebLogicドメインを展開します。
OAAMサーバー、Webサービス、およびポリシーをホストしているドメインを右クリックします。
oracle/binding_authorization_permitall_policyを選択します。
「編集」をクリックして、「設定」タブをクリックします。
「認証設定」から「選択したロール」を選択します。
「追加」(プラス記号)をクリックして、グループ(ステップ2で作成済)を「追加対象として選択したロール」リストに移動し、「OK」をクリックします。
「保存」をクリックしてポリシーを保存します。
前述のポリシー構成が予想どおりに動作することを確認するには、プロパティ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 vcrypt.soap.auth.aliasPassword - Base64 encoded password to the alias used to retrieve the key stored in the keystore vcrypt.soap.auth.username - Username of the SOAP user configured for accessing the SOAP services 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
に設定します。
vcrypt.common.util.vcryptsoap.impl.classname= com.bharosa.vcrypt.common.impl.VCryptSOAPGenericImpl 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 vcrypt.soap.auth.keystoreFile=system_soap.keystore # Environment specific values need to be replaced below this line vcrypt.tracker.soap.url=http://host-name:port/oaam_server/services bharosa.image.dirlist=absolute_folder_path_where_oaam_images_are_available # 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 vcrypt.soap.auth.keystorePassword=Java_keystore_password vcrypt.soap.auth.aliasPassword=Keystore_alias_password vcrypt.soap.auth.username=SOAP_User_name
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);
デプロイメントでトランザクションのみがサポートされ、ユースケースのログイン・タイプがサポートされていない場合は、トランザクションAPIをコールする前に、次のcreateOAAMSession
APIを使用してOAAMセッションを作成する必要があります。
セッションを作成する場合は、createOAAMSession
リクエストで値を指定し、その後でAPIをコールします。
createOAAMSession(String requestId, Date requestTime, OAAMUserData user, OAAMIPData ip,
List<OAAMDeviceFingerprintData> cookieList, OAAMSessionData sessionData)
createOrUpdateEntities
APIを使用すると、次のタスクを実行できます。
エンティティを作成および更新する。
エンティティ更新時に属性値を置換およびマージする。
public VCryptObjectResponse<VCryptObjectResponse<EntityHeader>[]> createOrUpdateEntities(EntityData[] entityRequestData,boolean isReplaceEntity, int commitBatchSize, String requestId);
表4-7 エンティティの作成または更新API
パラメータ | 説明 |
---|---|
entityRequestData |
EntityDataオブジェクトの配列です。EntityDataオブジェクトには、1つのエンティティの作成に必要な情報が含まれています。EntityData.javaの詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。 |
isReplaceEntity |
エンティティの更新時に属性の置換またはマージを判別するためのフラグ。デフォルト値: |
commitBatchSize |
同時にコミットする必要のあるエンティティの数を判別します。デフォルトおよび最小値は |
requestId |
セッションを識別する値。この値はクライアントによって送信されます。クライアントでこの値が設定されていない場合は、ダミーの数値が生成されます。 |
VCryptObjectResponse: |
エンティティが作成されなかった場合は、
|
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-8 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-11 getActionCountのパラメータ
パラメータ | 説明 |
---|---|
requestId |
リクエストID(エラーが発生したときにクライアントのリクエストをロギングおよびトレースするために使用)。 |
customerId |
カスタマID。 |
actionEnumId |
|
注意: このAPIを使用するには、対応するアクション |
getCaption
は、ユーザーのキャプションを取得します。
public java.lang.String getCaption(java.lang.String loginId)
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-19 handleTrackerRequestのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
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);
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-23 processPatternAnalysisのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
transactionId |
トランザクションの識別子。認証タイプのデータの場合、 |
status |
ユーザー定義列挙 |
transactionType |
トランザクションのタイプを示します。認証トランザクションの場合は、 |
ルール・エンジンはOAAMの一部であり、チェックポイントでポリシーを実施します。OAAMには、コール側のコンテキストに応じて結果を返す、ポリシーを評価するAPIが組み込まれています。
processRules
は、渡されたチェックポイントのポリシー・セットを処理します。
VCryptRulesResult ruleResult = VCryptTrackerUtil.getVCryptRulesEngineInstance().processRules( sessionId, transId, externalTransactionId, requestTime, runtimeList, contextDataMap);
processRules
はルール・エンジンに関連するメソッドをコールし、メソッドVCryptTrackerUtil.getVCryptRulesEngineInstance()
をコールすることによってルール・エンジンのインスタンスを取得します。
表4-24 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);
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-31 updateAuthStatusのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
requestTime |
リクエストが行われた時間。 |
resultStatus |
ユーザー定義列挙 |
clientType |
認証に使用されたクライアント・タイプを示す列挙値。 |
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-32 updateLogのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
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番目のフィンガープリント値(オプション)。 |
updateTransaction
は、以前に作成されたトランザクションを更新します。
TransactionUpdateRequestData trxUpdData = new TransactionUpdateRequestData(sessionId, requestTime, transactionId, new Integer(trxStatus), trxDataMap, Boolean.TRUE); response = VCryptTrackerUtil.getVCryptTrackerInstance().updateTransaction(trxUpdData);
表4-33 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-34 updateTransactionStatusのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
requestTime |
リクエストが行われた時間。 |
contextMap |
|
Status |
トランザクションのステータス。 |
transactionId |
更新するステータスを持つトランザクションのID。NULLの場合は、指定されたセッションで最後のトランザクションを使用します。 |
analyzePatterns |
パターン処理を実行するかどうかを示すブール値です。値としてtrueを渡すと、resultStatus値がsuccessの場合に、トランザクションに対してパターン処理が実行されます。 |