この章では、OTP Anywhereの実装方法について説明します。OTP Anywhereにより、エンド・ユーザーは、サーバーで生成されたワンタイム・パスワード(OTP)を入力することで自己認証を行えます。OTPがSMS経由で送信される場合は、ユーザーの携帯電話が、ユーザーが所有していることを示す物理的な二次的要因として機能します。同様に、有効なユーザーのみがワンタイム・パスワードにアクセスできることをより高いレベルで保証するために、認証が帯域外で送信されます。
ワンタイム・パスワード(OTP)は二次的認証であり、標準的なユーザー名とパスワードの資格証明に加えてこれを使用することにより、既存の認証および権限プロセスが強化され、ユーザーに対するセキュリティが補強されます。アプリケーションから、現在のセッションだけで有効なワンタイム・パスワードがユーザーに送信されます。このパスワードは、ユーザーにチャレンジしてユーザーのアイデンティティを検証するために使用します。
Oracle Adaptive Access Manager 11gには、Oracle User Messaging Service(UMS)を使用したワンタイム・パスワード(OTP)認証をサポートするフレームワークが組み込まれています。この実装により、アプリケーションはOTPを使用してユーザーにチャレンジする際に、Oracle User Messaging Service(UMS)をパスワード配信方法として使用できます。
OTP Anywhereの利点は、次のとおりです。
これは、11gチャレンジ・プロセッサ・フレームワーク上にビルドされています。
Oracle User Messaging Serviceとの統合が即時利用可能です。
登録ユーザー・インタフェースがカスタマイズ可能です。
オプションとしてオプトアウト機能が使用できます。
配信チャネルとして電子メール、SMSがサポートされています。
この項では、OTP Anywhere実装に関連するキー定義、頭字語、略語について説明します。
表16-1 OTP Anywhereの用語
アプリケーションにOTPを構成する前に、次の前提条件が満たされていることを確認してください。
注意: カスタムOAAM拡張のデプロイに精通している必要があります。 Oracle Adaptive Access Managerは、カスタマイズされたJARファイルとその他のファイルを拡張共有ライブラリに追加してカスタマイズされている必要があります。 カスタマイズされたJARファイルとその他のファイルの追加の詳細は、第7章「OAAM拡張共有ライブラリの使用によるOAAMのカスタマイズ」を参照してください。 |
Oracle User Messaging Service(UMS)ドライバとOTPを構成するには、事前にSOAスイート11gをインストールしてSOAドメインを構成し、管理サーバーとSOAサーバーを実行しておく必要があります。また、Oracle Enterprise Manager Fusion Middleware管理コンソールにアクセスする必要もあります。
SOA Suite 11gのインストールの詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suiteインストレーション・ガイド』を参照してください。
User Messaging Serviceには、それぞれ特定のチャネルのトラフィックを処理するドライバがいくつか含まれています。ドライバはチャネルを管理します。ドライバを構成するには、メッセージの送信元である適切な配信サーバー、プロトコルなどのプロパティを指定する必要があります。OAAMサーバーをチャネル用に設定します。
これらのドライバは、特定のインストールで使用できるメッセージング・チャネルに従って、相互に独立してデプロイまたはアンデプロイできます。
Oracle Enterprise Manager Fusion Middleware管理コンソール(通常は、http://host:7001/em
)に移動して、User Messaging Serviceノードを開きます。右パネルのドロップダウン・メニューから、ドライバ・プロパティのオプションを選択します。たとえば、「電子メール・ドライバ・プロパティ」を選択します。表示されたフォームでは、ドライバに関する様々なプロパティ(サーバーやプロトコルなどの詳細情報も含む)を設定して操作に利用できます。たとえば、電子メール操作でドライバが使用できるように、電子メール・サーバーの詳細を入力できます。
電子メール・ドライバをSMTPサーバーに構成します。電子メール・ドライバの構成の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
表16-2 SMTPサーバーへの接続
パラメータ | 説明 |
---|---|
OutgoingMailServer |
電子メールの送信が必要な場合は必須です。例: smtp.<name>.com for <name> |
OutgoingMailServerPort |
SMTPサーバーのポート番号。 |
OutgoingMailServerSecurity |
使用可能な値はTLSとSSLです。 |
OutgoingDefaultFromAddress(オプション) |
電子メール・メッセージの送信者として指定される電子メールのアドレス。 |
OutgoingUsername |
電子メールの送信元であるユーザー・アカウント。 |
OutgoingPassword |
アカウントのパスワード(暗号化形式で格納されています)。 |
「適用」を押します。これらの設定を有効にするには、ドライバを再起動する必要があります。
Short Message Peer-to-Peer(SMPP)は、最も一般的なGSM SMSプロトコルの1つです。ユーザー・メッセージング・サービスには、事前作成のSMPPプロトコルの実装がドライバとして含まれています。このドライバは、ショート・メッセージを送受信できます。
注意: SMSの場合は、デプロイして即時利用できる電子メール・ドライバと異なり、最初にSMPPドライバをデプロイしてから構成を変更する必要があります。 |
『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』のSMPPドライバの構成に関する項のように、SMPPドライバを構成してください。ドライバのゲートウェイ・ベンダーに接続するためのパラメータ値を指定する必要があります。
表16-3 ベンダーへの接続
パラメータ | 説明 |
---|---|
SmsAccountId |
SMS-CのアカウントID。これはベンダー・アカウントIDであり、ベンダーから取得する必要があります。 |
SmsServerHost |
SMS-Cサーバーの名前(またはIPアドレス)。 |
TransmitterSystemPassword |
送信側システムのパスワード。パスワードのタイプ(「間接パスワード、新規のユーザーの作成」、「間接パスワード、既存のユーザーの使用」、「クリアテキスト・パスワードの使用」から選択)とパスワードが含まれています。これは、ベンダー・アカウントIDに対応するパスワードです。 |
TransmitterSystemType |
送信側システムのタイプ。デフォルトは |
ReceiverSystemId |
メッセージの受信に使用するアカウントID。 |
ReceiverSystemType |
受信側システムのタイプ。デフォルトは |
ServerTransmitterPort |
送信側サーバーのTCPポート番号。 |
ServerReceiverPort |
受信側サーバーのTCPポート番号。 |
DefaultEncoding |
SMPPドライバのデフォルトのエンコーディング。デフォルトはIA5です。ドロップダウン・リストから「IA5」、「UCS2」または「GSM_DEFAULT」を選択します。 |
DefaultSenderAddress |
デフォルトの送信者アドレス。 |
パラメータ値を指定した後で、「適用」を押します。これらの設定を有効にするには、ドライバを再起動する必要があります。
配信方法としてOracle User Messaging Service(UMS)を使用するOTPは、OAAMサーバーの標準機能です。この項では、この機能の実装に必要な手順の概要について説明します。
OAAMサーバー・インタフェースのカスタマイズ手順に従って、カスタマイズされたJARファイルとその他のファイルを拡張共有ライブラリに追加します。OAAMサーバー・インタフェースのカスタマイズの詳細は、第7章「OAAM拡張共有ライブラリの使用によるOAAMのカスタマイズ」を参照してください。
表16-4 OTPの設定タスク
番号 | タスク |
---|---|
1 |
|
2 |
Oracle User Messaging Serviceドライバの構成 |
3 |
Oracle User Messaging Serviceの統合 |
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
Oracle User Messaging Service(UMS)とOTP実装は、OAAMサーバーのチャレンジ・プロセス・フレームワークを使用してOAAMサーバー・ログイン、チャレンジ、および登録の各フローに統合されています。ログイン、チャレンジ、登録の各フローの詳細は、第2章「Oracle Adaptive Access Managerのネイティブ統合」を参照してください。
この項では、次の項目について説明します。
Oracle User Messaging Service(UMS)サーバーのURLと資格証明用に設定するプロパティを、表16-5に示します。これらのプロパティは、OAAM管理でプロパティ・エディタを使用して編集できます。注意: エンド・ポイントは、OAAMでOracle User Messaging Serviceへのコール送信に使用するWebサービスURLです。
表16-5 Oracle User Messaging Service ServerのURLと資格証明
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.ums.integration.webservice |
UMSサーバーのWebサービスURL http://<UMSサーバーURL>:<UMSポート>/ucs/messaging/webservice |
|
bharosa.uio.default.ums.integration.parlayx.endpoint |
UMSサーバーのParlayXエンドポイントURL http://<UMSサーバーURL>:<UMSポート>/sdpmessaging/parlayx/SendMessageService |
|
bharosa.uio.default.ums.integration.useParlayX |
false |
WebサービスAPIまたはparlayx APIの使用を構成します。デフォルトでは、この値はfalseです(Webサービスの使用をお薦めします)。 |
bharosa.uio.default.ums.integration.userName |
Oracle User Messaging Serviceサーバーのユーザー名 |
|
bharosa.uio.default.ums.integration.password |
Oracle User Messaging Serviceサーバーのパスワード |
|
bharosa.uio.default.ums.integtaion.policies |
Oracle User Messaging Serviceの認証ポリシー |
|
bharosa.uio.default.ums.integration.fromAddress |
demo@oracle.com |
OTPメッセージ用のOAAM送信元アドレス |
bharosa.uio.default.ums.integration.message.status.poll.attempts |
3 |
待機ページが表示されるたびにステータス・ポーリングを試みる回数 |
bharosa.uio.default.ums.integration.message.status.poll.delay |
1000 |
待機ページが表示されているときのステータス・ポーリング間の遅延 |
bharosa.uio.default.ums.integration.sleepInterval |
10000 |
|
bharosa.uio.default.ums.integration.deliveryPage.delay |
3000 |
Oracle User Messaging Serviceサーバーのプロパティ設定後に、アプリケーションを再起動してください。
チャレンジ・タイプを有効化するには、適切なプロパティをtrueに設定します。プロパティをtrueに設定することにより、ポリシーは、チャレンジ・タイプ(電子メール、SMS、またはIM)を介し、OTPを使用してチャレンジできるようになります。登録フローで電子メール、SMS、またはIMのページが表示されます。
チャレンジ・タイプ列挙は、チャレンジ・タイプの関連作業の実行に必要なJavaコードをチャレンジ・タイプに関連付けるために使用します。チャレンジ・タイプID(ChallengeEmail)は、チャレンジ・タイプを使用する際にルールにより返されるルール・アクションと一致している必要があります。
表16-6 Oracle User Messaging ServiceのOTPチャレンジ・タイプ
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.challenge.type.enum.ChallengeEmail.available |
false |
電子メール・チャレンジ・タイプの可用性フラグ |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.available |
false |
SMSチャレンジ・タイプの可用性フラグ |
bharosa.uio.default.challenge.type.enum.ChallengeIM.available |
false |
インスタント・メッセージのチャレンジ・タイプの可用性フラグ |
登録フローとユーザー・プリファレンスを有効化するには、次のプロパティをtrueに設定します。
表16-7 OTPプロファイル登録とプリファレンス設定の有効化
プロパティ | 説明 |
---|---|
bharosa.uio.default.register.userinfo.enabled |
OTPチャネルが有効化されていて登録が必要な場合、このプロパティをtrueに設定すると、プロファイル登録ページが有効になります。 |
bharosa.uio.default.userpreferences.userinfo.enabled |
OTPチャネルが有効化されていてプリファレンス設定が許可されている場合、このプロパティをtrueに設定すると、ユーザーはプリファレンスを設定できます。 ユーザー・プリファレンス・ページを使用して、ユーザーは、イメージ/フレーズ、チャレンジ質問の変更、デバイスの登録解除およびOTPプロファイルの更新を実行できます。 |
この項では、次の項目について説明します。
表16-8に、OTP登録ページのモバイル登録フィールドの定義と検証を示します。
モバイル入力登録フィールドのプロパティをoaam_custom.propertiesに追加します。
これらのプロパティはoaam_custom.propertiesに追加される必要があります。
表16-8 モバイル入力 - プロパティ・ファイル
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.userinfo.inputs.enum.mobile |
0 |
携帯電話の列挙値 |
bharosa.uio.default.userinfo.inputs.enum.mobile.name |
携帯電話 |
「携帯電話」フィールドの名前 |
bharosa.uio.default.userinfo.inputs.enum.mobile.description |
携帯電話 |
「携帯電話」フィールドの説明 |
bharosa.uio.default.userinfo.inputs.enum.mobile.inputname |
セル番号 |
「携帯電話」フィールドのHTML入力名 |
bharosa.uio.default.userinfo.inputs.enum.mobile.inputtype |
テキスト |
「携帯電話」フィールドのHTML入力タイプ |
bharosa.uio.default.userinfo.inputs.enum.mobile.maxlength |
15 |
「携帯電話」フィールドのHTML入力の最大長 |
bharosa.uio.default.userinfo.inputs.enum.mobile.required |
true |
登録およびユーザー・プリファレンスにおける「携帯電話」フィールドの必須フラグ |
bharosa.uio.default.userinfo.inputs.enum.mobile.order |
1 |
「携帯電話」フィールドのページにおける順序 |
bharosa.uio.default.userinfo.inputs.enum.mobile.enabled |
true |
「携帯電話」列挙項目の有効フラグ |
bharosa.uio.default.userinfo.inputs.enum.mobile.regex |
\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4}) |
「携帯電話」フィールドの検証用の正規表現 |
bharosa.uio.default.userinfo.inputs.enum.mobile.errorCode |
otp.invalid.mobile |
「携帯電話」エントリの検証が失敗した場合にエラー・メッセージを取得するためのエラー・コード |
bharosa.uio.default.userinfo.inputs.enum.mobile.managerClass |
com.bharosa.uio.manager.user.DefaultContactInfoManager |
データ記憶域から携帯電話を保存/取得するために使用するJavaクラス |
モバイル入力登録フィールドのプロパティをclient_resource.propertiesに追加します。
これらのプロパティをリソース・バンドルに追加する必要があります。
次に、OTP登録ページのご使用条件定義の例を示します。
ご使用条件の定義をoaam_custom.propertiesに追加します。
これらのプロパティはoaam_custom.propertiesに追加される必要があります。
表16-10 「ご使用条件」チェック・ボックス
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.userinfo.inputs.enum.terms |
4 |
ご使用条件の列挙値 |
bharosa.uio.default.userinfo.inputs.enum.terms.name |
ご使用条件 |
「ご使用条件」チェック・ボックスの名前 |
bharosa.uio.default.userinfo.inputs.enum.terms.description |
ご使用条件 |
「ご使用条件」チェック・ボックスの説明 |
bharosa.uio.default.userinfo.inputs.enum.terms.inputname |
用語 |
「ご使用条件」チェック・ボックスのHTML入力名 |
bharosa.uio.default.userinfo.inputs.enum.terms.inputtype |
チェックボックス |
「ご使用条件」チェック・ボックスのHTML入力タイプ |
bharosa.uio.default.userinfo.inputs.enum.terms.values |
true |
登録およびユーザー・プリファレンスにおける「ご使用条件」チェック・ボックスの必須値 |
bharosa.uio.default.userinfo.inputs.enum.terms.maxlength |
40 |
「ご使用条件」チェック・ボックスのHTML入力の最大長 |
bharosa.uio.default.userinfo.inputs.enum.terms.required |
true |
登録およびユーザー・プリファレンスにおける「ご使用条件」チェック・ボックスの必須フラグ |
bharosa.uio.default.userinfo.inputs.enum.terms.order |
5 |
「ご使用条件」チェック・ボックスのページにおける順序 |
bharosa.uio.default.userinfo.inputs.enum.terms.enabled |
true |
「ご使用条件」列挙項目の有効フラグ |
bharosa.uio.default.userinfo.inputs.enum.terms.regex |
.+ |
「ご使用条件」チェック・ボックスの検証用の正規表現 |
bharosa.uio.default.userinfo.inputs.enum.terms.errorCode |
otp.invalid.terms |
「ご使用条件」の検証が失敗した場合にエラー・メッセージを取得するためのエラー・コード |
bharosa.uio.default.userinfo.inputs.enum.terms.managerClass |
com.bharosa.uio.manager.user.DefaultContactInfoManager |
データ記憶域からご使用条件を保存/取得するために使用するJavaクラス |
ご使用条件の定義をclient_resource.propertiesに追加します。
ご使用条件のデフォルト・メッセージは、次のリソース・バンドルの値によって定義されます。
表16-11 ご使用条件のメッセージ
プロパティ | 説明 |
---|---|
bharosa.uio.default.userinfo.inputs.enum.terms.name |
[会社名またはサービス名をここに入力]のご使用条件に同意します。<a href="javascript:infoWindow('terms');">「ご使用条件」</a>および<a href="javascript:infoWindow('privacy');">「プライバシ・ポリシー」</a>をクリックすると全体が表示されます。 |
bharosa.uio.default.userinfo.inputs.enum.terms.description |
メッセージおよびデータ・レートが適用されます。<br/>このプログラムに関して質問がある場合は、"HELP"を[コード/短縮コードをここに入力]に送信してください。<br/>プランを取り消すには、"STOP"を[コード/短縮コードをここに入力]にいつでも送信してください。<br/><br/>このサービスの追加情報は、<a href="" target="_blank">[情報URLをここに入力]</a>をご覧ください。<br/><br/><b>サポートされているキャリア:</b><br/>AT&T、Sprint、Nextel、Boost、Verizon Wireless、U.S. Cellular®、T-Mobile®、Cellular One Dobson、Cincinnati Bell、Alltel、Virgin Mobile USA、Cellular South、Unicel、CentennialおよびNtelos。 |
bharosa.uio.default.userinfo.inputs.enum.terms.name
の値には、「ご使用条件」および「プライバシ・ポリシー」に対するOAAMサーバーのポップアップ・メッセージを使用するプレースホルダ・リンクが含まれます。ポップアップのコンテンツのプロパティおよびリソース・キーは次のとおりです。
表16-12 ご使用条件およびプライバシ・ポリシーのポップアップ・メッセージ
プロパティ | 説明 |
---|---|
bharosa.uio.default.messages.enum.terms.name |
ご使用条件 |
bharosa.uio.default.messages.enum.terms.description |
ご使用条件のプレースホルダ・テキスト |
bharosa.uio.default.messages.enum.privacy.name |
プライバシ・ポリシー |
bharosa.uio.default.messages.enum.privacy.description |
プライバシ・ポリシーのプレースホルダ・テキスト |
登録プロパティをclient_resource.propertiesに追加します。
表16-13 登録リソース・バンドル
プロパティ | デフォルト値 |
---|---|
bharosa.uio.default.register.userinfo.title |
OTP Anywhereの登録 |
bharosa.uio.default.register.userinfo.message |
お客様の保護のため、今後、当社がこの番号を使用してお客様の身元を確認できるよう携帯電話番号を入力してください。電話のテキスト・メッセージが有効になっていることをご確認ください。 |
bharosa.uio.default.register.userinfo.registerdevice.message |
現在、安全なデバイスとして使用しているデバイスの登録を確認します: |
bharosa.uio.default.register.userinfo.continue.button |
続行 |
bharosa.uio.default.register.userinfo.decline.message |
辞退されたお客様には再び登録をお願いすることはありません。 |
bharosa.uio.default.register.userinfo.decline.button |
辞退 |
「辞退」ボタン
プロファイル登録ページ上の「辞退」ボタンの有無を制御するには、次のプロパティを設定します。
bharosa.uio.default.register.userinfo.decline.enabled = true
bharosa.uio.default.userpreferences.userinfo.decline.enabled = true
注意: これらのプロパティがtrueであっても、「オプトアウト」プロパティがfalseの場合、このボタンは表示されません。 |
「辞退」ボタンが有効になっている場合、OTP登録ページ上に別のオプションが表示され、このオプションを使用して、ユーザーはOTPチャレンジをオプトアウトできます。ユーザーはOTPの再登録を要求されることはなく、OTPチャレンジを受信しません。ただし、カスタマ・ケアOTPプロファイルのリセット(またはすべてリセット)が実行されると、ユーザーは再度OTPに登録できます。
また、OTPをオプトアウトしたとしても、ユーザーは、ユーザー・プリファレンスのOTPページにアクセスして情報を追加し、「続行」をクリックできます。これにより、OTP対象外のフラグが削除され、ユーザーがOTPに登録されます。
チャレンジ・タイプ・フィールドをclient_resource.propertiesに追加します。
表16-14 チャレンジ・タイプ・リソース・バンドルのアイテム
プロパティ | デフォルト値 |
---|---|
bharosa.uio.default.ChallengeSMS.message |
お客様の保護のため、お客様の携帯電話にお送りしたコードを入力してください。コードが届いていない場合は、電話のテキスト・メッセージが有効になっていることを確認してから、下の再送信リンクをクリックしてください。 |
bharosa.uio.default.ChallengeSMS.registerdevice.message |
現在、安全なデバイスとして使用しているデバイスの登録を確認します: |
bharosa.uio.default.ChallengeSMS.continue.button |
続行 |
OTPメッセージ・フィールドをclient_resource.propertiesに追加します。
チャレンジ・タイプ列挙は、チャレンジ・タイプの関連作業の実行に必要なJavaコードをチャレンジ・タイプに関連付けるために使用します。チャレンジ・タイプID(ChallengeEmail)は、チャレンジ・タイプを使用する際にルールにより返されるルール・アクションと一致している必要があります。「チャネル」は通常、OTPをユーザーに送信するための配信チャネル(電子メール、SMS、またはIM)です。
表16-17 チャレンジ・タイプの列挙
プロパティ | 説明 |
---|---|
available |
チャレンジ・タイプが使用可能(サービスが準備され構成されている)かどうか。OTPチャレンジ・タイプを有効/無効にするには、可用性フラグを設定する必要があります。 |
processor |
このタイプのチャレンジを処理するためのJavaクラス。 |
requiredInfo |
登録入力列挙からの入力のカンマ区切りリスト。 |
表16-18に、SMSチャレンジ・プロセッサを登録するプロパティと、サービスを使用可能(または使用不可)とマークするプロパティを示します。
表16-18 SMSチャレンジ・プロセッサを登録するプロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.challenge.type.enum.ChallengeSMS |
2 |
SMSチャレンジの列挙値 |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.name |
SMSチャレンジ |
SMSチャレンジ・タイプの名前 |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.description |
SMSチャレンジ |
SMSチャレンジ・タイプの説明 |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.processor |
com.bharosa.uio.processor.challenge.ChallengeSMSProcessor |
SMSチャレンジ・タイプのプロセッサ・クラス |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.requiredInfo |
モバイル |
SMSチャレンジ・タイプでユーザーにチャレンジするための必須フィールド |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.available |
false |
SMSチャレンジ・タイプの可用性フラグ |
bharosa.uio.default.challenge.type.enum.ChallengeSMS.otp |
true |
SMSチャレンジ・タイプのOTPフラグ |
プロパティの編集によって、ワンタイム・パスワードをカスタマイズできます。OTPの生成には、次のプロパティを使用します。
# OTP pin generation config bharosa.uio.otp.generate.code.length = 5 bharosa.uio.otp.generate.code.characters = 1234567890
デフォルトのOTPコードは5文字であり、数字0~9で構成されます(例: 44569)。
bharosa.uio.otp.generate.code.lengthは、OTPの長さを指定します。
bharosa.uio.otp.generate.code.charactersは、OTPの生成時に使用する文字を指定します。
数字0~9および文字a~dを使用して4文字のOTPコード(例: 0c6a)を生成する例を次に示します。
bharosa.uio.otp.generate.code.length = 4 bharosa.uio.otp.generate.code.characters = 1234567890abcd
OTP SMSパスワードの有効期間を設定するには、次のプロパティを追加します。
bharosa.uio.default.challenge.type.enum.ChallengeSMS.otpexpirytimeMs
OTP電子メール・パスワードの有効期間を設定するには、次のプロパティを追加します。
bharosa.uio.default.challenge.type.enum.ChallengeEmail.otpexpirytimeMs
をoaam_custom.properties
に追加します。
時間の単位はミリ秒です。値がミリ秒でない場合は、変換する必要があります。たとえば、OTPの有効期間を5分に設定するには、このプロパティを300000ミリ秒(5分)に設定する必要があります。
注意: このプロパティはOTP APIに作用しますが、現在、OAAMサーバーではこのAPIを使用していません。したがって、デフォルトでは、OAAMサーバーのOTPはセッション中は有効です(または使用されるまで有効です)。 |
デフォルトでは、使用されるチャレンジ・デバイスはルールを使用して構成されています。ルールはAuthentiPadチェックポイントの下に存在し、これにより、デバイスの目的に基づいて使用するデバイスのタイプを指定できます。
チャレンジ・タイプを使用するポリシーを作成または更新する手順は次のとおりです。
列挙rule.action.enum
を指定する新しいルール・アクションMyChallenge
を追加します。
新規作成されたアクションMyChallenge
を戻すポリシーを作成して、チャレンジ・メソッドを使用します。
または、プロパティを使用してチャレンジ・デバイスを構成する場合、bharosa.uio.default.use.authentipad.checkpoint
をfalse
に設定して、AuthentiPadチェックポイントをバイパスできます。
チャレンジ・タイプで使用するデバイスを追加できます。
bharosa.uio.<application>.<challengeType>.authenticator.device=<value>
次の例では、チャレンジ・タイプ・キーのChallengeEmail
とChallengeSMS
を使用してプロパティ名を作成しています。
bharosa.uio.default.ChallengeSMS.authenticator.device=DevicePinPad bharosa.uio.default.ChallengeEmail.authenticator.device=DevicePinPad
使用可能なチャレンジ・デバイス値はDeviceKeyPadFull
、DeviceKeyPadAlpha
、DeviceTextPad
、DeviceQuestionPad
、DevicePinPad
およびDeviceHTMLControl
です。
表16-19 認証デバイス・タイプ
プロパティ | 説明 |
---|---|
None |
HTMLページまたは認証パッドはありません。 |
DeviceKeyPadFull |
KeyPadを使用してユーザーにチャレンジします。 |
DeviceKeyPadAlpha |
英数字KeyPad(数字と文字のみで特殊文字は含みません)を使用して、ユーザーにチャレンジします。 |
DeviceTextPad |
TextPadを使用してユーザーにチャレンジします。 |
DeviceQuestionPad |
QuestionPadを使用してユーザーにチャレンジします。 |
DevicePinPad |
PinPadを使用してユーザーにチャレンジします。 |
DeviceHTMLControl |
認証パッドのかわりにHTMLページを使用して、ユーザーにチャレンジします。 |
この項では、OTP Anywhereのデータ格納をカスタマイズする方法について説明します。OTP Anywhereをカスタマイズするには、com.bharosa.uio.manager.user.UserDataManagerIntfインタフェースを実装します。
カスタマイズで使用するメソッドは、次のとおりです。
public String getUserData(UIOSessionData sessionData, String key)
;
public void setUserData(UIOSessionData sessionData, String key, String value);
デフォルト実装はインタフェース上に展開して、すべてのgetおよびsetを次の2つのアイテム、UserDataValueおよびUserDataFlagに分解します。UserDataFlag
は、値が設定されていることを追跡するか、値をソフト・リセットするために使用されます。ルールを使用してユーザーが指定のアイテムに対して登録されているかどうかを確認する際に、OAAMデータベース内でUserDataFlag
が確認されます。UserDataValue
は、ユーザーが入力した実際のデータ要素です。デフォルト実装では、これはOAAMデータベースにも格納されますが、DefaultContactInfoManager
クラスを拡張し、UserDataValue
のメソッド(getUserDataValue
およびsetUserDataValue
)をオーバーライドすることにより、必要に応じてデータを外部の場所に格納することもできます。
メソッド
public class DefaultContactInfoManager implements UserDataManagerIntf { public String getUserData(UIOSessionData sessionData, String key){ if (getUserDataFlag(sessionData, key)){ return getUserDataValue(sessionData, key); } return null; } public void setUserData(UIOSessionData sessionData, String key, String value){ setUserDataValue(sessionData, key, value); setUserDataFlag(sessionData, key, value); } protected void setUserDataValue(UIOSessionData sessionData, String key, String value){ VCryptAuthUser clientUser = sessionData.getClientAuthUser(); if (clientUser != null) { clientUser.setUserData(BharosaConfig.get("oaam.otp.contact.info.prefix", "otpContactInfo_") + key, value); } } protected String getUserDataValue(UIOSessionData sessionData, String key) { VCryptAuthUser clientUser = sessionData.getClientAuthUser(); if (clientUser != null) { return clientUser.getUserData(BharosaConfig.get("oaam.otp.contact.info.prefix", "otpContactInfo_") + key); } return null; } protected void setUserDataFlag(UIOSessionData sessionData, String key, String value){ VCryptAuthUser clientUser = sessionData.getClientAuthUser(); if (clientUser != null) { if (StringUtil.isEmpty(value)) { clientUser.setUserData(BharosaConfig.get("oaam.otp.contact.info.flag.prefix", "otpContactInfoFlag_") + key, null); } else { clientUser.setUserData(BharosaConfig.get("oaam.otp.contact.info.flag.prefix", "otpContactInfoFlag_") + key, "true"); } } } protected boolean getUserDataFlag(UIOSessionData sessionData, String key) { VCryptAuthUser clientUser = sessionData.getClientAuthUser(); if (clientUser != null) { return Boolean.valueOf(clientUser.getUserData(BharosaConfig.get("oaam.otp.contact.info.flag.prefix", "otpContactInfoFlag_") + key)); } return false; } }
ベース実装クラスDefaultContactInfoManager
を拡張し、メソッドsetUserDataValue
およびgetUserDataValue
をオーバーライドして、実装用の適切な場所にデータ値を格納します。
デフォルト実装のsetUserDataFlag
およびgetUserDataFlag
を所定の場所に置いたままにして、OAAMでユーザーに設定されたデータを適切に追跡できるようにします。
OTP Anywhereの登録フィールドは、ユーザー定義列挙bharosa.uio.default.userinfo.inputs.enum
によって定義されます。
各要素には、登録データの格納に使用されるクラスを指定するmanagerClass
プロパティが割り当てられています。
たとえば、デフォルトの携帯電話要素は次のようになります。
bharosa.uio.default.userinfo.inputs.enum=Enum for Contact information bharosa.uio.default.userinfo.inputs.enum.mobile=0 bharosa.uio.default.userinfo.inputs.enum.mobile.name=Mobile Phone bharosa.uio.default.userinfo.inputs.enum.mobile.description=Mobile Phone bharosa.uio.default.userinfo.inputs.enum.mobile.inputname=cellnumber bharosa.uio.default.userinfo.inputs.enum.mobile.inputtype=text bharosa.uio.default.userinfo.inputs.enum.mobile.maxlength=16 bharosa.uio.default.userinfo.inputs.enum.mobile.required=true bharosa.uio.default.userinfo.inputs.enum.mobile.order=4 bharosa.uio.default.userinfo.inputs.enum.mobile.enabled=true bharosa.uio.default.userinfo.inputs.enum.mobile.regex=\\d{1}\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4}) bharosa.uio.default.userinfo.inputs.enum.mobile.errorCode=otp.invalid.mobile bharosa.uio.default.userinfo.inputs.enum.mobile.managerClass=com.bharosa.uio.manager.user.DefaultContactInfoManager
ここに示すように、デフォルトの携帯電話定義ではDefaultContactInfoManager
クラスを使用してデータを管理しています。カスタム実装が必要な場合は、OAAM管理で(またはOAAM拡張共有ライブラリを使用して)カスタム・クラスを使用するように、managerClass
属性の値を更新できます。
この項では、次の項目について説明します。
表16-20に、追加の登録フィールド定義を示します。
表16-20 連絡先情報入力
プロパティ | 説明 |
---|---|
inputname |
HTML形式の入力フィールドに使用される名前。 |
inputtype |
テキスト入力またはパスワード入力用に設定されます。 |
maxlength |
ユーザー入力の最大長。 |
required |
フィールドが登録ページで必須である場合に設定されます。 |
order |
ユーザー・インタフェースに表示される順序。 |
regex |
このフィールドのユーザー入力を検証するために使用される正規表現。 |
errorCode |
検証エラー・メッセージ(bharosa.uio.<application ID>.error.<errorCode>)を参照するために使用されるエラー・コード。 |
managerClass |
com.bharosa.uio.manager.user.UserDataManagerIntfを実装するJavaクラス(Oracle Adaptive Access Managerデータベースにデータを格納する場合、このプロパティはcom.bharosa.uio.manager.user.DefaultContactInfoManagerに設定される必要があります)。 |
次に、オーセンティケータのOTP登録ページで電子メール登録を定義する列挙の例を示します。
表16-21 電子メール入力
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.userinfo.inputs.enum.email |
1 |
「電子メール・アドレス」の列挙値 |
bharosa.uio.default.userinfo.inputs.enum.email.name |
電子メール・アドレス |
「電子メール・アドレス」フィールドの名前 |
bharosa.uio.default.userinfo.inputs.enum.email.description |
電子メール・アドレス |
「電子メール・アドレス」フィールドの説明 |
bharosa.uio.default.userinfo.inputs.enum.email.inputname |
電子メール |
「電子メール・アドレス」フィールドのHTML入力名 |
bharosa.uio.default.userinfo.inputs.enum.email.inputtype |
テキスト |
「電子メール・アドレス」フィールドのHTML入力タイプ |
bharosa.uio.default.userinfo.inputs.enum.email.maxlength |
40 |
「電子メール・アドレス」フィールドのHTML入力の最大長 |
bharosa.uio.default.userinfo.inputs.enum.email.required |
true |
登録およびユーザー・プリファレンスにおける「電子メール・アドレス」フィールドの必須フラグ |
bharosa.uio.default.userinfo.inputs.enum.email.order |
2 |
「電子メール・アドレス」フィールドのページにおける順序 |
bharosa.uio.default.userinfo.inputs.enum.email.enabled |
false |
「電子メール・アドレス」列挙項目の有効フラグ |
bharosa.uio.default.userinfo.inputs.enum.email.regex |
.+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3} |
「電子メール・アドレス」フィールドの検証用の正規表現 |
bharosa.uio.default.userinfo.inputs.enum.email.errorCode |
otp.invalid.email |
「電子メール・アドレス」エントリの検証が失敗した場合にエラー・メッセージを取得するためのエラー・コード |
bharosa.uio.default.userinfo.inputs.enum.email.managerClass |
com.bharosa.uio.manager.user.DefaultContactInfoManager |
データ記憶域から電子メール・アドレスを保存/取得するために使用するJavaクラス |
次に、オーセンティケータのOTP登録ページで電話登録を定義する列挙の例を示します。
表16-22 電話入力
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.userinfo.inputs.enum.phone |
2 |
電話番号の列挙値 |
bharosa.uio.default.userinfo.inputs.enum.phone.name |
電話番号 |
電話番号フィールドの名前 |
bharosa.uio.default.userinfo.inputs.enum.phone.description |
電話番号 |
電話番号フィールドの説明 |
bharosa.uio.default.userinfo.inputs.enum.phone.inputname |
電話 |
電話番号フィールドのHTML入力名 |
bharosa.uio.default.userinfo.inputs.enum.phone.inputtype |
テキスト |
電話番号フィールドのHTML入力タイプ |
bharosa.uio.default.userinfo.inputs.enum.phone.maxlength |
15 |
電話番号フィールドのHTML入力の最大長 |
bharosa.uio.default.userinfo.inputs.enum.phone.required |
true |
登録およびユーザー・プリファレンスにおける電話番号フィールドの必須フラグ |
bharosa.uio.default.userinfo.inputs.enum.phone.order |
3 |
電話番号フィールドのページ上の順序 |
bharosa.uio.default.userinfo.inputs.enum.phone.enabled |
false |
電話番号列挙アイテムの有効化されたフラグ |
bharosa.uio.default.userinfo.inputs.enum.phone.regex |
\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4}) |
電話番号フィールドの検証用の正規表現 |
bharosa.uio.default.userinfo.inputs.enum.phone.errorCode |
otp.invalid.phone |
電話番号エントリの検証が失敗した場合にエラー・メッセージを取得するためのエラー・コード |
bharosa.uio.default.userinfo.inputs.enum.phone.managerClass |
com.bharosa.uio.manager.user.DefaultContactInfoManager |
データ格納への電話番号の保存またはデータ格納からの電話番号の取得に使用するJavaクラス |
登録に関して電子メールのエントリ情報のみを表示し、携帯電話のエントリ情報を無効にするには、次のように設定します。
bharosa.uio.default.userinfo.inputs.enum.email.enabled=true
bharosa.uio.default.userinfo.inputs.enum.mobile.enabled=false
電子メール・フィールドを有効にするには、サーバーを再起動する必要があります。
次に、オーセンティケータのOTP登録ページでIM登録を定義する列挙の例を示します。
表16-23 IM入力
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.userinfo.inputs.enum.im |
3 |
インスタント・メッセージの列挙値 |
bharosa.uio.default.userinfo.inputs.enum.im.name |
インスタント・メッセージ |
インスタント・メッセージ・フィールドの名前 |
bharosa.uio.default.userinfo.inputs.enum.im.description |
インスタント・メッセージ |
インスタント・メッセージ・フィールドの説明 |
bharosa.uio.default.userinfo.inputs.enum.im.inputname |
im |
インスタント・メッセージ・フィールドのHTML入力名 |
bharosa.uio.default.userinfo.inputs.enum.im.inputtype |
テキスト |
インスタント・メッセージ・フィールドのHTML入力タイプ |
bharosa.uio.default.userinfo.inputs.enum.im.maxlength |
15 |
インスタント・メッセージ・フィールドのHTML入力の最大長 |
bharosa.uio.default.userinfo.inputs.enum.im.required |
true |
登録およびユーザー・プリファレンスにおけるインスタント・メッセージ・フィールドの必須フラグ |
bharosa.uio.default.userinfo.inputs.enum.im.order |
4 |
インスタント・メッセージ・フィールドのページ上の順序 |
bharosa.uio.default.userinfo.inputs.enum.im.enabled |
false |
インスタント・メッセージ列挙アイテムの有効化されたフラグ |
bharosa.uio.default.userinfo.inputs.enum.im.regex |
TBD |
インスタント・メッセージ・フィールドの検証用の正規表現 |
bharosa.uio.default.userinfo.inputs.enum.im.errorCode |
otp.invalid.im |
インスタント・メッセージのエントリの検証が失敗した場合にエラー・メッセージを取得するためのエラー・コード |
bharosa.uio.default.userinfo.inputs.enum.im.managerClass |
com.bharosa.uio.manager.user.DefaultContactInfoManager |
データ格納へのインスタント・メッセージの保存またはデータ格納からのインスタント・メッセージの取得に使用するJavaクラス |
チャレンジ・メッセージ・リソース・バンドルのその他の例は、以降の項に示します。これらのプロパティをclient_resource.propertiesに追加する必要があります。
表16-24に、OTP電子メール・メッセージのプロパティを示します。カスタマイズされたOTP電子メール・メッセージのプロパティbharosa.uio.default.ChallengeEmail.message.subject
およびbharosa.uio.default.ChallengeEmail.message.body
を、client_resource.properties
に追加する必要があります。プロパティbharosa.uio.default.ChallengeEmail.message.from.address
をoaam_custom.properties
に追加する必要があります。
表16-26に、追加のプロセッサ登録プロパティを示します。
表16-26 チャレンジ・タイプの列挙
プロパティ | 説明 |
---|---|
available |
チャレンジ・タイプが使用可能(サービスが準備され構成されている)かどうか。OTPチャレンジ・タイプを有効/無効にするには、可用性フラグを設定する必要があります。 |
processor |
このタイプのチャレンジを処理するためのJavaクラス。 |
requiredInfo |
登録入力列挙からの入力のカンマ区切りリスト。 |
表16-27に、電子メール・チャレンジ・プロセッサを登録するプロパティと、サービスを使用可能(または使用不可)としてマークするプロパティを示します。
表16-27 電子メール・チャレンジ・プロセッサを登録するプロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.challenge.type.enum.ChallengeEmail |
1 |
電子メール・チャレンジの列挙値 |
bharosa.uio.default.challenge.type.enum.ChallengeEmail.name |
電子メール・チャレンジ |
電子メール・チャレンジ・タイプの名前 |
bharosa.uio.default.challenge.type.enum.ChallengeEmail.description |
電子メール・チャレンジ |
電子メール・チャレンジ・タイプの説明 |
bharosa.uio.default.challenge.type.enum.ChallengeEmail.processor |
com.bharosa.uio.processor.challenge.ChallengeEmailProcessor |
電子メール・チャレンジ・タイプのプロセッサ・クラス |
bharosa.uio.default.challenge.type.enum.ChallengeEmail.requiredInfo |
電子メール |
電子メール・チャレンジ・タイプでユーザーにチャレンジするための必須フィールド |
bharosa.uio.default.challenge.type.enum.ChallengeEmail.available |
false |
電子メール・チャレンジ・タイプの可用性フラグ |
bharosa.uio.default.challenge.type.enum.ChallengeEmail.otp |
true |
電子メール・チャレンジ・タイプのOTPフラグ |
表16-28に、IMチャレンジ・プロセッサを登録するプロパティと、サービスを使用可能(または使用不可)としてマークするプロパティを示します。
表16-28 IMチャレンジ・プロセッサを登録するプロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
bharosa.uio.default.challenge.type.enum.ChallengeIM |
3 |
インスタント・メッセージのチャレンジ列挙値 |
bharosa.uio.default.challenge.type.enum.ChallengeIM.name |
IMチャレンジ |
インスタント・メッセージのチャレンジ・タイプの名前 |
bharosa.uio.default.challenge.type.enum.ChallengeIM.description |
インスタント・メッセージのチャレンジ |
インスタント・メッセージのチャレンジ・タイプの説明 |
bharosa.uio.default.challenge.type.enum.ChallengeIM.processor |
com.bharosa.uio.processor.challenge.ChallengeIMProcessor |
インスタント・メッセージのチャレンジ・タイプのプロセッサ・クラス |
bharosa.uio.default.challenge.type.enum.ChallengeIM.requiredInfo |
モバイル |
インスタント・メッセージのチャレンジ・タイプでユーザーにチャレンジするための必須フィールド |
bharosa.uio.default.challenge.type.enum.ChallengeIM.available |
false |
インスタント・メッセージのチャレンジ・タイプの可用性フラグ |
bharosa.uio.default.challenge.type.enum.ChallengeIM.otp |
true |
インスタント・メッセージのチャレンジ・タイプのOTPフラグ |
チャレンジ・シナリオの例は、次のとおりです。
Oracle Adaptive Access Managerサーバーにより、ユーザーに対してユーザー名ページが表示されます。
ユーザーは、ユーザー名ページでユーザー名を送信します。
Oracle Adaptive Access Managerにより、ユーザー・デバイスのフィンガープリントが処理され、ユーザーがパスワード・ページに進むことを許可するかどうかを決定する認証前ルールが実行されます。
ユーザーは、パスワード・ページに進むことが許可されて、自分のパスワードを入力します。
OAAMポリシーにより、ユーザーにチャレンジする必要があることが示されます。
チャレンジ・チェックポイントが実行され、使用するチャレンジのタイプ(KBA、電子メール、SMSなど)が決定されます。SMSチャレンジが返された場合は、SMSチャレンジ・プロセッサがロードされます。このSMSチャレンジ・プロセッサを使用してOTPが生成され、そのOTPがSMSを通じてユーザーに配信されます。
SMSが送信されると、ユーザーのOTPがSMSでユーザーに送信されたことを示すチャレンジ・ページが表示されます。
アプリケーションでの処理を継続するために、ユーザーは正しいOTPを入力してからログイン・フローを完了します。
生成されてユーザーに送信されたOTPは、各HTTPセッションで1回のみ入力可能です。ユーザーのHTTPセッションが期限切れになると、ユーザーが後続のセッションで再度チャレンジされた場合に新規OTPが生成されて送信されます。