Citrix ADC

Setzen eines Cookies mit nFactor

Sie können die benutzerdefinierten nFactor-Labels anwenden und ein Cookie als Faktor des Authentifizierungsflusses festlegen. Durch benutzerdefinierte Labels können Sie JavaScript verwenden, um das Anmeldeschema zu manipulieren.

Um ein Cookie als Faktor festzulegen, müssen Sie dem Benutzer keine Informationen anzeigen, die ohne Schema-Anmeldung ausgeführt werden. Stattdessen müssen Sie mit dem Browser des Benutzers interagieren, um das Anmeldeschema anzuweisen, die gewünschten Daten zu speichern. Ein Anmeldeschema ist erforderlich, um das Cookie zu setzen, wenn die Seite geladen wird. Das Cookie wird mit einem benutzerdefinierten Label und JavaScript-Code gesetzt.

Um einen Faktor zu implementieren, der ein Cookie setzt, erstellen Sie eine XML-Datei mit dem Namen cookie.xml, um das Schema im Verzeichnis /nsconfig/loginschema/ mit folgendem Inhalt zu speichern:

<?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-->

In diesem XML;

  • Das benutzerdefinierte Label nsg_cookie wird verwendet, um das Cookie zu erstellen und das Formular sowie die Formularschaltfläche abzusenden.
  • Das RFWebUI_Custom ist das neue Portal-Thema, das auf dem RFWebUI-Thema basiert.
  1. Erstellen Sie ein Portal-Thema basierend auf dem RFWebUI-Thema.

    add vpn portaltheme RfWebUI_custom -basetheme RfWebUI
    <!--NeedCopy-->
    

    Dieser Befehl erstellt einen Ordner für dieses Thema unter /var/netscaler/logon/themes/RfWebUI_Custom

  2. Bearbeiten Sie die Datei /var/netscaler/logon/themes/RfWebUI_custom/script.js und fügen Sie das folgende Skript hinzu:

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

    Dieser Code führt Folgendes aus:

    • Wartet darauf, dass der Browser das Laden der Seite abgeschlossen hat
    • Setzt ein Cookie namens NSC_COOKIE_NAME mit dem Wert CookieValue, gültig für 1000 Tage
    • Sendet das Formular automatisch.

    Das Cookie wird erstellt und der Benutzer muss nicht mit der Seite interagieren.

  3. Erstellen Sie ein Anmeldeschema, das an die Policy Label gebunden wird, die den festgelegten Cookie-Faktor darstellt

    add authentication loginSchema Cookie_LS -authenticationSchema "/nsconfig/loginschema/cookie.xml"
    <!--NeedCopy-->
    
  4. Erstellen Sie eine NO_AUTHN-Authentifizierungsrichtlinie, um sie an die Policy Label zu binden, die den festgelegten Cookie-Faktor darstellt.

    add authentication Policy NO_AUTHN_POL -rule TRUE -action NO_AUTHN
    <!--NeedCopy-->
    

    Diese Richtlinie wird immer als wahr ausgewertet und führt den Benutzer zum nächsten Faktor oder schließt den Authentifizierungsablauf ab.

  5. Binden Sie das Portaldesign RFWebUI_Custom an den virtuellen Citrix Gateway -Server oder den virtuellen Citrix ADC AAA-Server.

Setzen eines Cookies mit nFactor