Configurer SMS OTP pour l’authentification Web
NetScaler ADC peut désormais être intégré à un fournisseur SMS tiers pour fournir une couche supplémentaire d’authentification.
L’appliance NetScaler ADC peut être configurée pour envoyer un OTP sur le mobile de l’utilisateur en tant que deuxième facteur d’authentification. L’appliance présente à l’utilisateur un formulaire d’ouverture de session pour entrer dans l’OTP après une connexion AD réussie. Ce n’est qu’après la validation réussie de l’authentification OTP par SMS que l’utilisateur reçoit la ressource demandée.
Pour obtenir l’authentification OTP SMS, l’appliance NetScaler ADC s’appuie sur les facteurs suivants dans le back-end.
- Authentifiez l’utilisateur à l’aide de l’authentification LDAP et extrayez le numéro de téléphone portable de l’utilisateur.
- Créez OTP et stockez-le dans la variable NS. Configuration et utilisation de variables.
- Envoyez l’OTP via la méthode d’authentification WebAuth au numéro de téléphone portable extrait de LDAP.
- Validez l’OTP.
Composants requis
Configurer le magasin OTP
Les administrateurs configurent une base de données/un magasin pour enregistrer les OTP utilisés pour l’authentification par SMS à l’aide de la commande CLI suivante.
add ns variable otp_store -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 5
<!--NeedCopy-->
Générer un OTP aléatoire par session utilisateur
Utilisez la commande suivante pour générer un OTP aléatoire à 6 chiffres par session utilisateur et enregistrez-le dans le magasin OTP.
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-->
Configurer l’authentification OTP par SMS avec NetScaler ADC
-
Avant de configurer la fonctionnalité d’authentification à deux facteurs SMS, une authentification LDAP doit être configurée sur une appliance NetScaler ADC comme premier facteur avec l’authentification activée. Pour obtenir des instructions sur la configuration de l’authentification LDAP, reportez-vous à la section Pour configurer l’authentification LDAP à l’aide de l’utilitaire de configuration.
-
Configurez LDAP et extrayez le numéro de téléphone portable à utiliser pour l’authentification OTP par SMS.
Exemple de configuration du premier facteur
add authentication ldapAction ldap_action -serverIP 1.1.1.1 -serverPort 3268 -authTimeout 30 -ldapBase "dc=nsi-test,dc=com" -ldapBindDn Administrator@nsi-test.com -ldapBindDnPassword freebsd -ldapLoginName samaccountname -groupAttrName memberOf -ssoNameAttribute samaccountname -Attribute1 mobile -email mail
add authentication Policy ldap_policy -rule true -action ldap_action
<!--NeedCopy-->
Remarque
Le numéro de téléphone portable peut être extrait à l’aide de AAA.USER.ATTRIBUTE (1) et peut être inclus lors de son envoi au serveur principal.
Exemple de configuration du deuxième facteur
À l’aide de l’exemple de configuration suivant, un OTP qui doit être envoyé à l’utilisateur final est généré.
add authentication policylabel set_otp -loginSchema LSCHEMA_INT
add authentication Policy set_otp -rule true -action test
add authentication policy cascade_noauth -rule true -action NO_AUTHN
add authentication Policy check_otp -rule "$test.valueExists(AAA.USER.SESSIONID)" -action NO_AUTHN
add authentication policylabel check_otp -loginSchema LSCHEMA_INTbind authentication policylabel set_otp -policyName set_otp -priority 1 -gotoPriorityExpression NEXT
bind authentication policylabel set_otp -policyName cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor check_otpbind authentication policylabel check_otp -policyName wpp -priority 1 -gotoPriorityExpression NEXT
bind authentication policylabel check_otp -policyName wpp_cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor otp_verifyadd authentication Policy wpp -rule true -action webAuth_POST
add authentication Policy wpp_cascade_noauth -rule true -action NO_AUTHNadd authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($test[AAA.USER.SESSIONID])" -action NO_AUTHN
add authentication policylabel otp_verify -loginSchema onlyPassword
bind authentication policylabel otp_verify -policyName otp_verify -priority 1 -gotoPriorityExpression NEXTadd authentication vserver avs SSL 10.106.40.121 443
bind authentication vserver avs -policy ldap_policy -priority 1 -nextFactor set_otp -gotoPriorityExpression NEXT
<!--NeedCopy-->
Exemple de configuration du troisième facteur
À l’aide de l’exemple de configuration suivant, l’OTP généré dans la configuration du second facteur est envoyé à l’utilisateur final à l’aide de la méthode d’authentification Web. Pour plus de détails sur l’authentification Web, voir Authentification Web.
-
Exemple de configuration d’authentification Web lorsque le serveur SMS expose l’API via la méthode GET.
add policy expression otp_exp_get ""method=sendMessage&send_to=" + AAA.USER.ATTRIBUTE(1) + "&msg=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.&userid=#####&password=###=1.0"" add authentication webAuthAction webAuth_Get -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"GET /GatewayAPI/rest?" + otp_exp_get + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1) + "\r\nAccept:\*/\*\r\nHost: <FQDN>\r\n"} -successRule "http.res.status.eq(200)" -scheme http <!--NeedCopy-->
-
Exemple de configuration d’authentification Web lorsque le serveur SMS expose l’API via la méthode GET.
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 webAuth_POST -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"POST /MyPHP/auth.php HTTP/" + http.req.version.major + "." + http.req.version.major + "\r\nAccept:\*/\*\r\nHost: 10.106.168.210 \r\nContent-Length: 10\r\n\r\n" + otp_exp_post} -scheme http -successRule true <!--NeedCopy-->
add authentication webAuthAction webAuth_Get -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"GET /GatewayAPI/rest?" + otp_exp_get + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1) + "\r\nAccept:/\r\nHost: <FQDN>\r\n"} -successRule "http.res.status.eq(200)" -scheme http add policy expression otp_exp_post "$otp_store[AAA.USER.SESSIONID]" <!--NeedCopy-->
-
Enfin, envoyez l’OTP.
add authentication Policy wpp -rule true -action webAuth_POST add authentication policylabel send_otp -loginSchema LSCHEMA_INT bind authentication policylabel send_otp -policyName wpp -priority 1 -gotoPriorityExpression NEXT <!--NeedCopy-->
Exemple de configuration du quatrième facteur
À l’aide de l’exemple de configuration suivant, validez l’OTP envoyé à l’utilisateur final.
Dans cette configuration, une règle de stratégie est utilisée pour valider l’OTP par rapport à celui qui est envoyé à l’utilisateur final.
add authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($otp_store[AAA.USER.SESSIONID])" -action NO_AUTHN
add authentication policylabel otp_verify -loginSchema onlyPassword
bind authentication policylabel otp_verify -policyName otp_verify -priority 1 -gotoPriorityExpression NEXT
<!--NeedCopy-->
Utilisez la commande suivante pour ajouter le schéma de connexion OnlyPassword :
add authentication loginSchema onlypassword -authenticationschema /nsconfig/loginschema/LoginSchema/OnlyPassword.xml"
<!--NeedCopy-->
Liez tous les facteurs d’une authentification OTP par SMS réussie
Utilisez les commandes CLI suivantes pour relier tous les facteurs entre eux.
bind authentication policylabel send_otp -policyName wpp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_verify
<!--NeedCopy-->
Remarque :
La stratégie d’authentification en cascade a été ajoutée pour permettre une authentification fiable et continue pour les utilisateurs finaux. Si le facteur actuel échoue, le facteur suivant est évalué de telle sorte qu’il n’y ait aucun impact sur l’expérience utilisateur.