ADC

SMS-OTP für die Webauthentifizierung konfigurieren

NetScaler kann jetzt in einen SMS-Anbieter eines Drittanbieters integriert werden, um eine zusätzliche Authentifizierungsebene bereitzustellen.

Die NetScaler-Appliance kann so konfiguriert werden, dass ein OTP auf dem Handy des Benutzers als zweiten Authentifizierungsfaktor gesendet wird. Die Appliance legt dem Benutzer ein Anmeldeformular zur Eingabe des OTP nach erfolgreicher AD-Anmeldung vor. Erst nach der erfolgreichen Validierung der SMS-OTP-Authentifizierung wird dem Benutzer die angeforderte Ressource angezeigt.

Um die SMS-OTP-Authentifizierung zu erreichen, stützt sich die NetScaler-Appliance auf die folgenden Faktoren im Backend.

  1. Authentifizieren Sie den Benutzer über die LDAP-Authentifizierung und extrahieren Sie die Handynummer des Benutzers.
  2. Erstellen Sie OTP und speichern Sie es in der NS-Variablen. Konfiguration und Verwendung von Variablen.
  3. Senden Sie das OTP über die WebAuth-Authentifizierungsmethode an die aus LDAP extrahierte Handynummer.
  4. Validieren Sie das OTP.

Voraussetzungen

Funktionen aktivieren und SNIP hinzufügen

Führen Sie die folgenden Befehle aus, um die für diese Konfiguration erforderlichen Funktionen zu aktivieren:

enable ns feature LB SSL SSLVPN AAA

add ns ip <SNIP-IP> <subnet mask> -type SNIP
<!--NeedCopy-->

OTP Store konfigurieren

Administratoren müssen eine Datenbank/einen Speicher einrichten, um OTPs zu speichern, die für die SMS-Authentifizierung verwendet werden.

Der empfohlene Konfigurationsbereich für den Parameter expires (OTP-Ablauf) liegt zwischen 30 und 180 Sekunden. Jeder Wert außerhalb dieses Bereichs kann zu einer fehlgeschlagenen SMS-OTP-Konfiguration und einem nFactor-Flow führen.

add ns variable otp_store -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 60
<!--NeedCopy-->

Generieren Sie zufälliges OTP pro Benutzersitzung

Verwenden Sie den folgenden Befehl, um ein 6-stelliges zufälliges OTP pro Benutzersitzung zu generieren und im OTP-Store zu speichern.

add ns assignment generate_otp -variable "$otp_store[AAA.USER.SESSIONID]" -set ("000000" + SYS.RANDOM.MUL(1000000).TYPECAST_UNSIGNED_LONG_AT.TYPECAST_TEXT_T).SUFFIX(6)
<!--NeedCopy-->

Konfigurieren Sie die SMS-OTP-Authentifizierung mit NetScaler

  • Bevor Sie die Funktion zur Zwei-Faktor-Authentifizierung von SMS-Zwei-Faktor-Authentifizierung konfigurieren, müssen Sie eine LDAP-Authentifizierung auf einer NetScaler-Appliance als ersten Faktor bei aktivierter Authentifizierung konfiguriert haben. Anweisungen zum Konfigurieren der LDAP-Authentifizierung finden Sie unter So konfigurieren Sie die LDAP-Authentifizierung mit dem Konfigurationsdienstprogramm.

  • Konfigurieren Sie LDAP und extrahieren Sie die Handynummer, die für die SMS-OTP-Authentifizierung verwendet werden soll.

Beispielkonfiguration für den ersten Faktor

Konfigurieren Sie LDAP als ersten Faktor für die Authentifizierung.

 add authentication ldapAction ldap_extraction_action -serverIP <IP_Adress> -ldapBase OU=Sanity,dc=aaa,dc=local  -ldapBindDn administrator@aaa.local -ldapBindDnPassword <password> -ldapLoginName samaccountname -groupAttrName memberof -subAttributeName CN -authentication disabled

 add authentication Policy ldap_extraction_policy -rule true -action ldap_extraction_action
<!--NeedCopy-->

Hinweis

Die Handynummer kann mit AAA.USER.ATTRIBUTE(1)extrahiert und beim Senden an den Backend-Server mit einbezogen werden.

Beispielkonfiguration für den zweiten Faktor

Mit der folgenden Beispielkonfiguration wird ein OTP generiert, das an den Endbenutzer gesendet werden soll.

add authentication Policy set_otp -rule true -action generate_otp

add authentication policylabel set_otp_label -loginSchema LSCHEMA_INT

 bind authentication policylabel set_otp_label  -policyName set_otp -priority 1

add authentication Policy cascade_noauth -rule true -action NO_AUTHN
<!--NeedCopy-->

Richtlinien und Maßnahmen zur Webauthentifizierung

Konfigurieren Sie nun die Webauthentifizierungsaktion so, dass das OTP zusammen mit der aus der LDAP-Richtlinie abgerufenen Handynummer an einen beliebigen SMS-Absender eines Drittanbieters gesendet wird.

Überprüfen Sie das OTP und senden Sie das generierte OTP an einen SMS-Drittanbieter oder einen beliebigen Webserver, wie unten konfiguriert:

add policy expression otp_exp_post ""Message: OTP is " + $otp_store[AAA.USER.SESSIONID] + " for login into secure access  gateway. Valid till EXPIRE_TIME. Do not share the OTP with anyone for security reasons&Mobile:" + AAA.USER.ATTRIBUTE(1)"

add authentication webAuthAction sms_post -serverIP <web_application_ip> -serverPort 80 -fullReqExpr q{"POST /MyPHP/auth.php HTTP/" + http.req.version.major + "." + http.req.version.major + "\r\nAccept:\*/\*\r\nHost: <web_application_ip> \r\nContent-Length:100\r\n\r\n" + otp_exp_post} -scheme http -successRule true

add authentication Policy post_wpp -rule true -action sms_post
<!--NeedCopy-->

OTP überprüfen

Fügen Sie die folgende Richtlinie und die folgende Richtlinienbezeichnung hinzu, um zu überprüfen, ob das OTP für die Benutzersitzung existiert:

add authentication policylabel check_otp_label -loginSchema LSCHEMA_INT

add authentication Policy check_otp -rule "$otp_store.valueExists(AAA.USER.SESSIONID)" -action NO_AUTHN
<!--NeedCopy-->

OTP-Überprüfung durch Vergleich des vom Benutzer bereitgestellten Werts und des OTP-Speicherwerts

Führen Sie die folgenden Befehle aus, um das OTP zu überprüfen, indem Sie den vom Benutzer angegebenen Wert und den OTP-Speicherwert vergleichen:

add authentication loginSchema onlypassword -authenticationSchema "/nsconfig/loginschema/LoginSchema/OnlyPassword.xml"

add authentication policylabel otp_verify_label -loginSchema onlypassword

add authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($otp_store[AAA.USER.SESSIONID])" -action NO_AUTHN
<!--NeedCopy-->

Binden Sie die Richtlinie an das Label der Authentifizierungsrichtlinie

bind authentication policylabel set_otp_label -policyName cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor check_otp_label

bind authentication policylabel check_otp_label -policyName post_wpp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_verify_label

bind authentication policylabel otp_verify_label -policyName otp_verify -priority 1 -gotoPriorityExpression NEXT
<!--NeedCopy-->

Erstellen Sie einen virtuellen Authentifizierungsserver und einen virtuellen Lastausgleichsserver

 add authentication vserver avs SSL <ipadresss> 443

add ssl certKey aaa_local -cert aaatm_wild.cer -key aaatm_wild.key

bind ssl vserver avs -certkeyName aaa_local

bind authentication vserver avs -policy ldap_extraction_policy -priority 1 -nextFactor set_otp_label -gotoPriorityExpression NEXT

add lb vserver lb HTTP <ip_adresss> 80 -persistenceType NONE -cltTimeout 180 -AuthenticationHost <auth_server> -Authentication ON

add service svc <Ip_adresss> HTTP 80

bind lb vserver lb svc
<!--NeedCopy-->

Hinweis:

Die Richtlinie für die kaskadierende Authentifizierung wurde hinzugefügt, um eine zuverlässige und kontinuierliche Authentifizierung für die Endbenutzer zu ermöglichen. Wenn der aktuelle Faktor ausfällt, wird der nächste Faktor so bewertet, dass das Benutzererlebnis nicht beeinträchtigt wird.

SMS-OTP für die Webauthentifizierung konfigurieren