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

前
 
次
 

3 ネイティブ.NETアプリケーションの統合

Oracle Adaptive Access Managerが提供する.NET APIを使用して、ASP.NETアプリケーションをOracle Adaptive Access Managerと統合できます。

この章では、OAAM .NET APIを使用してASP .NETアプリケーションを統合する方法について説明します。また、各種のOAAM機能を基本的なWebアプリケーションに統合する方法を示すサンプル・アプリケーションについても説明します。

この章は、次の項で構成されています。

3.1 概要

ASP.NETは、プログラマが動的なWebサイト、WebアプリケーションおよびWebサービスを構築できるWebアプリケーション・フレームワークです。OAAMには、OAAM .NET開発キット(SDK)が用意されています。OAAM .NET SDKは、ASP.NETアプリケーションとOAAMとの統合に使用します。その中のOAAM .NET APIは、OAAM .NETライブラリ、OAAMサンプル.NETアプリケーション、OAAMフラッシュ・ムービー・ページ(デバイス識別でフィンガープリントの収集に使用される)、および.NETのネイティブ統合に必要なその他のファイルによって公開されています。任意のASP.NET言語で作成されているASP.NETアプリケーションでは、OAAM .NET APIを使用してOracle Adaptive Access Managerをコールできます。

OAAM .NET APIは、図3-1で説明するように、SOAP(Simple Object Access Protocol)を使用してOAAMサーバーと通信します。SOAPは、コンピュータ・ネットワーク内のWebサービスの実装において構造化された情報を交換するためのプロトコル仕様です。

図3-1 .NETアプリケーション

.NETAPIを使用するOAAM統合が示されています。

3.2 Oracle Adaptive Access Managerの.NET SDK

OAAM .NET SDKは、$ORACLE_HOME/oaam/oaam_libs/dotNet/oaam_native_dot_net.zipにパッケージ化されています。

OAAM機能を有効化するサンプル.NETアプリケーションでは、SDKパッケージ内のOAAM .NET APIの統合が必要です。開発者は、アーカイブのコンテンツをWebアプリケーションのルート・ディレクトリに抽出する必要があります。

OAAM .NETライブラリは、抽出されたSDKパッケージの/binフォルダにあります。

3.3 構成プロパティ

Oracle Adaptive Access Managerの.NET SDKには、OAAM .NET APIで使用される構成の値を指定するプロパティ・ファイルが含まれています。開発者は、これらのプロパティを変更してアプリケーション固有の値を指定したり、新規の値を追加することができます。

3.3.1 APIのプロパティの使用方法

OAAM .NET APIはプロパティを使用して、仮想認証デバイスのイメージの場所など、実行時に構成可能な値を読み込みます。仮想認証デバイスはユーザー入力のコントロールであり、仮想キーボードおよびパーソナライズを提供します。プロパティは起動時にファイルのリストから読み込まれてキャッシュされ、プロパティ・ファイルの1つが更新されたときには必ず更新されます。

プロパティ・ファイルがOAAM .NET APIによってロードされる順序は、次のとおりです。

  1. lookup.propertiesファイルが存在する場合は、このファイルが最初にロードされます。

  2. properties.filelistプロパティがlookup.propertiesで定義されている場合、そのプロパティにリストされるすべてのファイルが(リスト順に)キューに追加されます。

  3. bharosa_lookup.propertiesファイルがロードされます(存在する場合)。

  4. properties.filelistプロパティがbharosa_lookup.propertiesで定義されている場合、そのプロパティにリストされるすべてのファイルが(リスト順に)キューに追加されます。

  5. キューにあるすべてのファイルがロードされます。

  6. ロードされたプロパティ・ファイルのいずれかが変更されると、プロパティがリロードされます。

lookup.propertiesなどのプロパティ・ファイルは、次のディレクトリ内で、表3-1に示した順序で検索されます。ファイルの検索は、指定されたファイルが最初に見つかった時点で終了します(または、ファイルが見つからない場合にも終了します)。

表3-1 .NETプロパティ・ファイル

ディレクトリ

<ApplicationDirectory>/

c:/Inetpub/wwwroot/MyApp/

<CallingAssemblyDirectory>/

c:/Windows/System32/

<CurrentAssemblyDirectory>/

c:/Inetpub/wwwroot/MyApp/bin/

<CurrentAssemblyDirectory>/../

c:/Inetpub/wwwroot/MyApp/

<CurrentDirectory>/

c:/Windows/System32/

<ApplicationDirectory>/bharosa_properties/

c:/Inetpub/wwwroot/MyApp/bharosa_properties/

<CallingAssemblyDirectory>/bharosa_properties/

c:/Windows/System32/bharosa_properties/

<CurrentAssemblyDirectory>/bharosa_properties/

c:/Inetpub/wwwroot/MyApp/bin/bharosa_properties/

<CurrentAssemblyDirectory>/../bharosa_properties/

c:/Inetpub/wwwroot/MyApp/bharosa_properties/

<CurrentDirectory>/bharosa_properties/

c:/Windows/System32/bharosa_properties/


3.3.2 プロパティ値の暗号化

プロパティ・ファイルで指定されたプロパティ値は、OAAM .NET SDKに組み込まれているコマンドライン・ユーティリティBharosaUtils.exeを使用して暗号化できます。BharosaUtils.exeは、OAAM .NET SDKパッケージの抽出後に/binフォルダに格納されます。

値の暗号化および復号化には、暗号化キー(ユーザーが任意に選択)が必要です。このキーは、プロパティbharosa.cipher.client.key(これは、アプリケーション・プロパティ・ファイルの1つに設定する必要があります)を通してOAAM .NET APIで使用可能になります。

BharosaUtil.exeは、ユーザーに暗号化キーと値の入力を求めます。その後、暗号化された値がコンソールに出力されます。次のユーティリティの実行例は、文字列の暗号化方法を示しています。

C:\> BharosaUtil.exe -enc
Enter key (min 14 characters len): your-key
Enter key again: your-key
Enter text to be encrypted: string-to-encrypt
Enter text to be encrypted again: string-to-encrypt
vCCKC19d14a39hQSKSirXSiWfgbaVG5SKIg==

3.3.3 ユーザー定義の列挙を使用した要素の定義

Visual Studio 2005では、.NETフレームワークで定義された列挙が使用できます。ユーザー定義列挙は、アイテムのコレクションです。それぞれのアイテムには整数が割り当てられ、複数の属性が含まれている場合もあります。ユーザー定義列挙は、プロパティ・ファイルで定義されます。列挙名、列挙のアイテム名、アイテム属性の名前は、次のルールに準拠する必要があります。

  • 列挙の名前に接尾辞.enumを付けること。

  • アイテム名に列挙名と同じ接頭辞を付けること。

  • アイテムの属性名にアイテム名と同じ接頭辞を付けること。

ユーザー定義列挙の例は、次のとおりです。

#Example of a user-defined enumeration 
auth.status.enum=Enumeration to describe authentication status

#first item and its attributes
auth.status.enum.success=0
auth.status.enum.success.name=Success
auth.status.enum.success.description=Success
auth.status.enum.success.success=true

#second item and its attributes
auth.status.enum.invalid_user=1
auth.status.enum.invalid_user.name=Invalid user 
auth.status.enum.invalid_user.description=Invalid User

#third item and its attributes
auth.status.enum.wrong_password=2
auth.status.enum.wrong_password.name=Wrong password 
auth.status.enum.wrong_password.description=Wrong password

#fourth item and its attributes
auth.status.enum.wrong_pin=3
auth.status.enum.wrong_pin.name=Wrong pin
auth.status.enum.wrong_pin.description=Wrong Pin

#fifth item and its attributes
auth.status.enum.session_expired=4
auth.status.enum.session_expired.name=Session expired 
auth.status.enum.session_expired.description=Session expired

前述のユーザー定義列挙のアプリケーション・コードでの使用例は、次のとおりです。

UserDefEnumFactory factory = UserDefEnumFactory.getInstance();
UserDefEnum statusEnum = factory.getEnum("auth.status.enum");
int statusSuccess       = statusEnum.getElementValue("success");
int statusWrongPassword = statusEnum.getElementValue("wrong_password");

3.4 Oracle Adaptive Access ManagerのAPIの使用方法

この項では、OAAM APIを使用して共通のOAAMシナリオをサポートする方法について説明します。詳細は、サンプル・アプリケーションを参照することもできます。

3.4.1 ユーザーの詳細

Oracle Adaptive Access Managerはユーザーの詳細をデータベースに格納しており、この情報を使用して次のタスクを実行します。

  • ユーザーに対して実行するリスク・ルールの判別

  • ユーザー固有の仮想認証デバイスの属性の検索

  • チャレンジ質問の提示

  • チャレンジ質問に対する回答の検証

クライアント・アプリケーションは、実行時にOracle Adaptive Access Managerデータベースにユーザーの詳細を移入します。

たとえば、ユーザーがログインしたときに、クライアント・アプリケーションで、まずユーザー・レコードが存在するかどうかを判別する必要があります。レコードが見つからない場合は、適切なAPIをコールしてユーザー・レコードを作成し、ユーザー・ステータスを設定する必要があります。

次の例で、ユーザー・レコードを作成するコールについて説明します。

string loginId = "testuser";  // loginId of the user logging in

// set the proxy to access the SOAP server that communicates with the 
// OAAM SOAP Server 
IBharosaProxy proxy = BharosaClientFactory.getProxyInstance();
 
// find the user record in OAAM
VCryptAuthUser user = proxy.getUserByLoginId(loginId);
 
// if user record does not exist, create one
if(user == null || StringUtil.IsEmpty(user.LoginId))
{
    string customerId  = loginId; 
    string userGroupId = "PremiumCustomer";
    string password    = "_"; // this value is not used for now
 
    user = new VCryptAuthUser(loginId, customerId,
                              userGroupId, password);
    user = proxy.createUser(user); //createUser API calls OAAM Server to create a user in database. New user will be returned.
 
    // set the status of the new user to Invalid; once the user is 
    // authenticated, set the status to PendingActivation; after the
    // user succssfully completes registration, set the status to Valid
    proxy.setUserStatus(user.CustomerId, (int)UserStatus.Invalid);
}
 
// save the user record in the session for later reference
AppSessionData sessionData = AppSessionData.GetInstance(Session);
 
sessionData.CurrentUser = user;

詳細は、第3.5.1項「ASP.NETアプリケーション」に示すサンプル・アプリケーションを参照してください。

3.4.2 ユーザー・ログインとトランザクション

Oracle Adaptive Access Managerには、ユーザー・ログイン情報ユーザー・ログイン・ステータス、およびデバイスと場所情報を判別するその他のユーザー・セッション属性を取得するAPIが用意されています。また、Oracle Adaptive Access Managerにはトランザクション詳細を収集するAPIも用意されています。

次に、いくつかのAPIを示します。

  • handletrackerRequest(): デバイスのフィンガープリント処理に必要なシグネチャを作成します。

  • updateLog(): ユーザー・ノード・ログを更新し、必要に応じてCookieSetも作成します。

  • createTransaction(): OAAMサーバーでのトランザクションのデータ・エントリを作成します。

  • updateTransaction(): 指定されたトランザクションを更新します。

  • updateTransactionStatus(): OAAMサーバーでトランザクションのステータスを更新します。

  • markDeviceSafe(): 必要に応じてデバイスを安全であるとマークします。

  • isDeviceMarkedSafe(): デバイスが安全とマークされているかどうかを確認します。

次のコード・サンプルでは、このupdateLog() APIの使用方法を説明します。

// record a user login attempt in OAAM
string   requestId      = sessionData.RequestId;
string   remoteIPAddr   = Request.UserHostAddress;
string   remoteHost     = Request.UserHostName;
bool     isFlashRequest = Request.Params["client"].Equals("vfc");
string   secureCookie   = (Request.Cookies["vsc"] != null)
                             ? Request.Cookies["vsc"].Value : null;
string   digitalCookie  = isFlashRequest
                             ? Request.Params["v"] : null;
object[] browserFpInfo = HttpUtil.GetBrowserFingerPrint();
object[] flashFpInfo   = HttpUtil.GetFlashFingerPrint();
 
int browserFingerPrintType =
               browserFpInfo == null ? 0 : (int) browserFpInfo [0];
string browserFingerPrint =
               browserFpInfo == null ? "" : (string) browserFpInfo [1];
int flashFingerPrintType =
               flashFpInfo == null ? 0 : (int) flashFpInfo[0];
string flashFingerPrint =
               flashFpInfo == null ? "" : (string) flashFpInfo[1];
 
// if user name and password have been validated by now, set the status
// to the appropriate value, such as success, wrong_password, or invalid_user 
int status = statusEnum.getElementValue("success");

// if user name and password have not yet been validated, set the status to 
// pending; after validation is done call updateLog to update status
int status = statusEnum.getElementValue("pending");
 
// Call updateLog to record the user login attempt
CookieSet cs = proxy.updateLog(requestId, remoteIPAddr, remoteHost,
                     secureCookie, digitalCookie, user.CustomerGroupId,
                     user.CustomerId, user.LoginId, false,
                     status, ClientTypeEnum.Normal,
                     "1.0", browserFingerPrintType, browserFingerPrint,
                     flashFingerPrintType, flashFingerPrint);
 
// Update secure cookie in the browser with the new value from OAAM
if (cs != null)
{
    HttpUtil.UpdateSecureCookie(Response, cs);
}

updateLog() APIをコールすると、ユーザー情報がブラウザ/フラッシュのフィンガープリント情報とともに、SOAPコールを通してOAAMサーバーに送信されます。送信されたフィンガープリント情報がOAAMサーバーに格納された値と一致する場合、OAAMサーバーは新規のフィンガープリントCookieを返します。ユーザー情報が取得されていない場合は、OAAMサンプル.NETアプリケーションで使用したように、handleTrackerRequest() APIを使用してデバイス情報が収集されます。

3.4.3 ルール・エンジン

ルール・エンジンは、ポリシーの実施に使用されるOracle Adaptive Access Managerのコンポーネントです。ルール・エンジンは、コール中のコンテキストに基づいてポリシーを評価し、評価結果を出力します。ポリシーは管理者が構成します。ポリシー構成の詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager管理者ガイド』を参照してください。

次のコード・サンプルでは、ユーザーに権限を付与した後でルール・エンジンを起動し、ルール評価結果を処理するAPIの使用方法を説明します。

AppSessionData  sessionData = AppSessionData.GetInstance(Session);
IBharosaProxy      proxy    = BharosaClientFactory.getProxyInstance();
UserDefEnumFactory factory  = UserDefEnumFactory.getInstance();
UserDefEnum profileTypeEnum = factory.getEnum("profile.type.enum");
 
string             requestId    = sessionData.RequestId;
BharosaStringList  profileTypes = new BharosaStringList();
BharosaStringTable contextList  = new BharosaStringTable();
 
int postAuthType = profileTypeEnum.getElementValue("postauth");
 
profileTypes.Add(postAuthType.ToString());
 
// Run postauth rules
VCryptRulesResult res = proxy.processRules(requestId,
                                           profileTypes, contextList);
 
// process the rule result
if (StringUtil.EqualsIgnoreCase(res.Result, "Allow"))
{
// Allow the user login
}
else if (StringUtil.EqualsIgnoreCase(res.Result, "Block"))
{
// Block the user login
}
else if (res.Result.StartsWith("Challenge"))
{
// Take the user through challenge question flow
}
else if (res.Result.StartsWith("RegisterUser"))
{
// Take the user through registration flow
}

3.4.3.1 デバイスID

ルール・エンジンは、ルール結果を配信するのみでなく、デバイスID(このログイン・セッションで使用されたデバイスを示すOracle Adaptive Access Manager内部の識別子)を返すことができます。

次のサンプル・コードでは、デバイスIDの取得方法を説明します。

VCryptRulesResult rulesResult = proxy.processRules ...);
 
If (!rulesResult.Response.IsSuccess) {
 BharosaTrace.Error("Error running rules " + rulesResult.Response.ErrorMessage);
}
Long deviceId = rulesResult.DeviceId;

重要:

ここに示すコードは、次のことを前提としています。

  • Oracle Adaptive Access Manager 10.1.4.5またはそれ以降を使用している。

  • Oracle Adaptive Access Managerでプロパティbharosa.tracker.send.deviceIdをtrueに設定している。

    bharosa.tracker.send.deviceId=true
    

3.4.3.2 一括トランザクションの作成と更新

次のコールで説明するように、IBharosaProxy.createTransactions()メソッドを使用して一括トランザクションを作成できます。

VCrypResponse[] createTransactions(TransactionCreateRequestData[] transactionCreateRequestData);

次のコールで説明するように、IBharosaProxy.updateTransactions()メソッドを使用して一括トランザクションを更新できます。

VCrypResponse[] updateTransactions(TransactionUpdateRequestData[] transactionUpdateRequestData);

3.4.4 チャレンジ質問でのユーザーの検証

Oracle Adaptive Access Managerでは、リスクが高いシナリオまたは疑わしいシナリオを実行する際に、事前登録済の質問でユーザーにチャレンジして、ユーザー回答を事前登録済の回答と比較できます。

通常、ユーザーは指定されたセットの中から質問を選択し、その質問の回答を指定するように要求されます。これらはすべて登録されます。ユーザーは、このような質問の1つでチャレンジされたときに、正しい回答、すなわち登録済の回答と一致するものを提示する必要があります。

次のサンプル・コードでは、質問と回答を登録し、ユーザーにチャレンジするコールについて説明します。

//  Retrieve a question-pickset, containing groups of questions from
//  which the user would pick one question from each group for
//  registration
VCryptQuestionList[] groups = proxy.getSignOnQuestions(
                                                    user.CustomerId);
 
// See the sample application at the end of this chapter
// for details on displaying the questions in the UI and processing the user input
// Assume that the q's and a's are in the question object
 
// Register the questions and answers with OAAM
VCryptResponse response = proxy.addQuestions(
                                         user.CustomerId, questions);
 
// Retrive the question to challenge the user
VCryptQuestion secretQuestion = proxy.getSecretQuestion(
                                                     user.CustomerId);

// Create QuestionPad authenticator to display the question text.
// See the sample application at the end of this chapter for details; 
// Assume that the user entered an answer stored in the string answer
 
// Validate the user entered answer
VCryptAuthResult res = proxy.authenticateQuestion(customerId, answer);
 
bool isValid = (res != null && res.ResultCode == 0);

詳細は、第3.5.1項「ASP.NETアプリケーション」に示すサンプル・アプリケーションを参照してください。

3.4.5 チャレンジ失敗カウンタのリセット

Oracle Adaptive Access Managerでは、ユーザーに提示された質問に対する不適切な回答の数が失敗カウンタに記録されます。失敗カウンタは、ロックを強制するために使用します。このAPIには、指定されたユーザー、またはユーザーと質問の組合せに対して失敗カウンタをリセットするメソッド、resetChallengeFailureCounters()が組み込まれています。

コールで質問ID(たとえば、questionId != BharosaGlobals.LongNull)が指定されている場合は、その質問に関連する失敗カウンタのみがリセットされます。質問IDが指定されていない場合は、ユーザーのすべての登録済質問に対する失敗カウンタがリセットされます。

次のサンプル・コードでは、失敗カウンタをリセットするコールについて説明します。

VCryptResponse resetChallengeFailureCounters(String requestId, 
                            String customerId, long questionId);

3.4.6 仮想認証デバイス

この項では、ASP.NETアプリケーションでの仮想認証デバイスの作成と使用について、以降の各項に分けて説明します。

3.4.6.1 仮想認証デバイスの作成

仮想認証デバイスを作成するには、次のサンプル・コードで説明するように、メソッドBharosaClient.getAuthentiPad()を使用します。

IBharosaClient client = BharosaClientFactory.getClientInstance();
 
String padName = "passwordPad";
 
if (! IsPostBack)
{
    AuthentiPadType padType     = AuthentiPadType.TYPE_ALPHANUMERICPAD;
    String          bgFile      = proxy.getImage(user.CustomerId);
    String          captionText = proxy.getCaption(user.CustomerId);
    String          frameFile   = BharosaConfig.get(
"bharosa.authentipad.alphanumeric.frame.file",
"alphanumpad_bg/kp_v2_frame_nologo.png");
 
    AuthentiPad authPad = client.getAuthentiPad(padType, padName,
                                                frameFile, bgFile,
                                                captionText, false,
                                                true, true);
 
    // save the authenticator object in sessData: it will be needed
    // in GetImage.aspx.cs to generate the authenticator image, and
    // while decoding the user input
    sessionData[padName] = authPad;
}

3.4.6.2 仮想認証デバイスのWebページへの埋込み

前項で作成した仮想認証デバイスを正しく表示するには、.ASPXファイルと分離コード・ファイルを両方とも更新する必要があります。

これらのファイルは、次のように更新します。

  1. JavaScript bharosa_web/js/bharosa_pad.jsをASPXファイルにインクルードします。

  2. 仮想認証デバイスを表示するASPXファイルにラベルを作成します。

    <asp:Label ID="authenticator" runat="server"></asp:Label>
    
  3. 仮想認証デバイス・オブジェクトのcode-behindファイルでHTMLを生成し、次のようにラベルに割り当てます。

    this.authenticator.Text = client.getAuthentiPadHTML(authPad,false, false);
    

3.4.6.3 仮想認証デバイスでのユーザー入力の検証

ユーザーが仮想認証デバイスに指定した入力は、padNameというHTTPパラメータとDataFieldでアプリケーションにポストされます。この入力は、次のサンプル・コードで説明するように、仮想認証デバイスを使用してデコードする必要があります。

if (IsPostBack)
{
    AuthentiPad authPad       = sessionData[padName];
    String      encodedPasswd = Request.Params[padName + "DataField"];
    String      passwd        = authPad.decodeInput(encodedPasswd);
 
    // continue to validate the password
}

3.4.7 Oracle Adaptive Access Manager SOAPサーバーへの資格証明の指定

Oracle Adaptive Access Manager SOAPサーバーにアクセスするための資格証明は、次のいずれかの方法で指定できます。

  • 次の設定をアプリケーションのweb.configファイルに追加する。

     <appSettings>
        <add key="BharosaSOAPUser"     value="soapUser"/>
        <add key="BharosaSOAPPassword" value="soapUserPassword"/>
        <add key="BharosaSOAPDomain"   value="soapUserDomain"/>
     </appSettings>
    
  • 次のプロパティをアプリケーションのプロパティ・ファイルの1つに追加する。

    BharosaSOAPUser=soapUser
    BharosaSOAPPassword=soapUserPassword
    BharosaSOAPDomain=soapUserDomain
    

    注意:

    この方法でSOAP資格証明を指定することにより、値(通常は、パスワード値)としてクリアテキストまたは暗号化文字列のいずれかを使用できます。


3.4.8 トレース・メッセージ

Oracle Adaptive Access Managerの.NET APIでは、web.configの診断スイッチを使用して、様々なレベルのトレース・メッセージを印刷できます。トレース・メッセージは、適切なリスナーを構成することによってファイルに保存できるようになります。

次のweb.configファイル・サンプルは、スイッチの構成とトレース・メッセージをファイルに書き込むリスナーを示しています。

<system.diagnostics>
  <switches>
    <add name="debug" value="0"/>
    <add name="info" value="0"/>
    <add name="soap" value="0"/>
    <add name="perf" value="0"/>
    <add name="warning" value="1"/>
    <add name="error" value="1"/>
    <add name="traceTimestamp" value="1"/>
    <add name="traceThreadId" value="1"/>
  </switches>
  <trace autoflush="true" indentsize="2">
    <listeners>
      <add name="BharosaTraceListener"
             type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"
             initializeData="BharosaTrace.log"/>
    </listeners>
  </trace>
</system.diagnostics>

3.5 サンプル・アプリケーションを使用した統合例

この項では、SDKに用意されているサンプル・アプリケーションの1つを使用したアプリケーションの統合方法について説明します。

3.5.1 ASP.NETアプリケーション

ASP.NETベースのアプリケーションへのOAAM 11gの各種機能の統合を示すために、このサンプル・パッケージには次の4つのASP.NETアプリケーションが組み込まれています。

表3-2 ASP.NETアプリケーション

アプリケーション名 説明

SampleWebApp

これは、OAAM統合を使用しない基本的なASP.NETアプリケーションです。このアプリケーションは、仮想認証デバイス、KBAなどの各種OAAM機能を統合するために加えた段階的な変更を容易に確認できるように提供されています。

SampleWebAppTracker

このアプリケーションは、Oracle Adaptive Access Managerリスク・エンジンのSampleWebAppへの統合を示します。

SampleWebAppAuthTracker

このアプリケーションは、Oracle Adaptive Access Managerリスク・エンジンと仮想認証デバイスのSampleWebAppへの統合を示します。

SampleKBATracker

このアプリケーションは、Oracle Adaptive Access Managerリスク・エンジンとKBAのSampleWebAppへの統合を示します。


3.5.2 サンプル・アプリケーションの詳細

この項では、4つのアプリケーションを詳述します。

3.5.2.1 SampleWebApp

このアプリケーションには、OAAM統合前のWebアプリケーションを構成する次のページが含まれています。

  1. LoginPage.aspx

    • 単純なHTMLフォームを使用して、ユーザー名とパスワードを収集します。

    • ログインおよびパスワード情報を検証します。

    • 検証結果に応じて、ユーザーはSuccess.aspxにリダイレクトされるか、該当するエラー・メッセージを示すLoginPage.aspxにリダイレクトされます。

  2. Success.aspx

    • ログイン成功のメッセージを、ログアウトのリンクとともに表示します。

  3. LogoutPage.aspx

    • ユーザー・セッションをログアウトして、ログイン・ページにリダイレクトします。

3.5.2.2 SampleWebAppTracker

このアプリケーションには、Oracle Adaptive Access Managerリスク・エンジンと前述のサンプル・アプリケーションとの統合を構成する次のページが含まれています。Oracle Adaptive Access Managerリスク・エンジンは、入力されたユーザーID、OAAM埋込みフラッシュ・ムービーにより収集されたデバイスのフィンガープリント、IP情報など、様々な種類のユーザー情報をOAAMサーバーで収集する際に役立ちます。統合されたWebアプリケーションでは、必須チェックポイントで適切なSOAP APIをコールすることもできます。OAAMサーバーでは、OAAM管理コンソールを使用して定義した認証ルールに従って、事前定義済の認証ルールが、収集された情報に対して実行されます。保護されたWebアプリケーションが対応するアクションを必要に応じて実行できるように、認証結果が返されます。

このアプリケーションでは、SDKパッケージoaam_native_dot_net.zipのOAAM .NET APIとの統合が必要です。アーカイブのコンテンツをWebアプリケーションのルート・ディレクトリに抽出する必要があります。

  1. LoginPage.aspx

    • 単純なHTMLフォームを使用してユーザー名とパスワードを収集します。

    • ログインとパスワードをセッションに保存します。

    • ユーザーをLoginJumpPage.aspxリダイレクトして、ユーザー・デバイスのフラッシュ・フィンガープリントを収集します。

  2. LoginJumpPage.aspx

    • AppUtil.InitUser() (AppUtilはSDKパッケージに含まれています)をコールして、ユーザーをOAAMからロードします。ユーザーが見つからない場合は、ユーザー・レコードが新規に作成されます。BharosaClientFactory.getProxyInstance()をコールすることによって、OAAMはIBharosaProxyインタフェースへの参照を取得します。このインタフェースは、.NETアプリケーション統合のための複数のOAAM .NET SOAP APIを公開します。APIは、AppUtil.InitUser(): getUserByLoginId()getUser()createUser()setUserStatus()getUserStatus()setPin()でコールされます。

    • フラッシュ・オブジェクトbharosa_web/flash/bharosa.swfをブラウザにロードするHTMLを返します。このフラッシュ・オブジェクトは、CookieManager.aspx(SDKパッケージに含まれています)をフラッシュ・フィンガープリントの詳細とともにコールします。CookieManager.aspxはフィンガープリントをOAAMに記録し、それに対してフラッシュCookieをユーザーのデバイスに設定します。

    • しばらくしてから(フラッシュCookieをOAAMから取得する時間が必要です)、ブラウザをLoginHandlerPage.aspxにリダイレクトします。

  3. LoginHandlerPage.aspx

    • AppUtil.InitTracker()をコールして、ユーザー・ログインの試みをOAAMに記録します。

    • ログインおよびパスワード情報を検証します。

    • AppUtil.UpdateAuthStatus()をコールして、パスワード検証ステータス(成功/不正ユーザー/不正パスワード/無効なユーザーなど)でOAAMを更新します。

    • パスワード検証が成功した場合は、AppUtil.RunPostAuthRules()をコールして認証後ルールを実行します。

    • 認証後ルールでブロックが返された場合は、この情報でOAAMを更新した後にユーザー・ログインをブロックします。

    • 検証結果またはルール結果(あるいはその両方)に応じて、ユーザーをSuccess.aspxにリダイレクトするか、適切なエラー・メッセージとともにLoginPage.aspxにリダイレクトします。

  4. 成功ページ

    • ログイン成功のメッセージを、ログアウトのリンクとともに表示します。

  5. ログアウト・ページ

    • ユーザー・セッションをログアウトして、ログイン・ページにリダイレクトします。

3.5.2.3 SampleWebAppAuthTracker

このアプリケーションには、Oracle Adaptive Access Managerリスク・エンジンや仮想認証デバイスの前述のサンプル・アプリケーションとの統合を構成する次のページが含まれています。このアプリケーションでは、OAAMにより指定されたオーセンティケータを使用してパスワードが収集されます。

オーセンティケータ機能とは、資格証明の収集に使用するOAAM仮想認証デバイスのことです。このOAAM .NET APIをコールして認証前ルールを実行すると、ユーザーは、OAAM仮想認証デバイスが表示される前にブロックされることがあります。authentipadルールを実行することにより、OAAM仮想認証デバイスがユーザーに対して選択/作成され、パスワード・ページでレンダリングされます。

このアプリケーションでは、SDKパッケージoaam_native_dot_net.zipのOAAM .NET APIとの統合が必要です。アーカイブのコンテンツをWebアプリケーションのルート・ディレクトリに抽出する必要があります。

  1. LoginPage.aspx

    • 単純なHTMLフォームを使用してユーザー名を収集します。

    • ログインをセッションに保存します。

    • ユーザーをLoginJumpPage.aspxリダイレクトして、ユーザー・デバイスのフラッシュ・フィンガープリントを収集します。

  2. LoginJumpPage.aspx

    • AppUtil.InitUser() (AppUtilはSDKパッケージに含まれています)をコールして、ユーザーをOAAMからロードします。ユーザーが見つからない場合は、ユーザー・レコードが新規に作成されます。

    • フラッシュ・オブジェクトbharosa_web/flash/bharosa.swfをブラウザにロードするHTMLを返します。このフラッシュ・オブジェクトは、CookieManager.aspx(SDKパッケージに含まれています)をフラッシュ・フィンガープリントの詳細とともにコールします。CookieManager.aspxはフィンガープリントをOAAMに記録し、それに対してフラッシュCookieをユーザーのデバイスに設定します。

    • しばらくしてから(フラッシュCookieをOAAMから取得する時間が必要です)、ブラウザをLoginHandlerPage.aspxにリダイレクトします。

  3. LoginHandlerPage.aspx

    • AppUtil.InitTracker()をコールして、ユーザー・ログインの試みをOAAMに記録します。

    • ユーザーをPasswordPage.aspxにリダイレクトし、OAAMオーセンティケータを使用してパスワードを収集します。

  4. PasswordPage.aspx

    ロード時に、次の処理を行います。

    1. セッション認証ステータスをOAAMでPendingに設定します。

    2. AppUtil.RunPreAuthRules()をコールして、認証前ルールを実行します。

    3. 認証前ルールでblockが返された場合は、この情報でOAAMを更新した後にユーザー・ログインをブロックします。

    4. 認証前ルールでallowが返された場合は、AppUtil.RunAuthentiPadRules()をコールすることにより、別のルール・セットを実行してこのユーザーに対して使用するオーセンティケータを判別します。

    5. AppUtil.CreateAuthentiPad()をコールすることによって適切なオーセンティケータを作成し、AppUtil.getAuthentiPadHTML()を使用してオーセンティケータをHTMLにレンダリングします。オーセンティケータHTMLは、GetImage.aspx(SDKパッケージに含まれています)をコールすることにより、オーセンティケータ・イメージをフェッチします。

    6. イメージ生成およびパスワード・デコード時に、オーセンティケータ・オブジェクトをセッションに格納して後で使用できるようにします。

    PostBackで、次のように処理します。

    1. セッションに格納されたオーセンティケータ・オブジェクトを使用して、パスワードをデコードします。

    2. ログインおよびパスワード情報を検証します。

    3. AppUtil.UpdateAuthStatus()をコールすることにより、OAAMをパスワード検証ステータス(成功/不正ユーザー/不正パスワード/無効になったユーザーなど)で更新します。

    4. パスワード検証が成功した場合は、AppUtil.RunPostAuthRules()をコールして認証後ルールを実行します。

    5. 認証後ルールでブロックが返された場合は、この情報でOAAMを更新した後にユーザー・ログインをブロックします。

    6. 検証結果またはルール結果(あるいはその両方)に応じて、ユーザーをSuccess.aspxにリダイレクトするか、適切なエラー・メッセージとともにLoginPage.aspxにリダイレクトします。

  5. 成功ページ

    • ログイン成功のメッセージを、ログアウトのリンクとともに表示します。

  6. ログアウト・ページ

    • ユーザー・セッションをログアウトして、ログイン・ページにリダイレクトします。

3.5.2.4 SampleKBATracker

このアプリケーションには、OAAMオーセンティケータ、リスク・エンジン、KBAおよびKBA(ナレッジ・ベース認証)と前述のサンプル・アプリケーションとの統合を構成する次のページが含まれています。このアプリケーションは、パスワードおよびOAAMで指定したKBAオーセンティケータを使用する認証メカニズムを示しています。OAAM KBAには、ユーザーがチャレンジ質問を登録した後、その質問を使用して、ある時点でユーザーにチャレンジする機能があります。たとえば、認証後ルールの結果に基づいて、統合されたWebアプリケーションが登録済の質問/回答のペアを使用してユーザーにチャレンジするよう決定することもできます。

このアプリケーションでは、SDKパッケージoaam_native_dot_net.zipのOAAM .NET APIとの統合が必要です。アーカイブのコンテンツをWebアプリケーションのルート・ディレクトリに抽出する必要があります。

  1. LoginPage.aspx

    • 単純なHTMLフォームを使用してユーザー名を収集します。

    • ログインをセッションに保存します。

    • ユーザーをLoginJumpPage.aspxリダイレクトして、ユーザー・デバイスのフラッシュ・フィンガープリントを収集します。

  2. LoginJumpPage.aspx

    • AppUtil.InitUser()(AppUtilはSDKパッケージに含まれています)をコールして、ユーザーをOAAMからロードします。ユーザーが見つからない場合は、ユーザー・レコードが新規に作成されます。

    • フラッシュ・オブジェクトbharosa_web/flash/bharosa.swfをブラウザにロードするHTMLを返します。このフラッシュ・オブジェクトは、CookieManager.aspx(SDKパッケージに含まれています)をフラッシュ・フィンガープリントの詳細とともにコールします。CookieManager.aspxはフィンガープリントをOAAMに記録し、それに対してフラッシュCookieをユーザーのデバイスに設定します。

    • しばらくしてから(フラッシュCookieをOAAMから取得する時間が必要です)、ブラウザをLoginHandlerPage.aspxにリダイレクトします。

  3. LoginHandlerPage.aspx

    • AppUtil.InitTracker()をコールして、ユーザー・ログインの試みをOAAMに記録します。

    • ユーザーをPasswordPage.aspxにリダイレクトし、OAAMオーセンティケータを使用してパスワードを収集します。

  4. PasswordPage.aspx

    ロード時に、次の処理を行います。

    1. セッション認証ステータスをOAAMでPendingに設定します。

    2. AppUtil.RunPreAuthRules()をコールして、認証前ルールを実行します。

    3. 認証前ルールでブロックが返された場合は、この情報でOAAMを更新した後にユーザーのログインをブロックします。

    4. 認証前ルールでallowが返された場合は、AppUtil.RunAuthentiPadRules()をコールすることにより、別のルール・セットを実行してこのユーザーに対して使用するオーセンティケータを判別します。

    5. AppUtil.CreateAuthentiPad()をコールすることによって適切なオーセンティケータを作成し、AppUtil.getAuthentiPadHTML()を使用してオーセンティケータをHTMLにレンダリングします。オーセンティケータHTMLは、GetImage.aspx(SDKパッケージに含まれています)をコールすることにより、オーセンティケータ・イメージをフェッチします。

    6. イメージ生成およびパスワード・デコード時に、オーセンティケータ・オブジェクトをセッションに格納して後で使用できるようにします。

    PostBackで、次のように処理します。

    1. セッションに格納されたオーセンティケータ・オブジェクトを使用して、パスワードをデコードします。

    2. ログインおよびパスワード情報を検証します。

    3. AppUtil.UpdateAuthStatus()をコールすることによって、パスワード検証ステータス(成功/不正ユーザー/不正パスワード/無効になったユーザー、その他)でOAAMを更新します。

    4. パスワード検証が失敗した場合、ユーザーは適切なエラー・メッセージとともにLoginPage.aspxにリダイレクトされます。

    5. パスワード検証が成功した場合は、AppUtil.RunPostAuthRules()をコールして認証後ルールを実行します。

    6. 認証後ルールの結果に基づくアクションに応じて、異なるフローがユーザーに対して表示されます。

      認証後のアクション ターゲットURL

      Block

      LoginPage.aspx

      Allow

      Success.aspx

      ChallengeUser

      ChallengeUser.aspx

      RegisterQuestions

      RegisterQuestionsPage.aspx

      RegisterUser

      PersonalizationPage.aspx

      RegisterUserOptional

      PersonalizationPage.aspx


  5. PersonalizationPage.aspx

    • ユーザーのセキュリティ・プロファイル作成の手順を説明するデバイス・パーソナライズが紹介されます。

    • 認証後ルールによってRegistrationOptionalが返された場合、ユーザーは、「スキップ」をクリックして登録プロセスをスキップし、Success.aspxページに直接進むことができます。

    • 登録がオプションでない場合、ユーザーは「続行」をクリックしてRegisterImagePhrase.aspxページに進み、登録する必要があります。

  6. RegisterImagePhrase.aspx

    • ランダムに生成されたバックグラウンド・イメージ、キャプション、および認証中に使用したセキュリティ・デバイスのタイプのカスタマイズをユーザーに対して許可します。

    • 新規のバックグラウンド・イメージとキャプションは、AppUtil.AssignNewImageAndCaption()をコールして割り当てられます。

    • ユーザーが選択したセキュリティ・デバイスは、AppUtil.SetAuthMode()をコールして割り当てられます。

  7. RegisterQuestionsPage.aspx

    • 質問セットが表示されます。ユーザーはこの中から質問を選択し、質問ごとの正しい回答を登録できます。

    • 質問セットをフェッチするには、proxy.getSignOnQuestions()をコールします。

  8. ChallengeUser.aspx

    • ユーザーがすでに登録した質問の1つと一緒にQuestionPadを表示することにより、ユーザーにチャレンジします。

    • proxy.authenticateQuestion()のコールによって回答が検証され、AppUtil.UpdateAuthStatus()をコールしてその結果がOAAMで更新されます。

    • 回答が間違っている場合はAppUtil.RunChallengeUserRules()がコールされ、その結果に基づいてユーザーは回答の再入力を許可されるか、OAAMのブロック・ステータスの更新後にブロック・ページにリダイレクトされます。

    • ユーザーが質問に正しく回答するまでの試行回数は、OAAMのルール管理者が設定します。

    • 質問に正しく回答できた場合は、Success.aspxページに進みます。

  9. 成功ページ

    • ログイン成功のメッセージを、ログアウトのリンクとともに表示します。

  10. ログアウト・ページ

    • ユーザー・セッションをログアウトして、ログイン・ページにリダイレクトします。

3.5.3 環境の設定

各アプリケーションのソース・コードは、アプリケーション専用のディレクトリに格納されています。アプリケーション別のVisual Studio Solutionファイルは、ルート・ディレクトリにあります。4つのアプリケーションは、Visual Studio 2005を使用して実行することも、Windows Server 2003でMicrosoft Internet Information Server(IIS) 6.0を使用してデプロイすることもできます。SampleWebAppsを使用してソリューション・ファイルをロードし、Visual Studioを使用してすべてのアプリケーションを同時に表示できます。

この項では、サンプル・アプリケーションを正しく実行できるように環境を設定する方法について説明します。次の項目がすべて適用された後でこれらのサンプル・アプリケーションを実行すると、様々なシナリオでどのようにOAAM 11gと統合されるかを確認できるようになります。

3.5.3.1 web.configファイルの変更

OAAMサーバーにアクセスするためのSOAP URLが、各ユーザーのデプロイメント構成に応じてアプリケーションのweb.configファイルに正しく設定されていることを確認してください。次に例を示します。

  <appSettings>
    <add key="BharosaSOAPURL" 
         value="http://localhost:14300/oaam_server/services"/>
  </appSettings>
  <appSettings>
    

3.5.3.2 イメージのプロパティの設定

サンプル・アプリケーションをOAAM 11gに統合するために、bharosa_app.propertiesbharosa.image.dirlistを、oaam_imagesフォルダが存在しているパスに設定します。oaam_imagesフォルダは${ORACLE_HOME}/oaam/にあります。oaam_imagesフォルダには、OAAMが仮想認証デバイスの生成に使用するイメージが含まれています。

フォルダ名は変更できますが、その場合はパスも適宜変更する必要があります。たとえば、前述のパスから取得したファイルがすべてoaam_imagesというフォルダに格納されていて、このフォルダがWebアプリケーションのルート・ディレクトリの下にあるとします。この場合のパスは、${Application_HOME}/oaam_images/となります。

lookup.properties/bharosa_properties/フォルダに作成/格納されていることを確認してください。これによって、読み込む必要のあるプロパティ・ファイルがすべて示されます。これは次の場所から取得できます。

${ORACLE_HOME}/oaam/apps/oaam_native/overrides/conf/bharosa_properties

bharosa.authentipad.image.urlプロパティを検索し、コメント・アウトしてください。

3.5.3.3 アプリケーションの実行

WebアプリケーションのテストのためにMicrosoft Visual Studio 2005にアクセスできる開発者の場合、前の変更をすべて行った後で、ソリューションを構築してデバッグしてください。

これらのアプリケーションのデプロイメントについては、次のガイドラインに従ってください。

  • Windows Server 2003システムを使用する必要があります。

  • アプリケーション・サーバーをインストールするには、「コントロール パネル」「プログラムの追加と削除」「Windowsコンポーネントの追加/削除」を使用します。Microsoft Internet Information Server(IIS)およびASP.NETを有効にする必要があります。

  • コマンド・ウィンドウでinetmgrを実行することにより、Internet Information Services(IIS) Managerを使用してWebサイトを新規作成します。

  • WebサイトのプロパティのASP.NETタブをクリックして、ASP.NETバージョンがバージョン2.0に設定されていることを確認します。

  • Internet Information Services(IIS) Managerで、ASP.NETバージョン2.0が「許可」に設定されていることを確認します。ASP.NETバージョン2.0の拡張子がない場合は、新しいWebサービスの拡張子を手動で追加してください。C:\WINDOWS\Microsoft.NET\Frameworkに移動します。ASP.NETバージョン2.0がインストールされている場合、ここにv2.0.50727というフォルダ、または類似した名前のフォルダがあります。v2.0.50727/aspnet_isapi.dllを新規Webサービスの拡張子として追加します。

  • Webアプリケーションのページを開く際にC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NETファイルへのアクセスで問題が発生した場合は、「IIS マネージャ」「ローカル コンピュータ」「アプリケーション プール」「プロパティ」「ID」を開き、「定義済み」オプションの右にある「ローカル システム」を選択してください。

3.5.4 例: トランザクション・ロギングとルール処理の有効化

次のページでは、ASP.NETサンプル・アプリケーションを使用してOAAM管理でトランザクション・ロギングとルール処理を有効化する方法について説明します。

前提条件:

  • Sample_Transaction_Defs.zipのトランザクション定義をOracle管理で使用可能にします。OAAM管理を使用して、トランザクション定義をインポートします。

  • models.zipで定義されたトランザクション・ポリシーをOAAM管理で使用可能にします。

  • 次のプロパティが、OAAM管理および.NETクライアント側のbharosa_app.propertiesに存在している必要があります。

    トランザクション・ステータスの列挙

    tracker.transaction.status.enum=Enum for transaction status
    tracker.transaction.status.enum.success=0
    tracker.transaction.status.enum.success.name=Success
    tracker.transaction.status.enum.success.description=Success
    tracker.transaction.status.enum.block=1
    tracker.transaction.status.enum.block.name=Block
    tracker.transaction.status.enum.block.description=Block
    tracker.transaction.status.enum.reject=2
    tracker.transaction.status.enum.reject.name=Reject
    tracker.transaction.status.enum.reject.description=Reject
    tracker.transaction.status.enum.pending=3
    tracker.transaction.status.enum.pending.name=Pending
    tracker.transaction.status.enum.pending.description=Pending
     
    

    チェックポイントの列挙

    profile.type.enum.pretransaction=70
    profile.type.enum.pretransaction.name=PreTransaction
    profile.type.enum.pretransaction.description=Pre Transaction
    profile.type.enum.pretransaction.ruleTypes=user,device,location,in_session
    profile.type.enum.pretransaction.listTypes=vtusers
    profile.type.enum.pretransaction.finalactionrule=process_results.rule
    profile.type.enum.pretransaction.isPreAuth=false
     
    
     
    profile.type.enum.posttransaction=80
    profile.type.enum.posttransaction.name=PostTransaction
    profile.type.enum.posttransaction.description=Post Transaction
    profile.type.enum.posttransaction.ruleTypes=user,device,location,in_session
    profile.type.enum.posttransaction.listTypes=vtusers
    profile.type.enum.posttransaction.finalactionrule=process_results.rule
    profile.type.enum.posttransaction.isPreAuth=false
    

トランザクション・ページの管理オプション

  • プロパティ・ファイルbharosa_common.propertiesで定義されたトランザクション列挙に基づき、トランザクション・タイプ選択メニューを動的に生成します。

  • トランザクション・タイプの選択時に、プロパティ・ファイルで定義されたフィールド定義に基づいて、トランザクション・フィールドを動的にレンダリングします。

  • 送信中の現在のフォームに応じて、AppUtil.createTransaction()をコールしてトランザクションを作成するか、AppUtil.updateTransaction()をコールしてトランザクションを更新します。

    AppUtil.RunPreTransactionRules()またはAppUtil.RunPostTransactionRules()をコールして、トランザクション前およびトランザクション後のルールを実行します。ブラウザは、その結果に応じて、次の適切なページにリダイレクトされます。

3.5.5 OAAM .NET API

この項に示すAPIの詳細は、『Oracle Fusion Middleware Oracle Adaptive Access Manager Java APIリファレンス』を参照してください。


注意:

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


表3-3に、OAAMで使用可能な.NET APIを示します。

表3-3 OAAM .NET API

API 説明

handleTrackerRequest()

handleTrackerRequest()は、デバイスのフィンガープリント処理に必要なシグネチャを作成します。このメソッドは、入力としてrequestTimeを取り込みます。

handleTransactionLog()

handleTransactionLog()は、デバイスのフィンガープリント処理に必要なシグネチャを作成します。

createTransaction()

createTransaction()は、OAAMトランザクションを作成します。

createTransactions()

createTransactions()は、OAAMトランザクションを一括作成します。また、作成リクエストごとにレスポンス・オブジェクトを返します。

updateTransaction()

updateTransaction()は、指定されたトランザクションの作成済トランザクション更新を更新します。

updateTransactions()

updateTransactions()は、トランザクションを一括更新します。更新でエラーが生じた場合でも、次のトランザクションを続行して、リクエストごとにレスポンスを返します。

updateLog()

updateLog()はユーザー・ノード・ログを更新し、必要に応じてCookieSetも作成します。

updateTransactionStatus()

updateTransactionStatus()は、指定されたトランザクションのステータスを更新します。

updateAuthStatus()

updateAuthStatus()は、指定されたリクエストの認証ステータスを更新します。この機能が正しく動作するには、すべてのパラメータに有効な値が設定されている必要があります。

markDeviceSafe()

markDeviceSafe(): 安全を確保するデバイスを、必要に応じてマークします。

getUser()

getUser()は、指定されたカスタマおよびグループに関して、パスワードとPINを含まないユーザー詳細を返します。ユーザーが有効でない場合、オブジェクトのすべての値はNULLになります。予期しないエラーではNULLが返されます。

getUserByLoginId()

getUserByLoginId()は、指定されたカスタマおよびグループに関して、パスワードとPINを含まないユーザー詳細を返します。ユーザーが有効でない場合、オブジェクトのすべての値はNULLになります。予期しないエラーではNULLが返されます。

createUser()

createUser()は、認証データベースにユーザーを作成します。ユーザーがNULLの場合、NULLが返されます。

setUser()

setUser()は、認証データベースのユーザーを更新します。ユーザーがNULLであるか、ユーザーのcustomerId属性が無効の場合、NULLが返されます。

setPin()

setPin()は、指定されたユーザーに新規のPINを設定します。操作が成功または失敗であるかを返します。

setPassword()

setPassword()は、指定されたユーザーの新規パスワードを設定します。操作が成功または失敗であるかを返します。

setCaption()

setCaption()は、指定されたユーザーに新規キャプションを設定します。キャプションがNULLの場合は、デフォルト・ロケールを持つキャプションが設定されます。

setImageAndCaption()

setImageAndCaption()は、ユーザーのイメージとキャプションを設定します。キャプションがNULLの場合は、デフォルト・ロケールとデフォルト・テキストを持つキャプションが設定されます。

setUserAuthMode()

setUserAuthMode()は、指定されたユーザーに認証モードを設定します。認証モードとしてフル・キーパッドなどが設定できます。

setGroupUserAuthMode()

setGroupUserAuthMode()は、バッチ更新を使用して認証モードを設定します。初期バッチの保存後に後続バッチで失敗が発生する場合があるため、失敗が発生したシステムが前の認証モードのまま残される保証はありません。

getImage()

getImage()は、ユーザーのイメージ・パスを取得します。

getCaption()

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

getImageAndCaption()

getImageAndCaption()は、ユーザーのイメージ・パスとキャプションを取得します。

getLocalizedCaption()

getLocalizedCaption()は、ユーザーのローカライズされたキャプションを取得します。

getUserAuthMode()

getUserAuthMode()は、ユーザーの認証モードを取得します。

getUserStatus()

getUserStatus()は、ユーザーのステータスを取得します。

getSignOnQuestions()

getSignOnQuestions()は、ユーザーが使用できる機密質問をすべて取得します。これは、問い合せる質問が含まれている2次元配列オブジェクトを返します。1次元はユーザーに表示する(構成可能な)質問選択セットの数を表し、2次元は各選択セットの質問数を表します。

getAllMappedSignOnQuestions()

getAllMappedSignOnQuestions()は、ユーザーの質問を取得します。

setUser()

setUser()は認証データベースのユーザーを更新し、ユーザーがNULLであるか、ユーザーのcustomerId属性が無効の場合にNULLを返します。

addQuestions()

addQuestions()は、カスタマへの質問を追加します。これは、必要な質問の数と同数の質問を求めます。このメソッドをコールすると、既存の質問はすべて削除されます。成功はすべての質問が追加されたことを示し、失敗は質問がまったく追加されなかったことを示します。

deleteQuestion()

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

getSecretQuestion()

getSecretQuestion()は、ユーザーの機密質問を取得します。問い合せる質問が含まれているオブジェクトを返します。

moveToNextSecretQuestion()

moveToNextSecretQuestion()は、ユーザーに対する現在の機密質問から次の質問へ移動します。問い合わせる質問が含まれているオブジェクトを返し、エラーの場合はNULLを返します。

authenticateQuestion()

authenticateQuestion()は、質問/回答を認証します。認証試行の記述結果を返します。

authenticateQuestionForCSR()

authenticateQuestionForCSR()は、カスタマ・ケアに関する質問/回答を認証するメソッドです。認証試行の記述結果を返します。

processRules()

processRules()はルールを実行して、ルール結果を返します。VCryptRulesResultの属性'response'は、成功を返します。デフォルトでは、セッションなしのVCryptResponseが設定されています。トリガーされたルールに対応するアラートがない場合、属性'alertIdList'はNULLになります。プロパティvcrypt.tracker.rule.process.autoTransactionLog.disableがfalseに設定されている場合は、属性'transactionLogId'が設定されます。

createList()

createList()は、指定されたリスト・タイプのリストを新規作成します。

updateList()

updateList()は、指定されたリストを新規の要素で更新します。リスト名は既存の名前にしてください。elementsToAddでは、重複する要素と無効な要素は無視されます。elementsToRemoveでは、存在しない要素と無効な要素は無視されます。アラート・グループ・リストの更新はサポートされていません。

getLists()

getLists()は、グループ・タイプが指定されたときにグループのリストを取得します。

isElementInList()

isElementInList()は、指定された要素がリストにあるかどうかを確認します。アラート・グループ・リスト内での要素の確認はサポートされていません。

getFinalAuthStatus()

getFinalAuthStatus()は、ユーザーIDが指定されている場合、ユーザーの最終認証ステータスを返します。このメソッドで遡れる日数は30日までです。

setTemporaryAllow()

setTemporaryAllow()は、ユーザーに対する一時許可を設定します。

getActionCount()

getActionCount()は、指定されたactionEnumIdのアクション件数を取得します。使用可能なアクション列挙については、構成を確認してください。プロパティ[rule.action.enum.<actionName>.incrementCacheCounter]をtrueに設定して、<actionName>に対応するアクションのカウンタを増分する必要があります。これが設定されていなかったり、falseに設定されている場合、このメソッドはキャッシュ内の値を正常に返しますが、この値は正確なアクション件数を反映していない可能性があります。

CancelAllTemporaryAllows()

CancelAllTemporaryAllows()は、ユーザーに対する未使用の一時許可をすべて取り消します。

getRulesData()

getRulesData()は、指定されたセッションIDに対して実行されたすべてのルールを返し、トリガーされたルールの基本情報を提供します。完全な階層情報は提供されません。ルール実行データは非同期に永続化されているため、即時に使用できない場合があります。

getRulesDataForLastSession()

getRulesDataForLastSession()は、過去のセッションに関して、指定されたcustomerIdで実行されたすべてのルールを返し、トリガーされたルールの基本情報を提供します。完全な階層情報は提供されません。ルール実行データは非同期に永続化されているため、即時に使用できない場合があります。

resetUser()

resetUser()は、ユーザーに設定されているすべてのプロファイルをリセットします。これには、ユーザーに対して選択された(または割り当てられた)登録、質問、イメージおよびフレーズが含まれます。

processPatternAnalysis()

processPatternAnalysis()は、自動学習用にパターン・データ処理をトリガーします。このメソッドでは、自動学習パターンの分析以外のアクティビティは実行されません。

getList()

getList()は、グループ・タイプが指定されているグループのリストを取得します。

ClearSafeDeviceList()

ClearSafeDeviceList()は、このリクエストに関連するユーザーの安全なデバイス・リストを消去します。

resetChallengeFailureCounters()

resetChallengeFailureCounters()は、チャレンジ失敗カウンタをリセットします。

generateOTP()

generateOTP()は、OTPを生成します。OTPコードを返します。

getOTPCode()

getOTPCode()は、指定されたリクエスト識別子のOTPコードを取得するためにn回コールできます。指定されたリクエスト識別子のOTPコードが存在しない場合は、OTPコードが新規に生成されます。指定されたリクエスト識別子のOTPコードが存在し、overwriteIfexistsがtrueの場合は、OTPコードが新規に生成されます。OTPコードが存在し、そのOTPコードが失効していない場合、有効期限を更新することによって同じOTPコードが返されます。それ以外の場合は、新規のOTPコードが返されます。OTPコードをVCryptObjectResponseオブジェクトから取得するには、「String otpCode = (String) vcryptResponseObj.getObject()」と指定します。

validateOTPCode()

validateOTPCode()は、指定されたリクエスト識別子とチャレンジ・タイプのOTPコードを検証します。このメソッドは、指定されたリクエスト識別子のOTPコードを検証するためにn回コールできます。OTPコードが存在し、まだ失効しておらず、指定されたOTPコードが既存のOTPコードと一致する場合は、OTP_CODE_MATCHED値を持つレスポンスが返されます。OTPコードが存在し、まだ失効しておらず、指定されたOTPコードが既存のOTPコードと一致しない場合は、OTP_CODE_NOT_MATCHED値を持つレスポンスが返されます。OTPコードが存在し、失効している場合は、OTP_CODE_EXPIRED値を持つレスポンスが返されます。OTPコードが存在しない場合は、OTP_CODE_DOESNOT_EXISTSが返されます。OTP検証結果をVCryptObjectResponseオブジェクトから取得するには、「TrackerAPIUtil.OTPValidationResult otpCode = (TrackerAPIUtil.OTPValidationResult) vcryptResponseObj.getObject()」と指定します。

resetChallengeCounter()

resetChallengeCounter()は、チャレンジ・カウンタをリセットします。

incrementChallengeCounter()

incrementChallengeCounter()は、チャレンジ・カウンタを増分します。

createOrUpdateEntities()

createOrUpdateEntities()は、エンティティを作成または更新します。