Citrix ADC

Web 認証を使用した SMS 二要素認証

Citrix ADCをサードパーティのSMSプロバイダーと統合して、追加の認証レイヤーを提供できるようになりました。

Citrix ADCアプライアンスは、認証の第2要素としてユーザーのモバイルでOTPを送信するように構成できます。アプライアンスは、AD ログインの成功後に OTP に入るためのログオンフォームをユーザーに提示します。これは、第 2 要素認証が成功した後にのみ、要求されたリソースがユーザーに提示されます。

Citrix ADCでSMS二要素認証を構成する

SMS二要素認証機能を構成する前に、Citrix ADCアプライアンスで認証を有効にした第1要素としてLDAP認証を構成する必要があります。LDAP 認証を設定する手順については、「 構成ユーティリティを使用して LDAP 認証を構成するには」を参照してください。

携帯電話番号は AAA.USER.ATTRIBUTE (1) を使用して抽出でき、バックエンドサーバーに送信するときに含めることができます。

NS 変数を割り当てる

コマンドプロンプトで、次のコマンドを入力します。

add ns variable <variable name> -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 5

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

NS 変数の割り当ての例

add ns variable test -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 5

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

WebAuth アクションの設定

コマンドプロンプトで、次のコマンドを入力します。

add policy expression <expression name> ""method=sendMessage&send_to=&msg=OTP i " + $test[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 <SERVER_IP> -serverPort <SERVER_PORT> -fullReqExpr q{"GET /GatewayAPI/rest?" + <expression name> + "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 -successRule true

set authentication webAuthAction <web auth action name> <server IP address> -serverPort 8080 -fullReqExpr q{"POST /MyPHP/auth.php HTTP/" + http.req.version.major + "." + http.req.version.major + "\r\nAccept:\*/\*\r\nHost: <server IP address> \r\nContent-Length: 10\r\n\r\n" + <name in the format expected by SMS server>} -scheme http -successRule true
<!--NeedCopy-->

Webauth アクション設定の例

add policy expression otp_exp ""method=sendMessage&send_to=&msg=OTP i " + $test[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 -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"GET /GatewayAPI/rest?" + otp_exp + "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 -successRule true

set 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_set} -scheme http -successRule true
<!--NeedCopy-->

第 1 要素構成のサンプル

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

add authentication Policy ldap_policy -rule true -action ldap_action
<!--NeedCopy-->

第 2 要素構成のサンプル

add authentication policylabel set_otp -loginSchema LSCHEMA_INT
add authentication Policy set_otp -rule true -action test

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

add authentication Policy check_otp -rule "$test.valueExists(AAA.USER.SESSIONID)" -action NO_AUTHN
add authentication policylabel check_otp -loginSchema LSCHEMA_INT
bind 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_verify

add authentication Policy wpp -rule true -action webAuth_POST
add authentication Policy wpp_cascade_noauth -rule true -action NO_AUTHN

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

add authentication vserver avs SSL 10.106.40.121 443
bind authentication vserver avs -policy ldap_policy  -priority 1 -nextFactor set_otp -gotoPriorityExpression NEXT
<!--NeedCopy-->
Web 認証を使用した SMS 二要素認証