n因子
nFactor認証フレームワークは,カスタマイズを追加できる柔軟性を提供し,ログオンインターフェイスをより直感的にし,リッチなユーザーエクスペリエンスを実現します。。
nFactorを使用すると,各ファクターに独自のログオン画面を持つことができます。各ログオン画面には,以前の要素からの情報や,他の要素では見えない情報を表示できます。。
nFactor以前は,カスタムログインページには制限があり,カスタマイズとサポートが必要でした.tmindex.htmlを置き換えたり,書き換えルールを適用したりして,その動作の一部を変更することができました。★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
- ログインラベルをカスタマイズする
- UIをカスタマイズして画像を表示する
- Citrix ADC nFactor
仮定
nFactor,シェルコマンド,XML,およびテキストエディタに精通している。
前提条件
- このトピックで説明するカスタマイズは,RFWeb UIテーマ(またはテーマベース)がCitrix ADCで構成されている場合にのみ可能です。
- 。。
- nFactor
- XML
- JavaScript
- 認証アクション
- 对,对,对
- Citrix ADC 11.1
ログオンラベルをカスタマイズする
。
- 。
- レンダリングプロセスの変更に使用されるJavaScriptを含むscript.jsファイル。
機能
JavaScript, XML<规定>
。HTML。。新しい行を導入するには,店面SDKを使用してXMLスキーマファイルで新しい行を指定する必要があります。StoreFront SDK, XML,<规定>
(1)、(1)、(1)、(1)、(1)、(1)。これらの要素により,JavaScriptを使用して,必要なHTML要素が何であれ,その空間に導入することができます。。
★★★★★★★★
nsg-custom-cred passwd
<规定>
:。。# # # # # #;中文:。要件XMLはJavaScriptコードとペアになっており,必要な結果が得られます。
//自定义标签处理程序的自服务链接CTXS.ExtensionAPI。addCustomAuthLabelHandler({getLabelTypeName: function(){返回"nsg-custom-label";}, getLabelTypeMarkup:函数(要求){返回$("<您的HTML代码在这里>");}, //将标签当作标准类型来解析的指令parseAsType: function(){返回"plain";}});//自定义凭证处理程序的自服务链接CTXS.ExtensionAPI。addCustomCredentialHandler({getCredentialTypeName: function(){返回"nsg-custom-cred";}, getCredentialTypeMarkup: function (requirements) {return $("");}});< !--NeedCopy-->
XMLの部分はログオンページに何を表示するかを示し,JavaScriptコードは実際のテキストを提供します。。,これですべての認証トラフィックが書き換えや応答側から見えなくなるため,ページのルックアンドフィールを変更できます。ログインラベルをカスタマイズする設定
。
添加vpn portaltheme RfWebUI_MOD -basetheme rfweb绑定vpn vserver testaa -portaltheme RfWebUI_MOD
テーマに基づいたファイルのパスは,/ var / NetScaler /登录/主题/ rfwebui_MODというディレクトリにあります。
Script.js。
注:前の行を正しいファイル内に含めなかったり,JavaScript関数を含めなかったりすると,XMLが読み込まれません。このエラーは,ブラウザの開発者コンソールで”未定義のタイプnsg-custom-cred”というテキストでのみ表示されます。
//自定义标签处理程序的自服务链接CTXS.ExtensionAPI。addCustomAuthLabelHandler({getLabelTypeName: function(){返回"nsg-custom-label";}, getLabelTypeMarkup: function (requirements) {return $("< span style="font- family:宋体;>忘记密码
忘记用户登录");}, //将标签当作标准类型来解析的指令parseAsType: function(){返回"plain";}});//自定义凭证处理程序的自服务链接CTXS.ExtensionAPI。addCustomCredentialHandler({getCredentialTypeName: function(){返回"nsg-custom-cred";}, getCredentialTypeMarkup: function (requirements) {return $("");}});< !--NeedCopy-->
Loginschema
< ?XML版本="1.0"编码="utf-8"?> success more-info /nf/auth/doAuthentication. net >do /Citrix/Authentication/ExplicitForms/CancelAuthenticate CancelButtonText>Cancel login Username Username Type> 请提供域\用户名或user@fully.qualified.domain false false < InitialValue > < / InitialValue > <约束>。+ passwd Password Type> true false 。+ < < nsg-custom-cred passwd Credential> authenticaterresponse >
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
add authentication loginschempolicy custom -rule true -action custom bind authentication vserver AAATEST -policy custom -priority 100 -gotoPriorityExpression END
。
UIをカスタマイズして画像を表示する
nFactor, loginschema。組み込みのloginschemaファイルで提供されるもの以外に,さらにカスタマイズが必要な場合があります。。これらは,loginschema拡張子と対応するjavascriptファイルで構成される”カスタム認証情報”を使用して実現できます。
画像を表示するためのUIのカスタマイズでは,“Citrix ADC-Swivel統合の展開フローを例として使用します。
★★★★★★★★★★★★
- 中文:。
- 中文:。
。2番目の要素の前に,一部のユーザーを”スイベル”係数から省略できるかどうかを確認する疑似係数があります。ユーザーが”スイベル”ファクターを必要とする場合,コードを入力するための画像とテキストボックスが表示されます。
解決策
。
- 。
- 登录模式。
ログインスキーマの拡張
フォームのレンダリングを制御するために,カスタム“id”/“凭据”がloginschemaに注入されます。★★★★★★★★★★★★★★★★★★★★★★★★
この例では,テキストフィールドが1つ(/ nsconfig / loginschema / loginschema OnlyPassword.xmlなど)だけのloginschemaが考慮されます。loginschema。
<规定> <凭证> < ID > swivel_cred ID < / > < >型swivel_cred < /类型> <输入> <文本> < >隐藏真正的隐藏< / > < InitialValue > $ {http.req.user.name} < / InitialValue > < /文本> < /输入> < /凭证> < /要求> < !——NeedCopy >
。これは組み込みの”認証情報”として認識されないため,UIはこのタイプのハンドラを探し,存在する場合はそれを呼び出します。Citrix ADC。中文:中文:中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文。。★★★★★★★★★★★★★★★★★★
Javascript
。すべてのカスタム・ハンドラーは,デフォルトのポータル・テーマ用に/var/netscaler/logon/LogonPoint/custom/script.jsで記述されています。カスタム・ポータル・テーマの場合,script.jsはディレクトリ/var/netscaler/logon/themes/ < custom_theme > /
? ? ? ? ? ?
。
CTXS.ExtensionAPI。addCustomCredentialHandler({//凭据的名称,必须与服务器返回的类型相匹配。}, //为自定义凭证生成HTML getCredentialTypeMarkup: function (requirements) {var div = $("");Var image = $("");var username = requirements.input.text.initialValue;//从响应图像中获取secret。attr({"style": "width:200px;height:200px;", "id": "qrcodeimg", "src": "https://myswivelserver.citrix.com:8443/pinsafe/SCImage?username=" + username});div.append(图片);返回div;}});
“wivel_cred”,。強調表示された認証情報名は,loginschema拡張で以前に指定した“类型”と一致する必要があります。。。このloginschemaには文本框もあるので,UIはそのテキストボックスをレンダリングします。
注:管理者は,イメージエレメントの”スタイル”を変更して,イメージのサイズを変更できます。200x200。
UIをカスタマイズして画像を表示するための設定
nFactorの構成は,ボトムアップで構築したほうが適切です。これは,前の因子に‘nextFactorを指定しようとすると,後続の因子の名前が必要になるため,最後の因子が最初に構成されます。
旋回係数構成:
添加认证policylabel SwivelFactor -loginSchema swivel_image绑定认证policylabel SwivelFactor -policy -priority 10
注:。
グループチェック設定の疑似係数:
add authentication policylabel GroupCheckFactor添加认证策略contractors_auth_policy -rule ' http.req.user.is_member_of(" contractors ") ' -action NO_AUTHN添加认证策略not_contractors _auth_policy-rule true -action NO_AUTHN绑定认证政策标签GroupCheckFactor -policy contractors_auth_policy -pri 10 -nextFactor SwivelFactor绑定认证政策标签GroupCheckFactor -policy not_contractors_auth_policy -pri 20
Active Directory活动目录
add ldapAction <> add authentication policy user_login_auth_policy -rule true -action <> bind authentication vserver <> -policy user_login_auth_policy -pri 10 -nextFactor GroupCheckFactor
この構成では,暗黙的/疑似的要素の3つの要素が指定されています。
Loginschema
。
注: Webブラウザー用にデータをコピーすると,引用符の表示が異なって表示される場合があります。。
< ?xml version="1.0" encoding="UTF-8"?>< AuthenticateResponse xmlns="//m.giftsix.com/authentication/response/1"> success more-info /nf/auth/doAuthentication. conf >< /回发> < CancelPostBack > / nf /认证/ doLogoff。do Cancel swivel_cred swivel_cred true ${http.req.user.name} Text> <规定> <凭证> < ID > passwd < / ID > < SaveID > ExplicitForms-Password < / SaveID > <类型>密码< /类型> < /凭证> <标记> < >文本密码:文本< / > < >型平原< /类型> < /标签> <输入> <文本> <秘密>对<秘密> / <只读的>假< /只读的> < InitialValue > < / InitialValue > <约束>。+ none Hello ${http.req.user.name},请输入上图中的密码。类型文本< / > < > < /确认类型> < /标签> <输入/ > < /要求> <规定> <凭证> < ID > saveCredentials ID < / > < >型saveCredentials < /类型> < /凭证> <标签> <文本>记得我的密码文本< / > < >型平原< /类型> < /标签> <输入> <复选框> < InitialValue >假< / InitialValue > < /复选框> < /输入> < /要求> <规定> <凭证> < ID > loginBtn ID < / > < >类型没有< /类型> < /凭证> <标记> <类型>没有< /类型> < / >标签输入> < <按钮>登录按钮< / > < /输入> < /要求> > < /需求 authenticaterresponse >
出力
。
注:中文:JavaScript。
Citrix ADC nFactorログオンフォームをカスタマイズしてフィールドを表示または非表示にする
Citrix Gateway、RFWeb UI、。この機能をnFactor認証フレームワークと組み合わせると,既存のワークフローを損なうことなく,複雑なフローを構成できます。
この例では,登录类型リストからOAuthとLDAPの2つの認証オプションを使用できます。フォームが最初に読み込まれると,ユーザー名とパスワードのフィールド(LDAPが最初に表示されます)が表示されます。OAuthを選択すると、OAuth はサードパーティサーバへの認証のオフロードを意味するため、すべてのフィールドが非表示になります。これにより、管理者はユーザーの都合に合わせて直感的なワークフローを構成できます。
注:
- [登录类型]。
- 。我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是。。
nFactor
nFactorログオンフォームのカスタマイズは2つの部分に分類できます
- 正しいログインスキーマをUIに送信する
- ログインスキーマとユーザー選択を解釈するハンドラーを記述する
正しいログインスキーマをUIに送信する
。
このため,SingleAuth.xmlファイルが変更されます.SingleAuth.xmlはCitrix ADCファームウェアに付属しており,/ nsconfig loginSchema / loginSchema loginSchemaディレクトリにあります。
ログインスキーマを送信する手順:
SSH,。
xml。
注:宛先フォルダーは,デフォルトのCitrix ADC loginschemasフォルダーとは異なります。
cp /nsconfig/loginschema/ loginschema/ SingleAuth.xml /nsconfig/loginschema/SingleAuthDynamic.xml
SingleAuthDynamic.xml。
nsg_dropdown nsg_dropdown 登录类型: plain 。
add loginschempolicy single_auth_dynamic -rule true -action single_auth_dynamic bind authentication vserver aaa_nfactor -policy single_auth_dynamic -pri 10
フォームを読み込み,ユーザーイベントを処理するためのスクリプト変更
管理者がログオンフォームの表示をカスタマイズできるようにするJavaScriptを変更できます。この例では、LDAPが選択されている場合はユーザー名とパスワードフィールドが表示され,OAuthが選択されている場合は非表示になっています。。管理者は" / var / NetScaler /ログオン/ログオンポイント/カスタム”ディレクトリにある“script.jsに次のスニペットを追加する必要があります。
注:このディレクトリはグローバルディレクトリなので,ポータルテーマを作成し,そのフォルダ内の“script.jsファイルを編集します。" / var / netscaler /登录/主题/ < THEME_NAME >”
CTXS.ExtensionAPI。addCustomCredentialHandler({//证书的名称,必须与服务器返回的类型相匹配)}, //为自定义凭证生成HTML getCredentialTypeMarkup: function (requirements) {var div = $("");Var select = $("")。attr(“id”、“nsg_dropdown”);Var rsa = $("")。attr(“选择”,“选择”)。text (LDAP) .val (LDAP);var OAuthID = $(" <选项> < /选项>”)。text (OAuth) .val(“OAuth”);选择。追加(rsa, OAuthID);Select.change (function(e) {var value = $(this).val(); var ldapPwd = $($(".credentialform").find(".CredentialTypepassword")[0]); var ldapUname = $($(".credentialform").find(".CredentialTypeusername")); if(value == "OAuth") { if (ldapPwd.length) ldapPwd.hide(); if (ldapUname.length) ldapUname.hide(); } else if(value == "LDAP") { if (ldapPwd.length) ldapPwd.show(); if (ldapUname.length) ldapUname.show(); } }); div.append(select); return div; } });
エンドユーザーエクスペリエンス
。
[ログオンの種類] [OAuth[。
LDAP。。
Loginschema
< ?xml version="1.0" encoding="UTF-8"?>< AuthenticateResponse xmlns="//m.giftsix.com/authentication/response/1"> success more-info /nf/auth/doAuthentication. conf >< /回发> < CancelPostBack > / nf /认证/ doLogoff。取消做< / CancelPostBack > < CancelButtonText > < / CancelButtonText > <规定> <规定> <凭证> < ID >登录< / ID > < SaveID > ExplicitForms-Username < / SaveID > <类型>用户名< /类型> < /凭证> <标签> <文本>用户名文本< / > < >型平原< /类型> < /标签> <输入> < AssistiveText >请供应域\用户名或user@fully.qualified.domain < / AssistiveText > <文本> <秘密>假<秘密> / <只读的>假< /只读的> < InitialValue > < / InitialValue > <约束>。+ < /约束> < /文本> < /输入> < /要求><规定> <凭证> < ID > passwd < / ID > < SaveID > ExplicitForms-Password < / SaveID > <类型>密码< /类型> < /凭证> <标记> < >文本密码:文本< / > < >型平原< /类型> < /标签> <输入> <文本> <秘密>对<秘密> / <只读的>假< /只读的> < InitialValue > < / InitialValue > <约束>。+ < nsg_dropdown nsg_dropdown 登录类型: plain < Label>第一个因素 确认 < < ID> savecredals savecredals < Label>记住我的password plain false 要求><要求><凭据>loginBtn none 凭据>none Requirements> authenticaterresponse >< !——NeedCopy >
重要:# # # # # # # # # #nFactor。