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

KBA登録ログインスキーマ

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

認証ログインスキーマ

ユーザー定義の質問

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

代替電子メールの登録

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

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

bind authentication vserver auth1 -portaltheme RfWebUI
bind vpn global -userDataEncryptionKey c1

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

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 ldap1

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

認証ポリシーを認証仮想サーバーにバインドする

bind authentication vserver authvs – policy ldap -priority 1 -nextFactor Registrationfactor -gotoPriorityExpression NEXT
  1. 前のセクションで説明したすべての手順を設定したら、次の GUI 画面が表示される必要があります。

たとえば、URL(例https://lb1.server.com/)経由でアクセスすると、LDAPログオン資格情報のみを必要とする最初のログインページが表示されます。

2要素のログインページ

有効な認証情報を使用してログインすると、[ユーザー登録] ページが次のように表示されます。

KBA登録ログオン

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

EメールID登録のみ

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

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

bind authentication vserver auth1 -portaltheme RfWebUI
bind vpn global -userDataEncryptionKey c1

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

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 ldap1

電子メール登録用の 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

電子メール登録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

認証ポリシーを認証仮想サーバーにバインドする

bind authentication vserver authvs – policy ldap -priority 1 -nextFactor email_Registration_factor - gotoPriorityExpression NEXT

前のセクションで説明したすべての手順を設定したら、次の GUI 画面が表示される必要があります。

たとえば、URL(例https://lb1.server.com/)経由でアクセスすると、LDAPログオン資格情報のみを必要とする最初のログインページが表示され、その後に代替電子メール登録ページが表示されます。

2要素のログインページ

電子メール登録ログオン

Eメールの検証

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

bind authentication vserver auth1 -portaltheme RfWebUI
bind vpn global -userDataEncryptionKey c1

AD属性に格納されているユーザーデータ(KBQ&Aおよび登録された代替メールID)を復号化するには、証明書バインディングを先行する必要があります。

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

電子メール認証ポリシーの作成

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

前述のコマンドでは、 電子メールアドレス は、KBA登録時に提供された代替電子メールIDです。電子メール/パスワード は、管理者が設定する電子メール ID で、ユーザーの登録済みの代替電子メール ID に電子メールを送信する電子メール ID です。

電子メール OTP 検証PolicyLabelの作成

add authentication policylabel email_Validation_factor
bind authentication policylabel email_Validation_factor -policyName email -priority 1 -gotoPriorityExpression NEXT

認証ポリシーを認証仮想サーバーにバインドする

bind authentication vserver authvs – policy ldap1 -priority 1 -nextFactor email_Validation_factor -gotoPriorityExpression NEXT

前のセクションで説明したすべての手順を設定したら、EMAL OTP 検証用の次の GUI 画面が表示される必要があります。

たとえば、URL(例https://lb1.server.com/)経由でアクセスすると、LDAPログオン資格情報のみを必要とする最初のログインページが表示され、その後にEメールOTP検証ページが表示されます。LDAP ポリシーでは、AD 属性からユーザーの電子メール ID を照会できるように alternateeMailAttr を設定することが重要です。

2要素のログインページ

電子メールからのOTP

トラブルシューティング

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

set syslogparams -loglevel DEBUG

登録 — 成功シナリオ

次のエントリは、ユーザー登録が正常に完了したことを示します。

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

登録 — 失敗したシナリオ

ユーザーのログインページには、「リクエストを完了できません」と表示されます。 これは、ユーザーデータを暗号化するためにVPNグローバルにバインドされるcertkeyが見つからないことを示します。

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"

電子メールの検証 — 成功シナリオ

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

"NFactor: Successfully completed email auth, nextfactor is pwd_reset"

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

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

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

EメールOTP