ADC

メールOTP

電子メール OTP は NetScaler 12.1 ビルド 51.x で導入されました。電子メール OTP 方式では、登録された電子メールアドレスに送信されるワンタイムパスワード (OTP) を使用して認証できます。いずれかのサービスで認証を試みると、サーバーは登録されているユーザーのメールアドレスに OTP を送信します。

電子メール OTP 機能を使用するには、まず代替電子メール ID を登録する必要があります。アカウントがロックアウトされた場合や AD パスワードを忘れた場合は、プライマリ電子メール ID にアクセスできないため、OTP をそのメール ID に送信できるように、代わりの電子メール ID の登録が必要です。

AD 属性の一部として代替電子メール ID をすでに指定している場合は、電子メール ID を登録せずに電子メール OTP 検証を使用できます。電子メールアドレスセクションで代替電子メール ID を指定する代わりに、電子メールアクションで同じ属性を参照できます。

前提条件

電子メール OTP 機能を設定する前に、次の前提条件を確認してください。

  • NetScaler 機能リリース12.1ビルド51.28以降
  • 電子メール OTP 機能は nFactor 認証フローでのみ使用できます

アクティブディレクトリ設定

  • サポートされているバージョンは 2016/2012 および 2008 年のActive Directory ドメイン機能レベルです
  • NetScaler LDAPBindユーザー名には、ユーザーのADパスへの書き込みアクセス権が必要です

E メールサーバー

  • 電子メール OTP ソリューションを機能させるには、SMTP サーバーでログインベースの認証が有効になっていることを確認してください。NetScalerでは、メールOTPが機能するためのAuthログインベースの認証のみがサポートされています。

  • Auth ログインベースの認証が有効になっていることを確認するには、SMTP サーバーで次のコマンドを入力します。ログインベースの認証が有効になっている場合は、出力に「AUTH LOGIN」 というテキストが太字で表示されます

SMTP サーバーでログインベースの認証を有効にする

制限事項

  • この機能は、認証バックエンドが LDAP の場合にのみサポートされます。
  • すでに登録されている代替電子メール ID は表示されません。
  • KBA 登録ページの代替電子メール ID のみ更新できません。
  • KBA と E メール OTP の認証と登録を認証フローの最初の要素にすることはできません。これは、堅牢な認証を実現するための仕様です。
  • 同じ認証 LDAP アクションを使用する場合は、KBA と代替電子メール ID に同じ AD 属性を設定する必要があります。
  • ネイティブプラグインとReceiverの場合、登録はブラウザからのみサポートされます。

Active Directory構成

  • 電子メール OTP は、ユーザーデータストレージとして Active Directory 属性を使用します。

  • 代替メールIDを登録すると、NetScalerアプライアンスに送信され、アプライアンスはそれをADユーザーオブジェクトに設定されたKB属性に保存します。

  • 代替電子メール ID は暗号化され、設定された AD 属性に保存されます。

AD 属性を設定する場合は、次の点を考慮してください。

  • サポートされる属性名の長さは 128 文字以上でなければなりません。
  • 属性タイプは ‘DirectoryString’ でなければなりません。
  • ネイティブ OTP と KBA 登録データには同じ AD 属性を使用できます。
  • LDAP 管理者には、選択した AD 属性に対する書き込みアクセス権が必要です。

既存の属性の使用

この例で使用されている属性は「ユーザーパラメータ」です。これは AD ユーザ内の既存の属性なので、AD 自体に変更を加える必要はありません。ただし、その属性が使用されていないことを確認する必要があります。

属性が使用されないようにするには、[ ADSI ] に移動して [user] を選択し、そのユーザーを右クリックし、属性リストまでスクロールダウンします。 UserParametersの属性値が設定されていないことを確認する必要があります。これは、その属性が現在使用されていないことを示します。

AD 属性設定

電子メール OTP の設定

電子メール OTP ソリューションは、次の 2 つの部分で構成されています。

  • Eメール登録
  • E メール検証

Eメール登録

ユーザーの代替電子メール ID を登録するには 2 つの方法があります。

  1. KBA登録と一緒に
  2. 電子メール ID 登録のみ-この方法は 13.0 ビルド 61.x 以降、12.1 ビルド 58.x 以降でサポートされています。

KBA登録と一緒に

KBA 登録ログインスキーマ

  1. [ セキュリティ] > [AAA — アプリケーショントラフィック] > [ログインスキーマ] > [プロファイル] に移動し、[ **KBA 登録ログインスキーマの追加**] をクリックします。

    KBA 登録ログインスキーマ

  2. KBA 登録認証スキーマを設定します。このログインスキーマが生成されると、登録プロセス中にエンドユーザー向けに設定されたすべての質問が表示されます。 メール登録セクションで 、「代替メールを登録する」オプションをチェックして、ユーザーの代替メールIDを登録します。

    認証ログインスキーマ

    ユーザー定義の質問

  3. メール登録セクションで、「 代替メールを登録する」にチェックを入れて代替メールIDを登録します

    代替メールを登録

前述の KBA 登録スキーマが正常に作成されたら、CLI コマンドプロンプトを使用して次の設定を行います。

  1. ポータルテーマと証明書を VPN Globalにバインドします。

    bind authentication vserver authvs -portaltheme RfWebUI
    bind vpn global -userDataEncryptionKey c1
    <!--NeedCopy-->
    

    AD 属性に保存されているユーザーデータ (KB Q&A および登録済みの代替電子メール ID) を暗号化するには、事前に証明書バインディングを行う必要があります。

  2. LDAP 認証ポリシーを作成します。

    add authentication ldapAction ldap -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd -ldapLoginName samAccountName -secType SSL
    add authentication Policy ldap -rule true -action ldap
    <!--NeedCopy-->
    
  3. KBA 登録ログインスキーマとポリシーラベルを作成します。

    add authentication loginSchema Registrationschema -authenticationSchema /nsconfig/loginschema/LoginSchema/KBARegistrationSchema.xml [This is the authentication schema created in the previous section.]
    add authentication policylabel Registrationfactor -loginSchema Registrationschema
    add authentication ldapAction ldap_registration -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd -ldapLoginName samAccountName -secType SSL  -KBAttribute userParameters -alternateEmailAttr userParameters
    add authentication Policy ldap_registration -rule true -action ldap_registration
    bind authentication policylabel Registrationfactor -policyName ldap_registration -priority 1 -gotoPriorityExpression NEXT
    <!--NeedCopy-->
    
  4. 認証ポリシーを認証仮想サーバーにバインドします。

    bind authentication vserver authvs – policy ldap -priority 1 -nextFactor Registrationfactor -gotoPriorityExpression NEXT
    <!--NeedCopy-->
    
  5. 前のセクションで説明した手順をすべて設定したら、次の GUI 画面が表示されます。たとえば、URL https://lb1.server.com/ 経由でアクセスすると、LDAP ログオン資格情報のみを必要とする初期ログインページが表示されます。

    二要素ログインページ

  6. 有効な認証情報でログインすると、次のようなユーザー登録ページが表示されます。

    KBA 登録ログオン

  7. [ Submit ] をクリックすると、ユーザー登録が成功し、セッションが作成されます。

メールID登録のみ

前述の KBA 登録スキーマが正常に作成されたら、CLI コマンドプロンプトを使用して次の設定を行います。

  1. ポータルテーマと証明書を VPN Globalにバインドします。

    bind authentication vserver authvs -portaltheme RfWebUI
    bind vpn global -userDataEncryptionKey c1
    <!--NeedCopy-->
    

    AD 属性に保存されているユーザーデータ (KB Q&A および登録済み代替メールID) を暗号化するには、事前の証明書バインディングが必要です。

  2. LDAP 認証ポリシーを作成します。

    add authentication ldapAction ldap -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd -ldapLoginName samAccountName -secType SSL
    add authentication Policy ldap -rule true -action ldap
    <!--NeedCopy-->
    
  3. メール登録用の LDAP 認証ポリシーを作成します。

    add authentication ldapAction ldap_email_registration -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd -ldapLoginName samAccountName -secType SSL -KBAttribute userParameters -alternateEmailAttr userParameters
    add authentication Policy ldap_email_registration -rule true -action ldap_email_registration
    <!--NeedCopy-->
    
  4. メール登録ログインスキーマとポリシーラベルを作成します。

    add authentication loginSchema onlyEmailRegistration -authenticationSchema /nsconfig/loginschema/LoginSchema/AltEmailRegister.xml
    add authentication policylabel email_Registration_factor -loginSchema onlyEmailRegistration
    bind authentication policylabel email_Registration_factor -policyName ldap_email_registration -priority 1 -gotoPriorityExpression NEXT
    <!--NeedCopy-->
    
  5. 認証ポリシーを認証仮想サーバーにバインドします。

    bind authentication vserver authvs –policy ldap -priority 1 -nextFactor email_Registration_factor -gotoPriorityExpression NEXT
    <!--NeedCopy-->
    
  6. 前のセクションで説明した手順をすべて設定したら、次の GUI 画面が表示されます。たとえば、URL https://lb1.server.com/ 経由でアクセスすると、LDAP ログオン資格情報のみを必要とする初期ログインページが表示され、その後に別の電子メール登録ページが表示されます。

    二要素ログインページ

    メール登録ログオン

E メール検証

E メールの検証については、次の手順を実行してください。

  1. ポータルテーマと証明書を VPN グローバルにバインド

    bind authentication vserver authvs -portaltheme RfWebUI
    bind vpn global -userDataEncryptionKey c1
    <!--NeedCopy-->
    

    AD 属性に保存されているユーザーデータ (KB Q&A と登録済みの代替電子メール ID) を復号化するには、事前に証明書バインディングを行う必要があります。

  2. LDAP 認証ポリシーを作成します。電子メール OTP 検証にはユーザーの電子メール ID または代替電子メール ID が必要なため、LDAP は電子メール検証要素の前要素でなければなりません。

    add authentication ldapAction ldap1 -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -   ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd -ldapLoginName samAccountName -secType SSL -KBAttribute userParameters -alternateEmailAttr userParameters
    add authentication Policy ldap1 -rule true -action ldap1
    <!--NeedCopy-->
    
  3. E メール認証ポリシーの作成

    add authentication emailAction email -userName sqladmin@aaa.com -password freebsd-encrypted -encryptmethod ENCMTHD_3 -serverURL "smtps://10.2.3.3:25" -content "OTP is $code" -defaultAuthenticationGroup emailgrp -emailAddress "aaa.user.attribute("alternate_mail")"
    add authentication Policy email -rule true –action email
    <!--NeedCopy-->
    

    前述のコマンドでは、 メールアドレスは KBA 登録時に指定された代替電子メール ID ユーザーです。

  4. 電子メール OTP 検証ポリシーラベルを作成します。

    add authentication policylabel email_Validation_factor
    bind authentication policylabel email_Validation_factor -policyName email -priority 1 -gotoPriorityExpression NEXT
    <!--NeedCopy-->
    
  5. 認証ポリシーを認証仮想サーバーにバインド

    bind authentication vserver authvs – policy ldap1 -priority 1 -nextFactor email_Validation_factor -gotoPriorityExpression NEXT
    <!--NeedCopy-->
    
  6. 前のセクションで説明した手順をすべて設定したら、電子メール OTP 検証用の次の GUI 画面が表示されます。たとえば、URL https://lb1.server.com/ 経由でアクセスすると、LDAP ログオン資格情報のみを必要とする初期ログインページが表示され、その後に電子メール OTP 検証ページが表示されます。

    LDAP ポリシーでは、AD 属性からユーザーの電子メール ID をクエリできるように AlternateEmailAttr を設定することが重要です。

    二要素ログインページ

    メールからの OTP

トラブルシューティング

ログを分析する前に、以下のようにログレベルを debug に設定することをお勧めします。

set syslogparams -loglevel DEBUG
<!--NeedCopy-->

登録 — 成功シナリオ

次のエントリは、ユーザ登録が成功したことを示します。

"ns_aaa_insert_hash_keyValue_entry key:kba_registered value:1"
Nov 14 23:35:51 <local0.debug> 10.102.229.76 11/14/2018:18:05:51 GMT  0-PPE-1 : default SSLVPN Message 1588 0 :  "ns_aaa_insert_hash_keyValue_entry key:alternate_mail value:eyJ2ZXJzaW9uIjoiMSIsICJraWQiOiIxbk1oWjN0T2NjLVVvZUx6NDRwZFhxdS01dTA9IiwgImtleSI6IlNiYW9OVlhKNFhUQThKV2dDcmJSV3pxQzRES3QzMWxINUYxQ0tySUpXd0h4SFRIdVlWZjBRRTJtM0ZiYy1RZmlQc0tMeVN2UHpleGlJc2hmVHZBcGVMZjY5dU5iYkYtYXplQzJMTFF1M3JINFVEbzJaSjdhN1pXUFhqbUVrWGdsbjdUYzZ0QWtqWHdQVUI3bE1FYVNpeXhNN1dsRkZXeWtNOVVnOGpPQVdxaz0iLCAiaXYiOiI4RmY3bGRQVzVKLVVEbHV4IiwgImFsZyI6IkFFUzI1Nl9HQ00ifQ==.oKmvOalaOJ3a9z7BcGCSegNPMw=="

<!--NeedCopy-->

登録 — 失敗シナリオ

ユーザーログインページに、「リクエストを完了できません」というエラーメッセージが表示されます。これは、ユーザーデータを暗号化するためにVPN Globalにバインドされる証明書キーが欠落していることを示しています。

Jul 31 08:51:46 <local0.info> 10.102.229.79 07/31/2020:03:21:4 6 GMT  0-PPE-1 : default SSLVPN Message 696 0 :  "Encrypt UserData: No Encryption cert is bound to vpn global"
Jul 31 08:51:46 <local0.info> 10.102.229.79 07/31/2020:03:21:46 GMT  0-PPE-1 : default SSLVPN Message 697 0 :  "KBA Register: Alternate email id Encrypted blob length is ZERO aaauser"
<!--NeedCopy-->

E メール検証 — 成功シナリオ

次のエントリは、電子メール OTP 検証が成功したことを示します。

"NFactor: Successfully completed email auth, nextfactor is pwd_reset"
<!--NeedCopy-->

E メール検証 — 失敗シナリオ

ユーザーログインページに、「リクエストを完了できません」というエラーメッセージが表示されます。これは、電子メールサーバーでログインベースの認証が有効になっていないため、同じ認証を有効にする必要があることを示します。

" /home/build/rs_130_36_15_RTM/usr.src/netscaler/aaad/pocomail.cpp[100]: void ThreadWorker_SendMailJob(SMTPJob*) 0-215: [POCO][JobID: 8]SMTP Configuration is Secure..
/home/build/rs_130_36_15_RTM/usr.src/netscaler/aaad/pocomail.cpp[108]: void ThreadWorker_SendMailJob(SMTPJob*) 0-215: [POCO][JobID: 8] First login succeeded
Wed Mar  4 17:16:28 2020
/home/build/rs_130_36_15_RTM/usr.src/netscaler/aaad/naaad.c[697]: main 0-0: timer 2 firing...
/home/build/rs_130_36_15_RTM/usr.src/netscaler/aaad/pocomail.cpp[127]: void ThreadWorker_SendMailJob(SMTPJob*) 0-0: [POCO-ERROR][JobID: 8] Poco SMTP Mail Dispatch  Failed. SMTP TYPE:1, SMTPException: Exception occurs. SMTP Exception: The mail service does not support LOGIN authentication: 250-smtprelay.citrix.com Hello [10.9.154.239]
250-SIZE 62914560
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-BINARYMIME
250 CHUNKING
<!--NeedCopy-->
メールOTP