Définir un cookie à l’aide de NFactor
Vous pouvez appliquer les étiquettes personnalisées nFactor et définir un cookie en tant que facteur du flux d’authentification. Grâce aux étiquettes personnalisées, vous pouvez utiliser JavaScript pour manipuler le schéma de connexion.
Pour définir un cookie en tant que facteur, vous n’avez pas besoin d’afficher d’informations à l’utilisateur, ce qui est effectué sans connexion de schéma. Au lieu de cela, vous devez interagir avec le navigateur de l’utilisateur pour demander au schéma de connexion de stocker les données souhaitées. Un schéma de connexion est nécessaire pour définir le cookie lorsque la page est chargée. Le cookie est défini avec une étiquette personnalisée et un code JavaScript.
Pour implémenter un facteur qui définit un cookie, créez un fichier XML appelé cookie.xml pour stocker le schéma dans le répertoire /nsconfig/loginschema/ avec le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?>
<AuthenticateResponse xmlns="http://citrix.com/authentication/response/1">
<Status>success</Status>
<Result>more-info</Result>
<StateContext></StateContext>
<AuthenticationRequirements>
<PostBack>/nf/auth/doAuthentication.do</PostBack>
<CancelPostBack>/nf/auth/doLogoff.do</CancelPostBack>
<CancelButtonText>Cancel</CancelButtonText>
<Requirements>
<Requirement>
<Credential><ID>nsg_cookie</ID><Type>nsg_cookie</Type></Credential>
<Label><Text>Logon Type:</Text><Type>Plain</Type></Label>
</Requirement>
<Requirement>
<Credential><ID>loginBtn</ID><Type>none</Type></Credential>
<Label><Type>none</Type></Label><Input><Button>Log On</Button></Input>
</Requirement>
</Requirements>
</AuthenticationRequirements>
</AuthenticateResponse>
<!--NeedCopy-->
Dans ce code XML ;
- L’étiquette personnalisée nsg_cookie est utilisée pour créer le cookie et envoyer le formulaire, ainsi que le bouton du formulaire.
- Le RFWebUI_Custom est le nouveau thème du portail basé sur le thème RFWebUI.
Étapes pour définir un cookie à l’aide de nFactor
-
Créez un thème de portail basé sur le thème RFWebUI.
add vpn portaltheme RfWebUI_custom -basetheme RfWebUI <!--NeedCopy-->
Cette commande crée un dossier pour ce thème dans /var/netscaler/logon/themes/RFWEBUI_CUSTOM
-
Modifiez le fichier /var/netscaler/logon/themes/RfWebUI_custom/script.js et ajoutez le script suivant :
CTXS.ExtensionAPI.addCustomCredentialHandler({ // The name of the credential, must match the type returned by the server getCredentialTypeName: function () { return "nsg_cookie"; }, // Generate HTML for the custom credential getCredentialTypeMarkup: function (requirements) { var div = $("<div></div>"); $(document).ready(function() { //Set cookie valid for 1000 days var exdays = 1000; var d = new Date(); d.setTime(d.getTime() + (exdays\*24\*60\*60\*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = "NSC_COOKIE_NAME=CookieValue;" + expires + ";path=/"; //Submit form document.getElementById('loginBtn').click(); }); return div; } }); <!--NeedCopy-->
Ce code effectue les opérations suivantes :
- Attend que le navigateur ait fini de charger la page
- Définit un cookie appelé NSC_COOKIE_NAME avec la valeur CookieValue, valide pendant 1000 jours
- Soumet automatiquement le formulaire.
Le cookie est créé et l’utilisateur n’a pas besoin d’interagir avec la page.
-
Créez un schéma de connexion à lier à l’étiquette de stratégie qui représente le facteur de cookie défini.
add authentication loginSchema Cookie_LS -authenticationSchema "/nsconfig/loginschema/cookie.xml" <!--NeedCopy-->
-
Créez une stratégie d’authentification NO_AUTHN à lier à l’étiquette de stratégie qui représente le facteur de cookie défini.
add authentication Policy NO_AUTHN_POL -rule TRUE -action NO_AUTHN <!--NeedCopy-->
Cette stratégie est toujours évaluée comme vraie, en déplaçant l’utilisateur vers le facteur suivant ou en complétant le flux d’authentification.
-
Liez le thème du portail RFWebUI_Custom au serveur virtuel NetScaler Gateway ou au serveur virtuel NetScaler AAA.