ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Adaptive Access Manager開発者ガイド
11gリリース2(11.1.2)
B71697-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 OAAMとJavaアプリケーションとのネイティブ統合

この章では、Oracle Adaptive Access ManagerのJava APIを使用してJavaアプリケーションをOracle Adaptive Access Managerサーバーと統合する方法について説明します。この統合は、Java 1.4またはそれ以降で作成されたアプリケーションでサポートされています。

この章の項目は次のとおりです。

4.1 Oracle Adaptive Access Managerの共有ライブラリについて

Oracle Adaptive Access Managerの共有ライブラリは、Oracle Adaptive Access Managerとの統合に対応するJava SDKです。これは、統合されたアプリケーションがデプロイされるOracle WebLogic管理対象サーバーにデプロイし、ターゲットとする必要があります。Oracle WebLogic管理対象サーバーが、OAAMがデプロイされているWebLogic Serverドメインと同じドメインに含まれていることを確認してください。

4.1.1 統合プロセスの概要

統合プロセスの高レベルの手順は次のとおりです。

  1. Weblogic Webアプリケーション(WAR)またはエンタープライズ・アプリケーション(ear)を作成します。

  2. OAAM SDK共有ライブラリ(oracle.oaam.libs)への参照をWebLogicデプロイメント記述子に追加します。

  3. OAAM APIをコールするアプリケーションを実装します。

  4. アプリケーションのJARファイルとその他のファイルを追加します。

  5. アプリケーションをパッケージ化し、デプロイしてテストします。

4.1.2 WebアプリケーションでのOracle Adaptive Access Managerの共有ライブラリの使用

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>

4.1.3 エンタープライズ・アプリケーションでのOracle Adaptive Access Managerの共有ライブラリの使用

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>

4.1.4 Oracle Adaptive Access Managerのプロパティのカスタマイズ/拡張/オーバーライド

Oracle Adaptive Access Managerのプロパティをオーバーライドしたり、Oracle Adaptive Access Managerの列挙を拡張するには、これらのプロパティと列挙をoaam_custom.propertiesに追加して、そのファイルをネイティブWebアプリケーションのWEB-INF\classesフォルダに配置します。

Oracle Adaptive Access Managerのプロパティのカスタマイズ、拡張またはオーバーライドの手順については、第7章「OAAM拡張共有ライブラリの使用によるOAAMのカスタマイズ」を参照してください。

4.2 OAAM Java In-Proc統合

この項では、In-Procメソッドを使用してOAAMを統合する方法について説明します。

  1. 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>
    
  2. Oracle Adaptive Access Managerのプロパティをオーバーライドしたり、Oracle Adaptive Access Managerの列挙を拡張するには、これらのプロパティと列挙をoaam_custom.propertiesに追加して、そのファイルをネイティブWebアプリケーションのWEB-INF\classesフォルダに配置します。

  3. jdbc/OAAM_SERVER_DB_DSというJNDI名のOAAMデータソースを設定して、それをOAAMデータベースにポイントします。

4.3 OAAM SOAP統合

SOAPには、インターネット上でWebサービスのリクエストとレスポンスを送受信する標準XML構造が用意されています。

SOAPサービスのユーザーを認証するには、ソース・チャネルを介して資格証明を提供します。SOAP認証は、Oracle Enterprise Manager Fusion Middleware Controlを通して、Oracle Web Services Manager(OWSM)のポリシーによって管理されます。

4.3.1 SOAPセキュリティの設定

SOAP認証を使用するには(in-procのかわりにSOAPを通してOAAM APIをコール)、以降の各項に示す手順に従います。

SOAPユーザーをOracle WebLogicサーバーに作成します。

ユーザー名とパスワードを使用して、SOAP認証が実装されます。このユーザー名とパスワードは、アプリケーション・サーバーにアクセスできるユーザーに関連付けられている必要があります。WebLogicデプロイメントでは、このユーザーをWebLogicセキュリティ・レルム内で格納して管理できます。SOAP認証に使用するSOAPユーザーを作成し、そのユーザーを適切なグループOAAMSOAPServicesGroupに追加します。

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)

パラメータについては、この項の後半で説明します。

Oracle Web Services Manager(OWSM)のポリシーの設定

初期設定の状態のOAAMでは、WebサービスがURL/oaam_server/servicesに公開されています。このURLは、HTTP Basic認証で保護されています。SOAPユーザーはこのURLにアクセスできます。

HTTP Basic認証を/oaam_server/servicesに設定するためにOracle Web Services Manager(OWSM)のポリシーをセットアップするには、次の手順を実行します。

  1. URLhttp://weblogic-admin-hostname:port/emを使用して、Oracle Enterprise Manager Fusion Middleware Controlにログインします。

  2. weblogic_domainでドメインを選択し、oaam_server_server1を選択して右クリックしてから「Webサービス」オプションを選択します。

  3. 「ポリシーのアタッチ」をクリックします。

  4. OAAM Webサービスに対応するすべての行を選択して、「次へ」ボタンをクリックします。

  5. SOAP認証を有効にするには、次の手順を実行します。

    1. oracle/wss_http_token_service_policyを選択します。

  6. SOAP認証を無効にするには、次の手順を実行します。

    1. oracle/no_authentication_service_policyおよびoracle/no_authorization_service_policyを選択します。

    2. 「Next」ボタンをクリックします。

      サーバーでSOAP Webサービス認証を無効にすると(デフォルトでは有効になっている)、クライアントでは、認証されていなくてもWebサービスを使用できます。

  7. 次のページで「アタッチ」ボタンをクリックします。

  8. 必要に応じてOAAMサーバーを再起動します。

SOAPユーザー・パスワードを保護するクライアント側のキーストア

Webサービス/SOAPクライアントは、OAAM Webサービスとの正常な通信のために、ユーザー名とパスワードを送信する必要があります。

ネイティブ・クライアントWebサービスのセキュリティを設定するには:

  1. $ORACLE_HOME/oaam/cliディレクトリで、たとえばsoap_key.fileというファイルを作成し、その中にHTTP認証ユーザー・パスワードを入力します。(OAAMSOAPServicesGroupロール/グループに追加されたユーザーのパスワード)。

  2. sample.config_3des_input.propertiessoap_3des_input.propertiesにコピーします。

    cp sample.config_3des_input.properties soap_3des_input.properties
    
  3. soap_3des_input.propertiesをキーストア・パスワード、別名パスワードおよびパスワード・ファイルで更新します。

    #This is the password for opening the keystore. 
    keystorepasswd= 
     
    #This is the password reading alias (key) in the keystore 
    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
    
  4. ORACLE_MW_HOMEおよびJAVA_HOMEとソースsetCliEnv.shを設定します。

  5. キーストアを生成します。

    • 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==
    
  6. キーストア・パスワードと画面に出力された別名パスワードを書き留めます。これらをoaam_custom.propertiesに追加する必要があります。

  7. system_soap.keystoreファイルをソース・コード管理システムに保存します。このファイルを処理する際には、十分なセキュリティ対策を施してください。ファイルには重要なパスワード情報が含まれています。権限のある人員のみにこのファイルへの読取りアクセスが与えられていることを確認してください。このファイルを失うと、Oracle Adaptive Access Managerは暗号化されたデータのリカバリができなくなります。

  8. system_soap.keystoreapplication/WEB-INF/classes(ネイティブ・クライアント・デプロイメントのクラスパス)にコピーします。

  9. soap_key.fileファイルとsoap_3des_input.propertiesファイルを両方とも削除します。

  10. 次のプロパティをエンコードされたパスワード(手順5)および認証ユーザー名とともにoaam_custom.propertiesに追加します。

    vcrypt.soap.auth.keystorePassword=<base64 encoded keystore password>
    vcrypt.soap.auth.aliasPassword=<based64 encoded password to the alias>
    vcrypt.soap.auth.username=<user configured for accessing the soap services>
    vcrypt.soap.auth.keystoreFile=system_soap.keystore
    

4.3.2 SOAP関連プロパティのoaam_custom.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>

4.4 VCryptResponseについて

VCryptResponseには、処理のステータスに関する情報が含まれています。処理のステータスが成功(isSuccess)であった場合に役立つ情報が含まれています。エラーが発生した場合は、エラー・コードも含まれます。また、その他のペイロード情報が拡張データ・マップの形式で含まれていることもあります。統合の要件に応じて、VCryptResponseのこれらの機能が使用できます。

4.5 Oracle Adaptive Access Manager API

Oracle Adaptive Access Managerには、次の処理を行うAPIが用意されています。

すべての認証シナリオと標準フローの詳細は、第2章「Oracle Adaptive Access Managerのネイティブ統合」を参照してください。


注意:

isElementInList()、getListElements()、およびupdateList()の各APIは、「アラート・グループ」リストの更新/アクションをサポートしていません。


4.5.1 addQuestion

addQuestionは、指定されたユーザーの新規の質問を追加します。

public boolean addQuestion(java.lang.String loginId, java.lang.String questionText, java.lang.String answerText)

表4-1 addQuestion

パラメータ 説明

loginId

ユーザーがログインするために使用するID。

questionText

新規に追加される質問。このユーザーに同じ質問がすでに設定されている場合は、オーバーライドします。操作が成功したか、または失敗したかを返します。

answerText

質問に対する回答。


4.5.2 authenticatePassword

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オブジェクトを返します。

表4-2 authenticatePassword

パラメータ 説明

loginId

ユーザーがログインするために使用するID。

password

新規に設定するパスワード。

clientType

認証に使用されたクライアント・タイプを示す列挙値。

clientVersion

クライアントのバージョン(オプション)。

authSessionType

認証の理由。

ipAddress

ユーザー・デバイスのIPアドレス。

fingerPrintType

フィンガープリント処理のタイプ。

fingerPrint

Fingerprint


4.5.3 authenticateQuestion

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を返します。

表4-3 authenticateQuestion

パラメータ 説明

loginId

回答を認証するためにユーザーが使用するID。

authSessionId

認証セッションのID。

answer

ユーザーにより指定された回答。

ipAddress

ユーザー・デバイスのIPアドレス。

fingerPrintType

フィンガープリント処理のタイプ。

fingerPrint

Fingerprint


4.5.4 cancelAllTemporaryAllows

cancelAllTemporaryAllowsは、カスタマIDに設定されている一時許可をすべて取り消します。

public VCryptResponse cancelAllTemporatyAllows(String customerId);

表4-4 cancelAllTemporaryAllowsのパラメータ

パラメータ 説明

customerId

カスタマID。


4.5.5 clearSafeDeviceList

clearSafeDeviceListは、リクエストに関連付けられているユーザーのユーザー安全デバイス・リストを消去します。

public VCryptBooleanResponse clearSafeDeviceList(String requestId);

表4-5 clearSafeDeviceListのパラメータ

パラメータ 説明

requestId

ログイン・セッションのID。ログイン・セッションに関して、Bharosa APIのすべてのコールに同じIDを割り当てる必要があります。


4.5.6 createOAAMSession

デプロイメントでトランザクションのみがサポートされ、ユースケースのログイン・タイプがサポートされていない場合は、トランザクションAPIをコールする前に、次のcreateOAAMSessionAPIを使用してOAAMセッションを作成する必要があります。

セッションを作成する場合は、createOAAMSessionリクエストで値を指定し、その後でAPIをコールします。

createOAAMSession(String requestId, Date requestTime, OAAMUserData user, OAAMIPData ip, 
List<OAAMDeviceFingerprintData> cookieList, OAAMSessionData sessionData)

表4-6 createOAAMSessionのパラメータ

パラメータ 説明

requestId

requestIdはユーザー・セッションを識別します(必須)。

requestTime

requestTimeはリクエストの時間です。nullにできます。nullにした場合、サーバーでは現在時間が使用されます。

user

ユーザーはOAAMのユーザーです。

ip

ユーザー・セッションのIPアドレス。

cookieList

セッションに格納されているCookieのリスト。

sessionData

セッションからのデータ。


4.5.7 createOrUpdateEntities

createOrUpdateEntities APIを使用すると、次のタスクを実行できます。

  • エンティティを作成および更新する。

  • エンティティ更新時に属性値を置換およびマージする。

public VCryptObjectResponse<VCryptObjectResponse<EntityHeader>[]> createOrUpdateEntities(EntityData[] entityRequestData,boolean isReplaceEntity, int commitBatchSize, String requestId);

表4-7 エンティティの作成または更新API

パラメータ 説明

entityRequestData

EntityDataオブジェクトの配列です。EntityDataオブジェクトには、1つのエンティティの作成に必要な情報が含まれています。EntityData.javaの詳細は、リリース11gの『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。

isReplaceEntity

エンティティの更新時に属性の置換またはマージを判別するためのフラグ。デフォルト値: FALSE(マージを指定)。

commitBatchSize

同時にコミットする必要のあるエンティティの数を判別します。デフォルトおよび最小値は1です。

requestId

セッションを識別する値。この値はクライアントによって送信されます。クライアントでこの値が設定されていない場合は、ダミーの数値が生成されます。

VCryptObjectResponse:

SUCCESS: APIの実行に成功し(データベース・エラーまたは接続エラーがない)、少なくとも1つのエンティティが作成されます。

response.getObject()は、個別エンティティのVCryptObjectResponseが含まれている配列オブジェクトを返します。各レスポンス・オブジェクトには、SUCCESS時のEntityHeaderオブジェクトが含まれています。response.isSuccess()に対する問合せ。(SUCCESSの場合はtrueERRORの場合はfalse)。

エンティティが作成されなかった場合は、ERRORになります。

response.getObject()は、VCryptObjectResponseが含まれているオブジェクトを返します。各レスポンス・オブジェクトには、ERROR時のエラー・メッセージが含まれています。


4.5.8 createTransaction

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

トランザクションを新規に作成するオブジェクト。検証に失敗した場合、例外BharosaExceptionをスローします。

このオブジェクトの構造は次のとおりです。

  • sessionIDは、ユーザー・セッションを識別します(必須)。

  • requestTimeはリクエストの時間です。nullにできます。nullにした場合、サーバーでは現在時間が使用されます。

  • transactionDefKeyはトランザクション定義のキーです。トランザクション定義の作成に使用します(必須)。

  • externalTransactionIdは、アプリケーション・トランザクションを対応するOAAMトランザクションに関連付けるために使用します。トランザクションの更新にも使用できます。

  • trxStatusはトランザクション・ステータスで、NULLにできます。対応する列挙名はtracker.transaction.status.enumです。

  • trxDataMapは、キーと値のペアのマップです。このマップのキーは、トランザクション定義の関連ソース・データの内部IDと完全に一致する必要があります。値は、常にjavaのString値になります。値がDate値の場合は、書式yyyy-MM-dd'T'HH:mm:ss.SSSzで表示する必要があります。

  • analyzePatterns: パターン処理を実行するかどうかを示すブール値です。値がtrueとして渡された場合、resultStatusの値がsuccessであれば、トランザクションに対してパターン処理が実行されます。

VCryptResponse

レスポンス・オブジェクト。isSuccess()を確認した後で、メソッドgetTransactionResponse()を使用してトランザクションIDを取得してください。


4.5.9 createUser

createUserは、認証データベースにユーザーを作成します。

public VCryptAuthUser createUser (VCryptAuthUser user) 

表4-9 createUser

パラメータ 説明

user

認証ユーザー。新規に作成されたAuthUserを返します。


4.5.10 deleteQuestion

deleteQuestionは、指定されたユーザーの質問を削除します。

public boolean deleteQuestion(java.lang.String loginId, java.lang.String question)  

表4-10 deleteQuestion

パラメータ 説明

loginId

ユーザー・ログインID。

question

削除対象の質問。操作が成功したか、または失敗したかを返します。


4.5.11 generateOTP

VcryptTrackerImpl::generateOTPは、次のプロパティに基づいてOTPコードを返します(返されたコードの長さとOTPコードの作成に使用する文字を判別するため)。

bharosa.uio.default.otp.generate.code.length

bharosa.uio.default.otp.generate.code.characters

API用のサンプル・コードは、Oracle by Exampleで提供されているOAAMのサンプル・アプリケーションにあります。

(String requestId, String challengeType, String appId)

表4-11 generateOTP

パラメータ 説明

requestId

OAAMのリクエストID。

challengeType

ユーザー定義列挙bharosa.uio.default.challenge.type.enumによって構成されているOAAMのチャレンジ・タイプ。チャレンジ・タイプの構成の詳細は、第16.7項「チャレンジ・タイプの作業を実行するSMSプロセッサの登録」を参照してください。

appId

アプリケーションに基づくプロパティの検索に使用されるアプリケーション識別子。アプリケーション固有のプロパティが必要でない場合は、空の文字列、NULLまたはデフォルトを渡すことができます。


4.5.12 getActionCount

getActionCountは、指定されたactionEnumIdのアクション数を構成済のアクション列挙から取得します。

public VCryptIntResponse getActionCount(String requestId, Sting customerId, Integer actionEnumId);

表4-12 getActionCountのパラメータ

パラメータ 説明

requestId

リクエストID(エラーが発生したときにクライアントのリクエストをロギングおよびトレースするために使用)。

customerId

カスタマID。

actionEnumId

actionEnumを識別する整数(必須)。対応する列挙名はrule.action.enumです。



注意:

このAPIを使用するには、対応するアクションincrementCacheCounterプロパティをtrueに設定する必要があります。


4.5.13 getCaption

getCaptionは、ユーザーのキャプションを取得します。

public java.lang.String getCaption(java.lang.String loginId)

表4-13 getCaption

パラメータ 説明

loginId

ユーザーのログインID。キャプション文字列を返します。


4.5.14 getFinalAuthStatus

getFinalAuthStatusは、ユーザーの最終認証ステータスを返します。30日より古いステータスは使用できません。

public VCryptIntResponse getFinalAuthStatus(String requestId, String userId);

表4-14 getFinalAuthStatusのパラメータ

パラメータ 説明

requestId

リクエストID(エラーが発生したときにクライアントのリクエストをロギングおよびトレースするために使用)。

userId

ユーザーを一意に識別するID。NULLにできません。


4.5.15 getImage

getImageは、ユーザーのimagePathを取得します。

public java.lang.String getImage(java.lang.String loginId)

表4-15 getImage

パラメータ 説明

loginId

ユーザーのログインID。イメージへのパスを返します。


4.5.16 getRulesData

getRulesDataは、指定されたセッションIDに対して実行されたすべてのルールを返し、トリガーされたルールに関する情報を提供します。

public VCryptSessionRuleData getRulesData(String requestId);

表4-16 getRulesDataのパラメータ

パラメータ 説明

requestId

リクエストID(エラーが発生したときにクライアントのリクエストをロギングおよびトレースするために使用)。


4.5.17 getSecretQuestion

getSecretQuestionは、ユーザーの機密質問を取得します。

public VCryptQuestion getSecretQuestion(java.lang.String loginId) 

表4-17 getSecretQuestion

パラメータ 説明

loginId

認証するユーザーのログインID。問い合せる質問が含まれているオブジェクトを返します。


4.5.18 getSignOnQuestions

getSignOnQuestionsは、ユーザーに使用可能なすべての機密質問を取得します。

public VCryptQuestion getSignOnQuestions(java.lang.String loginId)   

表4-18 getSignOnQuestions

パラメータ 説明

loginId

認証するユーザーのログインID。問い合せる質問が含まれている2次元配列オブジェクトを返します。1次元はユーザーに表示する(構成可能な)質問セットの数を表し、2次元は各質問セットの質問数を表します。


4.5.19 getUserByLoginId

getUserByLoginIdは、指定されたカスタマおよびグループに対して、パスワードおよびPINを含まないユーザー詳細を返します。

public VCryptAuthUser getUserByLoginId(String loginId, String groupName);

表4-19 getUserByLoginId

パラメータ 説明

loginId

ユーザーがログインするために使用するID。

groupName

グループ名。


4.5.20 handleTrackerRequest

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-20 handleTrackerRequestのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

remoteIPAddr

リクエスト発生元のIPで、HTTPリクエストから抽出されます。

remoteHost

リクエスト発生元のマシンのホスト名(オプション)。

secureCookie

セキュアなCookie。ブラウザから受信した場合のみ渡されます。

secureClientType

認証に使用されるクライアントのタイプを識別する列挙値。対応する列挙名はauth.client.type.enumです。

secureClientVersion

クライアントのバージョン(オプション)。

digitalCookie

デジタル署名Cookie。フラッシュCookieも使用できます。ブラウザにより送信された場合のみ渡されます。

digitalClientType

使用されたフラッシュ・クライアントのタイプを指定するデジタル・クライアントのタイプ。指定されていない場合は、値0を使用します。

digitalClientVersion

デジタル・クライアントのバージョン。フラッシュ・クライアントのバージョンも使用できます。

fingerPrintType

有効値のリストについては、OAAM列挙vcrypt.fingerprint.type.enumを参照してください。現在、列挙には次の値が設定されています。

  • ブラウザ=1

  • フラッシュ=2

fingerPrintTypeの値として1(ブラウザ用)を使用することをお薦めします。このパラメータは、ブラウザのフィンガープリント・タイプに対応しているためです。

fingerPrint

フィンガープリント。ブラウザの特性を記述している場合は、ヘッダーがこの文字列に解析されます。これはブラウザ・ヘッダー情報を表します。

fingerPrintType2

同じリクエストに複数のフィンガープリントがある場合に使用します。これはプロパティ・ファイルに定義されています(オプション)。

fingerPrint2

2番目のフィンガープリント値(オプション)。

requestTime

リクエストが行われた時間。


4.5.21 handleTransactionLog

handleTransactionLogは、トランザクション詳細を取得します。


注意:

10.1.4.5.1では非推奨。かわりに、メソッドcreateTransactionを使用してください。


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-21 handleTransactionLogのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

requestTime

リクエストが行われた時間。

contextMap

contextMapsの配列。1回のコールで複数のトランザクションを作成できます。配列のコンテキスト・マップごとにtransactionTypeキーがあると想定しています。

status

トランザクションのステータス。


4.5.22 IsDeviceMarkedSafe

IsDeviceMarkedSafeは、リクエストに関連付けられているユーザー・デバイスが安全かどうかを示す値を返します。

public VCryptBooleanResponse IsDeviceMarkedSafe(String requestId);

表4-22 IsDeviceMarkedSafeのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。


4.5.23 markDeviceSafe

markDeviceSafeは、ユーザー・デバイスが安全であるとマークします。

public boolean markDeviceSafe(String requestId, boolean isSafe);

表4-23 markDeviceSafeのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

isSafe

このユーザー・デバイスが安全かどうかを示します。


4.5.24 processPatternAnalysis

processPatternAnalysis は、データ・パターン処理をトリガーします。

public VCryptResponse processPatternAnalysis(String requestId, 
                                             long transactionId, 
                                             int status,
                                             String transactionType);

表4-24 processPatternAnalysisのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

transactionId

トランザクションの識別子。データの認証タイプの場合、これは無視されます。(NULLとして渡すことができます)。トランザクション・データのパターン処理の場合、このパラメータは必須です。

status

ユーザー定義列挙auth.status.enumの値。ステータスの値が列挙のSuccess値に対応する値である場合は、パターン分析が実行されます。そうでない場合は、実行されません。

transactionType

トランザクションのタイプを示します。認証トランザクションの場合は、authである必要があります。その他のトランザクション・タイプの値(bill_paymentなど)はカスタマイズできます。


4.5.25 processRules

ルール・エンジンはOAAMの一部であり、チェックポイントでポリシーを実施します。OAAMには、コール側のコンテキストに応じて結果を返す、ポリシーを評価するAPIが組み込まれています。

processRules は、渡されたチェックポイントのポリシー・セットを処理します。

          VCryptRulesResult ruleResult =
            VCryptTrackerUtil.getVCryptRulesEngineInstance().processRules(
                                           sessionId,
                                           transId, 
                                           externalTransactionId, 
                                           requestTime,
                                           runtimeList,
                                           contextDataMap);

processRulesはルール・エンジンに関連するメソッドをコールし、メソッドVCryptTrackerUtil.getVCryptRulesEngineInstance()をコールすることによってルール・エンジンのインスタンスを取得します。

表4-25 processRulesのパラメータ

パラメータ 説明

sessionId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

transId

トランザクション・セッションID。これは、トランザクション・セッションのすべてのAPIコールに必要なIDです。

externalTransactionId

externalTransactionIdは、アプリケーション・トランザクションを対応するOAAMトランザクションに関連付けるために使用します。トランザクションの更新にも使用できます。

requestTime

リクエストが行われた時間。

runtimeTypes

評価されるチェックポイントのリスト。このリストのチェックポイントが個別に評価されます。runtimeTypesは、Integer型のシングルトン・リストです。

たとえば、トランザクション前チェックポイントを実行するには、次のリストを作成します。

List PRE_TRANSACTION_RUNTIME_LIST = Collections.singletonList(new Integer(1));

contextDataMap

コンテキスト・データを識別するキーと値のペアのリスト。このAPIのcontextDataMapは、ルール処理に必要な追加パラメータをすべて提供します。たとえば、セッション中にIPが変更されたかどうかを検証するために、Process Rules APIのcontextDataMapにIPを指定すると、OAAMでは新規IPを、作成/更新トランザクション中に使用された元のIPと比較できます。


processRules()メソッドでの複数チェックポイントの実行に関する情報

  1. チェックポイント評価の順序は、リスト内の順序に基づいています。OAAMルール・エンジンはチェックポイント・リストを反復して、一度に1つずつチェックポイントを評価します。

  2. 各チェックポイントの評価結果は、キーとしてCheckPointId、値としてVCryptRulesResultとともに、ResultMapに格納されます。

  3. さらに、ResultMapVCryptRulesResultに設定されます。

  4. VCryptRulesResultが、processRules()メソッドの結果として返されます。

  5. チェックポイントの実行が失敗した場合、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) ;
}

4.5.26 resetUser

resetUserは、登録、質問、イメージ、フレーズを含め、カスタマに設定されたすべてのプロファイルをリセットします。

public VCryptResponse resetUser(String customerId);

表4-26 resetUserのパラメータ

パラメータ 説明

customerId

カスタマID。


4.5.27 searchEntityByKey

searchEntityByKey APIを使用すると、キー属性に基づいてエンティティを検索できます。

public VCryptObjectResponse<EntityHeader> searchEntityByKey(EntityData entityData);

表4-27 searchEntityByKey

パラメータ 説明

entityData

IDスキームに基づいて検索されるエンティティの主キー属性のキーと値が含まれている、entityNameおよびentityDataMapを持つEntityDataオブジェクト。

VCryptObjectResponse

SUCCESS時のエンティティ・オブジェクトであるEntityHeaderオブジェクト、またはERROR時のerrorメッセージが含まれています。


4.5.28 setCaption

setCaptionは、指定されたユーザーのキャプションを新規に設定します。

public boolean setCaption(java.lang.String loginId, java.lang.String caption)

表4-28 setCaption

パラメータ 説明

loginId

ユーザーのログインID。

caption

新規に設定するキャプション。操作が成功したか、または失敗したかを返します。


4.5.29 setImage

setImageは、ユーザーのイメージを新規に設定します。

public boolean setImage(java.lang.String loginId, java.lang.String imagePath)

操作が成功したか、または失敗したかを返します。

表4-29 setImage

パラメータ 説明

loginId

ユーザーのログインID。

imagePath

イメージ・ファイルへのパス。


4.5.30 setPassword

setPasswordは、指定されたユーザーのパスワードを新規に設定します。

public boolean setPassword(java.lang.String loginId, java.lang.String password, int passwordStatus)

操作が成功したか、または失敗したかを返します。

表4-30 setPassword

パラメータ 説明

loginId

ユーザーのログインID。

password

新規に設定するパスワード。

passwordStatus

パスワードのステータス


4.5.31 setTemporaryAllow

setTemporaryAllowは、ユーザーに一時許可を設定します。一時許可によって、最終ルール・アクションをオーバーライドできます。

public VCryptResponse setTemporaryAllow(String customerId, int tempAllowType, Date expirationDate);

表4-31 setTemporaryAllowのパラメータ

パラメータ 説明

customerId

カスタマID。

tempAllowType

一時許可のタイプ。このタイプのユーザー定義列挙はcustomercare.case.tempallow.level.enumです。

expirationDate

tempAllowTypeがusersetの場合は有効期限。それ以外の場合はNULLまたは空。


4.5.32 updateAuthStatus

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-32 updateAuthStatusのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

requestTime

リクエストが行われた時間。

resultStatus

ユーザー定義列挙auth.status.enumの値。

clientType

認証に使用されたクライアント・タイプを示す列挙値。

clientVersion

クライアントのバージョン(オプション)。

analyzePatterns

パターン処理を実行するかどうかを示すブール値です。値がtrueとして渡されると、resultStatusの値がsuccessの場合に、トランザクションに対してパターン処理が実行されます。


4.5.33 updateLog

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-33 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

ユーザー定義列挙auth.status.enumの値。

clientType

認証に使用されたクライアント・タイプを示す列挙値。対応する列挙名はauth.client.type.enumです。

clientVersion

クライアントのバージョン(オプション)。

fingerPrintType

有効値のリストについては、OAAM列挙vcrypt.fingerprint.type.enumを参照してください。現在、列挙には次の値が設定されています。

  • ブラウザ=1

  • フラッシュ=2

fingerPrintTypeの値として1(ブラウザ用)を使用することをお薦めします。このパラメータは、ブラウザのフィンガープリント・タイプに対応しているためです。

fingerPrint

フィンガープリント。ブラウザの特性を記述している場合は、ヘッダーがこの文字列に解析されます。これはブラウザ・ヘッダー情報を表します。

digFingerPrintType

有効値のリストについては、OAAMの列挙vcrypt.fingerprint.type.enumを参照してください。現在、列挙には次の値が設定されています。

  • ブラウザ=1

  • フラッシュ=2

digFingerPrintTypeの値として2(フラッシュ用)を使用することをお薦めします。このパラメータはフラッシュのフィンガープリント・タイプに対応しているためです。

digFingerPrint

デジタル・フィンガープリント。

requestTime

リクエストが行われた時間。

fingerPrintType2

同じリクエストに複数のフィンガープリントがある場合に使用します。プロパティ・ファイルに定義されています(オプション)。

fingerPrint2

2番目のフィンガープリント値(オプション)。


4.5.34 updateTransaction

updateTransactionは、以前に作成されたトランザクションを更新します。

      TransactionUpdateRequestData trxUpdData =
                new TransactionUpdateRequestData(sessionId,
                                                 requestTime,
                                                 transactionId,
                                                 new Integer(trxStatus),
                                                 trxDataMap,
                                                 Boolean.TRUE);
            response =
            VCryptTrackerUtil.getVCryptTrackerInstance().updateTransaction(trxUpdData);
    

表4-34 updateTransactionのパラメータと戻り値

パラメータ 説明

TransactionUpdateRequestData

トランザクションを更新するオブジェクト。更新されるトランザクションのハンドルは、createTransactionメソッドによって返されたトランザクションID、またはcreateTransactionメソッドに渡された外部トランザクションIDのいずれかです。検証に失敗した場合は、例外BharosaExceptionが発生します。

このオブジェクトの構造は次のとおりです。

  • sessionIdはユーザー・セッションを識別します(必須)。

  • requestTime: リクエストの時間です。nullにできます。nullにした場合、サーバーでは現在時間が使用されます。

  • transactionIdは、createTransactionに対する以前のコールによって返されたIDです。

  • trxStatusは、トランザクションのステータスです。指定可能な値は次のとおりです。

    • success=1

    • block=2

    • reject=3

    • wrong_answer=4

    • pending=99

  • trxDataMapは、キーと値のペアのマップです。このマップのキーは、トランザクション定義の関連するソース・データの内部IDと完全に一致する必要があります。値は、常にJavaのString値になります。値がDate値の場合は、書式yyyy-MM-dd'T'HH:mm:ss.SSSzで表示する必要があります。

VCryptTrackerInstance

レスポンス・オブジェクト。メソッドgetVCryptTrackerInstance()でトランザクションIDを取得する前に、isSuccess()を必ず確認してください。


4.5.35 updateTransactionStatus

updateTransactionStatusはトランザクション・ステータスを更新し、必要に応じてデータ・パターン処理をトリガーします。


注意:

10.1.4.5.1では非推奨。かわりに、メソッドupdateTransactionを使用してください。


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-35 updateTransactionStatusのパラメータ

パラメータ 説明

requestId

ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。

requestTime

リクエストが行われた時間。

contextMap

contextMapsの配列。1回のコールで複数のトランザクションが作成できます。配列のコンテキスト・マップごとにtransactionTypeキーがあると想定しています。

Status

トランザクションのステータス。

transactionId

更新するステータスを持つトランザクションのID。NULLの場合は、指定されたセッションで最後のトランザクションを使用します。

analyzePatterns

パターン処理を実行するかどうかを示すブール値です。値としてtrueを渡すと、resultStatus値がsuccessの場合に、トランザクションに対してパターン処理が実行されます。