この章では、Oracle Adaptive Access ManagerのJava APIを使用してJavaアプリケーションをOracle Adaptive Access Managerサーバーと統合する方法について説明します。この統合は、Java 1.4またはそれ以降で作成されたアプリケーションでサポートされています。
この章の項目は次のとおりです。
Oracle Adaptive Access Managerの共有ライブラリは、Oracle Adaptive Access Managerとの統合に対応するJava SDKです。これは、統合されたアプリケーションがデプロイされるOracle WebLogic管理対象サーバーにデプロイし、ターゲットとする必要があります。Oracle WebLogic管理対象サーバーが、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には、インターネット上でWebサービスのリクエストとレスポンスを送受信する標準XML構造が用意されています。
SOAPサービスのユーザーを認証するには、ソース・チャネルを介して資格証明を提供します。SOAP認証は、Oracle Enterprise Manager Fusion Middleware Controlを通して、Oracle Web Services Manager(OWSM)のポリシーによって管理されます。
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)のポリシーをセットアップするには、次の手順を実行します。
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サーバーを再起動します。
SOAPユーザー・パスワードを保護するクライアント側のキーストア
Webサービス/SOAPクライアントは、OAAM Webサービスとの正常な通信のために、ユーザー名とパスワードを送信する必要があります。
ネイティブ・クライアントWebサービスのセキュリティを設定するには:
$ORACLE_HOME/oaam/cli
ディレクトリで、たとえばsoap_key.file
というファイルを作成し、その中にHTTP認証ユーザー・パスワードを入力します。(OAAMSOAPServicesGroup
ロール/グループに追加されたユーザーのパスワード)。
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 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
に追加する必要があります。
system_soap.keystore
ファイルをソース・コード管理システムに保存します。このファイルを処理する際には、十分なセキュリティ対策を施してください。ファイルには重要なパスワード情報が含まれています。権限のある人員のみにこのファイルへの読取りアクセスが与えられていることを確認してください。このファイルを失うと、Oracle Adaptive Access Managerは暗号化されたデータのリカバリができなくなります。
system_soap.keystore
をapplication/WEB-INF/classes
(ネイティブ・クライアント・デプロイメントのクラスパス)にコピーします。
soap_key.file
ファイルとsoap_3des_input.properties
ファイルを両方とも削除します。
次のプロパティをエンコードされたパスワード(手順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
次のプロパティを、ネイティブ・アプリケーションの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の詳細は、リリース11gの『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)
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 |
ユーザー定義列挙 |
appId |
アプリケーションに基づくプロパティの検索に使用されるアプリケーション識別子。アプリケーション固有のプロパティが必要でない場合は、空の文字列、NULLまたはデフォルトを渡すことができます。 |
getActionCountは、指定されたactionEnumId
のアクション数を構成済のアクション列挙から取得します。
public VCryptIntResponse getActionCount(String requestId, Sting customerId, Integer actionEnumId);
表4-12 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-20 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-24 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-25 processRulesのパラメータ
パラメータ | 説明 |
---|---|
sessionId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
transId |
トランザクション・セッションID。これは、トランザクション・セッションのすべてのAPIコールに必要なIDです。 |
externalTransactionId |
externalTransactionIdは、アプリケーション・トランザクションを対応するOAAMトランザクションに関連付けるために使用します。トランザクションの更新にも使用できます。 |
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-32 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-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 |
ユーザー定義列挙 |
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-34 updateTransactionのパラメータと戻り値
パラメータ | 説明 |
---|---|
TransactionUpdateRequestData |
トランザクションを更新するオブジェクト。更新されるトランザクションのハンドルは、createTransactionメソッドによって返されたトランザクションID、またはcreateTransactionメソッドに渡された外部トランザクションIDのいずれかです。検証に失敗した場合は、例外 このオブジェクトの構造は次のとおりです。
|
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-35 updateTransactionStatusのパラメータ
パラメータ | 説明 |
---|---|
requestId |
ログイン・セッションID。これは、ログイン・セッションのすべてのAPIコールに必要なIDです。 |
requestTime |
リクエストが行われた時間。 |
contextMap |
contextMapsの配列。1回のコールで複数のトランザクションが作成できます。配列のコンテキスト・マップごとにtransactionTypeキーがあると想定しています。 |
Status |
トランザクションのステータス。 |
transactionId |
更新するステータスを持つトランザクションのID。NULLの場合は、指定されたセッションで最後のトランザクションを使用します。 |
analyzePatterns |
パターン処理を実行するかどうかを示すブール値です。値としてtrueを渡すと、resultStatus値がsuccessの場合に、トランザクションに対してパターン処理が実行されます。 |