Die Authentifizierung von Benutzern kann über Single-Sign-On mit JWT (JSON Web Token) erfolgen. In diesem Beitrag wird erklärt, wie Sie die JWT-SSO-Authentifizierung für Benutzer von Microsoft Active Directory konfigurieren. Hierzu sind folgende Schritte erforderlich:
1. Konfigurieren des Windows-Servers
3. Herunterladen und Konfigurieren des Authentifizierungsskripts
1. Konfigurieren des Windows-Servers
Auf Ihrem Windows-Server müssen IIS und ASP installiert sein. Ihr IIS-Server muss Teil Ihrer Domäne sein und über direkten Zugriff auf Ihren Domänencontroller verfügen. Der IIS-Server kann sich auf dem Domänencontroller befinden, dies ist aber nicht notwendig. Wenn Sie Windows Server 2008 verwenden, sollte folgende Rolle installiert sein:
Für IIS Role Services muss folgendes installiert sein:
- Application Development
- ASP.NET
- ASP
- Server Side Includes
Und unter „Security“:
- Standardauthentifizierung
Wenn die Rollen und Services richtig installiert sind, müssen Sie die Authentifizierung Ihres IIS-Servers konfigurieren. Zendesk funktioniert gut mit „Basic Authentication“. Ich verwende das normalerweise als Standardeinstellung. Sie müssen „Anonymous Authentication“ deaktivieren. Andernfalls werden Benutzer nicht aufgefordert, ihren Windows-Benutzernamen und ihr Windows-Kennwort einzugeben, und die Anmeldung schlägt fehl.
2. Konfigurieren von Zendesk
Genaue Anweisungen finden Sie unter Aktivieren des JWT-Single-Sign-On in Zendesk Support im Beitrag Einrichten des Single-Sign-On mit JWT (JSON Web Token). Geben Sie unter Remote-Login-URL den Ort an, an dem Sie das ASP-Authentifizierungsskript ablegen (siehe nächster Abschnitt).
3. Herunterladen und Konfigurieren des Authentifizierungsskripts
Laden Sie das ASP-Authentifizierungsskript von dieser Seite auf GitHub herunter:
https://github.com/zendesk/zendesk_jwt_sso_examples/tree/master/bun...
Legen Sie das Skript (und die abhängigen Dateien, die im obigen Paket enthalten sind) im Verzeichnis „wwwroot“ ab. Sie können ein Unterverzeichnis erstellen, sollten aber bedenken, dass sich dadurch die URL für das Skript verlängert. Bei einer Neuinstallation erstellt IIS dieses Verzeichnis hier:
c:\inetpub\wwwroot\
Für Ihren Browser erscheinen Dateien in diesem Ordner unter folgender URL:
http://serveradresse/classic_asp_jwt_with_ad.asp
Öffnen Sie das Skript in Notepad oder einem anderen Texteditor. Zunächst müssen Sie den folgenden Teil des Skripts konfigurieren:
' Credentials for a domain user for LDAP access sLdapReaderUsername = "domain\username" sLdapReaderPassword = "password"
Geben Sie den Benutzernamen und das Passwort eines Benutzers ein, der Zugriff auf LDAP hat.
Geben Sie das Shared Secret Token, das Sie bei der JWT-Zendesk-Konfiguration erhalten haben (im Skript heißt es „sKey“), und Ihre Zendesk-Subdomäne ein:
' Set your shared secret and Zendesk subdomain
sKey = ""
sSubdomain = ""
Hier ist der Teil des Skripts, der die LDAP-Abfrage in Ihrem Benutzerkonto durchführt:
sQuery = "<LDAP://" & sDomainContainer & ">;(sAMAccountName=" & sUsername & "); adspath," & sFields & ";subtree"
Set userRS = oConn.Execute(sQuery)
Ein Blick auf den Code zeigt, dass wir Folgendes erhalten: „adspath“, „mail“, „displayName“ und „sAMAccountName“ des Benutzers. Wenn Sie weitere Daten zur Nutzung in Ihrem Aufruf benötigen, geben Sie diese in diesem Teil des Codes an. Angenommen, Sie möchten den „Notes“-Block unten abrufen:
Hierzu aktualisieren Sie den Code mit dem Attribut „info“:
sQuery = ";(sAMAccountName=" & strUsername & ");adspath,mail,displayName,sAMAccountName,info;subtree" Set userRS = oConn.Execute(sQuery)
Wenn wir die Attribute haben, die abgerufen werden sollen, können wir sie nutzen. Der folgende Code übernimmt die eigentliche Umsetzung der Attribute:
If Not userRS.EOF and not err then sFullName = userRS("displayName") sEmail = userRS("mail") sExternalID = userRS("sAMAccountName") if sOrg then sOrganization = "" end if sTags = "" sPhotoUrl = ""
Sie sehen, dass wir „displayName“, „mail“ und „sAMAccountName“ bereits eingefügt haben. Wenn Sie die individuellen Attribute eines Benutzers aufrufen möchten, verwenden Sie das Objekt „userRS("Attributname")“. Wenn Sie beispielsweise den „info“-Lookup angegeben haben und den „Notes“-Block für Stichwörter nutzen möchten, müssen Sie den Code wie folgt aktualisieren:
If Not userRS.EOF and not err then sFullName = userRS("displayName") sEmail = userRS("mail") sExternalID = userRS("sAMAccountName") if sOrg then sOrganization = "" end if sTags = userRS("info") sPhotoUrl = ""
Welche individuellen Attribute sind verfügbar? Die verfügbaren Optionen für Attribute finden Sie hier:
http://www.kouti.com/tables/userattributes.htm
Wenn Sie unter „Active Directory Users and Computers“ die Option „Advanced Features“ aktiviert haben, können Sie die individuellen Attribute direkt ändern. Um „Advanced Features“ zu aktivieren, geben Sie zu „View“ > „Advanced Features“:
Danach finden Sie in den Benutzereigenschaften einen „Attribute Editor“:
Hinweis zur Übergabe von Organisationen und Stichwörtern
Um eine Organisation für einen Benutzer zu übergeben, muss die Organisation bereits in Zendesk vorhanden sein. Existiert die Organisation in Zendesk noch nicht (oder die Namen stimmen nicht genau überein), erstellt Zendesk die Organisation nicht automatisch, wie das bei Benutzern der Fall wäre. Sie müssen die entsprechenden Organisationen zuerst selbst erstellen.
Um Stichwörter erfolgreich zu übergeben, müssen sie im Attribut wie folgt ausgelistet sein:
„stichwort1, stichwort2, stichwort3“
Wenn das Komma zwischen den Stichwörtern fehlt, schlägt die Übergabe fehl.
Weitere Informationen über die verschiedenen Felder, die akzeptiert werden, finden Sie in diesem Beitrag.
Vergessen Sie nicht, das Skript zu speichern, nachdem Sie Änderungen vorgenommen haben. Gehen Sie zu Ihrer Zendesk-Site und klicken Sie auf „Anmelden“. Sie werden zum Skript weitergeleitet, wo sie Ihre Windows-Anmeldedaten eingeben. Danach werden Sie angemeldet und zurück zu Zendesk geleitet.
4. Fehlerbehebung
Sie haben auf „Anmelden“ geklickt, aber die Anmeldung schlug fehl? Im Skript gibt es eine Option für das Debugging. Wenn Sie im Skript die Debug-Markierung auf „True“ setzen, werden beim Zugriff auf das Skript Debugging-Informationen angezeigt. Diese sehen ungefähr so aus:
[DEBUG] ZENDESK\test - should be of the form DOMAIN\username - if blank, your IIS probably allows anonymous access to this file.
[DEBUG] DomainContainer: DC=zendesk,DC=internal
[DEBUG] Attribute name: Test User
[DEBUG] Attribute email: test@zendesk.com
[DEBUG] Attribute jti: 2968942290171.981
[DEBUG] Attribute iat: 1380123848
[DEBUG] Redirecting to https://subdomain.zendesk.com/access/jwt?jwt=eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpYXQiOjEzODAxMjM4NDgsImp0aSI6Mjk2ODk0MjI5MDE3MS45ODEsIm5hbWUiOiJUZXN0IFVzZXIiLCJlbWFpbCI6InRlc3RAemVuZGVzay5jb20ifQ.QuRC6Ig7x_nK86Wc38u2viIVjshtTDohcgXTYpmU6VY
Hier müssten Sie alle benötigten Informationen finden. Wenn Sie eine Organisation, Stichwörter oder eine PhotoURL konfiguriert haben, sollten Sie diese Daten sehen. Wenn Sie einige dieser Daten sehen, aber nicht alle, überprüfen Sie die Attributdaten des Benutzers und stellen Sie sicher, dass der Code auf das richtige Attribut Bezug nimmt.
Wenn die Seite aufgerufen wird, aber keine Daten erscheinen, bedeutet dies, dass das Skript keine Verbindung zum Domänencontroller herstellen kann oder nicht über die entsprechende Berechtigung verfügt. Prüfen Sie auf der Serverfreigabe (\\dcservername\ in der Eingabeaufforderung), ob Sie Zugriff auf den Domänencontroller haben. Prüfen Sie, ob Benutzername und Kennwort, die Sie im Code angegeben haben, korrekt sind. Wenn Sie den anonymen Zugriff aktiviert haben, erscheint möglicherweise eine leere Seite, weil Sie nicht zur Authentifizierung aufgefordert wurden. Stellen Sie sicher, dass der anonyme Zugriff deaktiviert ist.
Wenn Sie nicht in der Lage sind, die Seite aufzurufen, und Ihr Browser eine Fehlermeldung ausgibt, liegt das Problem bei IIS. Prüfen Sie, ob Sie die notwendigen Rollen und Services auf Ihrem Server installiert haben und ob diese laufen. Wenn Sie weiterhin Probleme haben, müssen Sie sich ggf. an einen IIS-Administrator wenden, da Fehler dieser Art über das hier behandelte Thema hinausgehen.
Wenn Sie auf einen Fehler stoßen, lassen Sie uns bitte wissen, wie Sie ihn gelöst haben. Wir würden diesen Beitrag gerne mit weiteren Tipps zur Lösung allgemeiner Probleme ergänzen.