Citrix ADC

EメールOTP認証

EメールOTP は、Citrix ADC 12.1ビルド51.xで導入されます。Email OTPメソッドを使用すると、登録された電子メールアドレスに送信されるワンタイムパスワード (OTP) を使用して認証できます。任意のサービスで認証しようとすると、サーバーはユーザーの登録された電子メールアドレスに OTP を送信します。

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

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

前提条件

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

  • Citrix ADC機能リリース12.1ビルド51.28以降
  • Eメール OTP機能は、nFactor認証フローでのみ使用可能

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

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

メール サーバー

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

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

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

制限事項

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

Active Directory構成

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

  • 代替EメールIDを登録すると、それらはCitrix ADCアプライアンスに送信され、アプライアンスはADユーザーオブジェクトの構成済みKB属性にこれを保存します。

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

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

  • 属性の長さは 128 文字以上にする必要があります。
  • 属性タイプは「ディレクトリ文字列」でなければなりません。
  • ネイティブOTPおよびKBA登録データには、同じAD属性を使用できます。
  • LDAP管理者は、選択したAD属性への書き込みアクセス権を持っている必要があります。

既存の属性の使用

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

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

AD属性の設定

EメールOTPの構成

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

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

メール登録

ユーザーの代替Eメール IDを登録するには、次の2つの方法があります:

  1. KBA登録時
  2. EメールID登録のみ-この方法は、13.0 ビルド 61.x以降、12.1 ビルド 58.x以降からサポートされています。

KBA登録時

KBA登録LoginSchema

  1. Security > AAA – Application Traffic > Login Schema > Profilesに移動してAdd KBA Registration LoginSchemaをクリックします。

    KBA登録ログインスキーマ

  2. KBA登録認証スキーマを構成します。一度生成されたこのLoginSchemaは、登録プロセス中にエンドユーザーに対して設定されたすべての質問を表示します。[電子メール登録] セクションで、[代替電子メールの登録] オプションをオンにして、ユーザーの代替電子メール ID を登録します。

    認証ログインスキーマ

    ユーザー定義の質問

  3. [電子メール登録] セクションで、[代替電子メールの登録] をオンにして、代替電子メール ID を登録します。

    代替電子メールの登録

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

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

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

    注:

    ユーザーデータを暗号化するには、先行する証明書バインディングが必要です(KB Q & AD属性に保存されている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登録LoginschemaとPolicyLabelを作成します。

    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ログオン資格情報のみを必要とする初期ログインページが表示されます。

    2要素のログインページ

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

    KBA登録ログオン

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

EメールID登録のみ

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

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

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

    注:

    ユーザーデータを暗号化するには、先行する証明書バインディングが必要です(KB Q & AD属性に格納されている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. Eメール登録LoginschemaとPolicyLabelを作成します。

    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ログオン資格情報のみを必要とする最初のログインページとそれに続く代替の電子メール登録ページが表示されます。

    2要素のログインページ

    電子メール登録ログオン

Eメールの検証

電子メールの検証については、次の手順を実行します。

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

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

    注:

    ユーザーデータを復号化するには、先行する証明書バインディングが必要です(KB Q & AD属性に保存されている代替メール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. メール認証ポリシーを作成する

    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検証policyLabelを作成します。

    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. 前のセクションで説明したすべての手順を構成すると、EMAIL OTP検証用の次のGUI画面が表示されるはずです。たとえば、URL(例https://lb1.server.com/)経由でアクセスすると、LDAPログオン資格情報のみを必要とする最初のログインページが表示され、その後にEメールOTP検証ページが表示されます。

    注:

    LDAPポリシーでは、AD属性からユーザーの電子メールIDを照会できるようにalternateEmailAttrを構成することが重要です。

    2要素のログインページ

    電子メールからのOTP

トラブルシューティング

ログを分析する前に、次のようにデバッグするログレベルを設定することをお勧めします。

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グローバルにバインドされる証明書キーが欠落していることを示しています。

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

電子メールの検証 — 失敗したシナリオ

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

" /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-->
EメールOTP認証