Der Single-Sign-On ist ein Mechanismus, über den Sie Benutzer in Ihren Systemen authentifizieren und anschließend Zendesk mitteilen können, dass eine Benutzerauthentifizierung stattgefunden hat. Wenn Sie Single-Sign-On über JWT verwenden, wird ein Benutzer bei der Anmeldung automatisch durch den Identity Provider verifiziert. Der Benutzer kann dann auf Zendesk zugreifen, ohne separate Anmeldeinformationen eingeben zu müssen.
Der Single-Sign-On basiert auf einem Sicherheitsmechanismus, der es Zendesk ermöglicht, die von Ihren Systemen empfangenen Anmeldeanforderungen als vertrauenswürdig einzustufen. Zendesk gewährt nur den Benutzern Zugriff, die von Ihnen authentifiziert wurden. Zendesk-SSO verwendet JSON Web Token (JWT), eine Technologie zum sicheren Austausch von Benutzerauthentifizierungsdaten.
- Wie SSO über JWT bei Zendesk funktioniert
- Anforderungen zum Aktivieren von SSO über JWT
- Aktivieren von SSO über JWT
- Zuweisen von SSO über JWT zu Benutzern
- Verwalten von Benutzern in Zendesk nach Aktivieren von SSO über JWT
- Generieren eines neuen Shared Secret
- Wechseln der Authentifizierungsmethode
- Weitere Informationen zu JWT
Normalerweise ist das IT-Team in einem Unternehmen für die Einrichtung und Verwaltung des JWT-Authentifizierungssystems verantwortlich. Es ist seine Aufgabe, SSO für Zendesk im System zu implementieren. Verweisen Sie Ihr IT-Team zum folgenden Abschnitt in diesem Beitrag:
Verwandte Beiträge:
Wie SSO über JWT bei Zendesk funktioniert
Nach Aktivierung von SSO werden Anmeldeanforderungen an eine Anmeldeseite außerhalb von Zendesk weitergeleitet.
Schritte zur JWT-Authentifizierung für SSO:
- Nicht authentifizierte Benutzer werden zu Ihrer Zendesk Support-URL geführt. Beispiel: https://meinesubdomäne.zendesk.com/.
- Der SSO-Mechanismus von Zendesk erkennt, dass SSO aktiviert ist und der Benutzer noch nicht authentifiziert wurde.
- Zendesk leitet den Benutzer zur Remote-Anmeldeseite Ihres Unternehmens um: Beispiel: https://meinefirma.com/zendesk/sso.
- Ein Skript auf dem Remote-Server authentifiziert den Benutzer über den Anmeldeprozess Ihres Unternehmens.
- Das Authentifizierungssystem generiert eine JWT-Anforderung mit den relevanten Benutzerdaten.
- Das Authentifizierungssystem leitet den Benutzer an den folgenden Zendesk-Endpunkt mit der JWT-Payload um:
https://meinesubdomäne.zendesk.com/access/jwt
- Zendesk parst die Benutzerdetails in der JWT-Payload und gewährt dem Benutzer eine Sitzung.
Wie Sie sehen, verlässt sich dieser Prozess auf Browserumleitungen und die Übergabe signierter Nachrichten über JWT. Die Umleitungen finden vollständig im Browser statt. Es besteht keine Direktverbindung zwischen Zendesk und Ihren Systemen, sodass Ihre Authentifizierungsskripts hinter Ihrer Unternehmensfirewall bleiben können.
Anforderungen zum Aktivieren von SSO über JWT
- Die Remote-Login-URL, an die Zendesk-Benutzer umgeleitet werden sollen, wenn sie versuchen, auf Zendesk zuzugreifen.
- (Optional) Die Remote-Logout-URL, an die Zendesk Benutzer umleiten soll, nachdem sie sich bei Zendesk abgemeldet haben.
- (Optional) Eine Liste von IP-Bereichen, damit Benutzer an die entsprechende Anmeldeseite umgeleitet werden können. Benutzer, die eine Anforderung von einer Adresse innerhalb der angegebenen IP-Bereiche aus einreichen, werden an das Remote-JWT-Authentifizierungsformular weitergeleitet. Benutzer, die eine Anforderung von einer Adresse außerhalb der angegebenen IP-Bereiche aus einreichen, werden an das normale Zendesk-Anmeldeformular weitergeleitet. Wenn Sie keinen IP-Bereich angeben, werden alle Benutzer an das Remote-Authentifizierungsformular umgeleitet.
Vergewissern Sie sich beim Team, dass der gesamte Zendesk-Datenverkehr über HTTPS und nicht über HTTP abgewickelt wird.
Geben Sie als Nächstes in Zendesk Support die erforderlichen Informationen ein, um Single-Sign-On (SSO) zu aktivieren. Weitere Informationen finden Sie unter Aktivieren von SSO über JWT.
Ihr IT-Team benötigt u. U. weitere Informationen von Zendesk zur Konfiguration der SAML-Implementierung. Verweisen Sie Ihr IT-Team an das Worksheet zur technischen Implementierung in diesem Beitrag.
Aktivieren von SSO über JWT
Sie können SSO über JWT nur für Endbenutzer, nur für Teammitglieder (Agenten und Administratoren) oder für beide Gruppen aktivieren. Wenn Sie sowohl JWT als auch SAML verwenden, müssen Sie eines der beiden Verfahren als primäre Authentifizierungsmethode festlegen. Wenn ein Benutzer sich bei Zendesk anmeldet, wird er zur Anmeldeseite für die primäre Authentifizierungsmethode umgeleitet. Der Benutzer kann sich auch über die sekundäre Methode anmelden, indem er zur Anmeldeseite für die sekundäre Methode geht. Weitere Informationen finden Sie unter Verwenden unterschiedlicher SSO-Anmeldungen (SAML und JWT) für Agenten und Endbenutzer.
Sie müssen sich bei Zendesk Support als Administrator anmelden, um den Single-Sign-On über JWT aktivieren zu können.
So aktivieren Sie den JWT-Single-Sign-On
- Klicken Sie in der Seitenleiste des Admin Centers auf das Symbol Konto (
) und dann auf Sicherheit > Single-Sign-On.
- Klicken Sie unter JSON Web Token auf Konfigurieren.
- Geben Sie im Feld Remote-Login-URL die URL ein, an Ihre Benutzer umgeleitet werden sollen, wenn sie versuchen, auf Ihre Zendesk-URL zuzugreifen.
Zendesk Support fügt automatisch den Parameter brand_id zur URL hinzu. Dieser Parameter gibt die Marke in Zendesk Support an, in der sich der Benutzer beim Anmeldeversuch befand.
- Geben Sie im Feld Remote-Logout-URL die URL ein, an die Benutzer nach der Abmeldung bei Zendesk weitergeleitet werden.
Zendesk fügt automatisch die Parameter email, external_id und brand_id zur URL hinzu. Wenn die E-Mail-Adresse und externe ID nicht in der URL erscheinen sollen, geben Sie in der Logout-URL leere Parameter an. Beispiel:
https://www.xyz.com/user/signout/?email=&external_id=
Hinweis: Wenn Sie eine Ember.js-Anwendung nutzen, müssen Sie in der Logout-URL vor dem Hash-Zeichen leere Parameter verwenden. Beispiel:https://somedomain.com/?brand_id=&return_to=&email=#/zendesk-login/
. - (Optional) Geben Sie im Feld IP-Bereiche eine Liste von IP-Bereichen ein, damit Benutzer an die entsprechende Anmeldeseite umgeleitet werden können.
Benutzer, die eine Anforderung von einer Adresse innerhalb der angegebenen IP-Bereiche aus einreichen, werden an das JWT-Authentifizierungsformular weitergeleitet. Benutzer, die eine Anforderung von einer Adresse außerhalb der angegebenen IP-Bereiche aus einreichen, werden an das normale Zendesk-Anmeldeformular weitergeleitet. Wenn Sie keinen IP-Bereich angeben, werden alle Benutzer an das JWT-Authentifizierungsformular umgeleitet.
- Wenn Sie externe IDs für Ihre Benutzer verwenden, können Sie diese in Zendesk Support aktualisieren, indem Sie die Option Externe IDs aktualisieren? auf Ein setzen.
- Leiten Sie das Shared Secret an Ihr IT-Team weiter. Es wird in der JWT-Implementierung benötigt. Wichtig: Bewahren Sie das Shared Secret sicher auf. Wenn es in die Hände Unbefugter fällt, sind alle Daten in Ihrem Zendesk Support-Konto gefährdet.
- Sobald Ihre JWT SSO-Konfiguration festgelegt ist, klicken Sie auf Aktiviert, damit Sie Benutzern diese Option zuweisen können.
- Klicken Sie auf Speichern.
Zuweisen von SSO über JWT zu Benutzern
- Öffnen Sie die Sicherheitseinstellungen für Teammitglieder oder Endbenutzer.
- Klicken Sie in der Seitenleiste des Admin Centers auf das Symbol Konto (
) und dann auf Sicherheit > Authentifizierung für Teammitglieder.
- Klicken Sie in der Seitenleiste des Admin Centers auf das Symbol Konto (
) und dann auf Sicherheit > Authentifizierung für Endbenutzer.
- Klicken Sie in der Seitenleiste des Admin Centers auf das Symbol Konto (
- Wählen Sie im Abschnitt Externe Authentifizierung unter Single-Sign-On (SSO) die Option JSON Web Token.
- Wenn sich alle Benutzer über eine SSO-Methode anmelden sollen, deaktivieren Sie die Option Zendesk-Authentifizierung.
Alle Zendesk-Kennwörter werden innerhalb von 24 Stunden permanent aus dem Konto gelöscht.
- Wenn Sie Zendesk-Kennwörter deaktiviert haben, geben Sie an, ob bei einem Ausfall des SSO-Dienstes nur der Kontoinhaber oder Administratoren (dazu gehört auch der Kontoinhaber) auf das Konto zugreifen können.
Hierzu braucht der Kontoinhaber oder Administrator einen einmal gültigen Zugriffslink, der per E-Mail zugestellt wird. Nach Klicken auf den Link kann die Person auf das Konto zugreifen. Es ist kein Kennwort erforderlich. Weitere Informationen finden Sie unter Zugreifen auf das Konto, wenn Kennwörter deaktiviert sind.
- Klicken Sie auf Speichern.
Verwalten von Benutzern in Zendesk nach Aktivieren von SSO über JWT
Nachdem Sie JWT als Single-Sign-On-Mechanismus in Zendesk aktiviert haben, werden außerhalb von Zendesk vorgenommene Benutzeränderungen mit Ihrem Zendesk-Konto synchronisiert. Wenn beispielsweise ein Benutzer zu Ihrem internen System hinzugefügt wird, wird er automatisch auch zu Ihrem Zendesk-Konto hinzugefügt. Wenn ein Benutzer in Ihrem System gelöscht wird, kann sich dieser nicht mehr bei Zendesk anmelden, obwohl sein Konto weiterhin existiert.
Wenn Single-Sign-On aktiviert ist, werden standardmäßig nur der Name und die E-Mail-Adresse des Benutzers in Zendesk gespeichert. Kennwörter werden von Zendesk nicht gespeichert. Deshalb sollten Sie alle automatischen E-Mail-Benachrichtigungen, die mit Kennwörtern zu tun haben, in Zendesk deaktivieren. Weitere Informationen finden Sie unter Deaktivieren von Kennwortbenachrichtigungen per E-Mail in Zendesk.
Um ein besseres Kundenerlebnis zu gewährleisten, sollten Sie aber mehr Benutzerdaten in Zendesk speichern als nur den Namen und die E-Mail-Adresse. Weitere Informationen finden Sie unter Erfassen zusätzlicher Benutzerdaten.
Generieren eines neuen Shared Secret
Unter Umständen müssen Sie ein neues JWT Shared Secret generieren und an Ihr IT-Team oder Ihren externen Identity Provider weiterleiten. Dies ist beispielsweise der Fall, wenn das Secret kompromittiert wurde. Sie können ein neues JWT Shared Secret vom Zendesk Admin Center aus generieren. Dadurch wird das ursprüngliche Secret entfernt und durch ein neues Secret ersetzt. Sie müssen Ihr IT-Team oder Ihren externen Identity Provider über Ihr neues Shared Secret informieren, damit die Zendesk SSO-Kontoauthentifizierung funktioniert.
So generieren Sie ein neues Shared Secret:
- Klicken Sie in der Seitenleiste des Admin Centers auf das Symbol Konto (
) und dann auf Sicherheit > Single-Sign-On.
- Klicken Sie unter JSON Web Token auf Bearbeiten.
Ihre aktuelle JSON-Web-Token-Konfiguration wird angezeigt.
- Klicken Sie ganz unten auf der Konfigurationsseite unter Shared Secret auf Geheimnis zurücksetzen.
Eine Bestätigungsmeldung wird angezeigt.
- Klicken Sie auf Geheimnis zurücksetzen, um den Vorgang zu bestätigen.
Ein neues Shared Secret wird im Klartext angezeigt.
- Klicken Sie auf Kopieren, um das neue Shared Secret zu kopieren, und leiten Sie es an Ihr IT-Team oder Ihren externen Identity Provider weiter.
- Speichern Sie die Änderungen.
Wechseln der Authentifizierungsmethode
Weitere Informationen zu JWT
JWT ist ein relativ neuer offener Standard, der von der Internet Engineering Task Force (IETF) vorangetrieben und von führenden Technologieunternehmen wie Microsoft, Facebook und Google unterstützt wird.
Da die Grundbausteine von JWT bekannte Komponenten sind, ist die Spezifikation (http://tools.ietf.org/html/draft-jones-json-web-token-10) relativ unkompliziert. Es gibt zahlreiche Open-Source-Implementierungen der JWT-Spezifikation, die die meisten modernen Technologien abdecken. Sie sollten also den JWT-Single-Sign-On ohne größere Schwierigkeiten konfigurieren können.
Beachten Sie, dass die JWT-Payload zwar codiert und signiert, nicht aber verschlüsselt wird – übergeben Sie also in der Hashtabelle keine sensiblen Daten. JWT serialisiert den übertragenen JSON-Wert in eine Zeichenfolge. Anschließend wird diese Zeichenfolge im Format base 64 codiert und ein HMAC der base-64-Zeichenfolge erstellt, der vom Shared Secret abhängig ist. Das Endergebnis ist eine Signatur, die von der Empfängerseite zur Validierung des Benutzers herangezogen werden kann.
Worksheet zur technischen Implementierung
Dieser Abschnitt ist für das Team gedacht, das für das JWT-Authentifizierungssystem des Unternehmens zuständig ist. Er enthält wichtige Informationen zur Implementierung des SSO über JWT in Zendesk.
Behandelte Themen:
JWT-Algorithmus
Geben Sie HS256 als JWT-Algorithmus im Header der JWT-Payload an:
{
"typ":"JWT",
"alg":"HS256"
}
HS256 steht für HMAC SHA 256, einen 256-Bit-Verschlüsselungsalgorithmus der U.S. National Security Agency.
JWT-Endpunkt von Zendesk
Leiten Sie den Benutzer nach erfolgreicher Authentifizierung zusammen mit der JWT-Payload an den folgenden Zendesk-Endpunkt um:
https://meinesubdomäne.zendesk.com/access/jwt
Die Payload muss base64-codiert und als Query String an die URL angehängt sein.
Die JWT-Payload muss über das Protokoll https an Ihre Zendesk Support-Subdomäne gesendet werden. Beispiel:
https://yoursubdmain.zendesk.com/access/jwt?jwt={payload}
Host-Mapping-Subdomänen werden nicht unterstützt.
JWT-Attribute
Senden Sie Attribute als base64-codierten Hash (Ruby) bzw. als base64-codiertes Dictionary (Python) an Zendesk. Ruby-Beispiel:
payload = JWT.encode({
:email => "bob@example.com", :name => "Bob", :iat => Time.now.to_i, :jti => rand(2<<64).to_s
}, "Our shared secret")
Zendesk benötigt eine E-Mail-Adresse, um den Benutzer eindeutig identifizieren zu können. Neben den erforderlichen Attributen, die in der folgenden Tabelle aufgeführt sind, können Sie bei Bedarf auch weitere Benutzerprofildaten übergeben. Diese Daten werden zwischen Ihrem Benutzermanagementsystem und Zendesk Support synchronisiert.
Attribut | Erforderlich | Beschreibung |
---|---|---|
iat | Ja | Issued At. Uhrzeit, zu der das Token generiert wurde. Stellt sicher, dass ein Token kurz nach der Generierung benutzt wird. Dieser Wert muss die Anzahl von Sekunden seit der UNIX-Epoche angeben. Zendesk lässt eine Uhrzeittoleranz von bis zu drei Minuten zu; stellen Sie also sicher, dass auf Ihren Servern NTP o. ä. konfiguriert ist. |
jti | Ja | ID des JSON Web Token. Eine eindeutige ID für das Token; wird von Zendesk zur Verhinderung von Token-Replay-Attacken verwendet. |
Ja | E-Mail-Adresse des Benutzers, der angemeldet wird. Dient zur eindeutigen Identifizierung des Benutzerdatensatzes in Zendesk Support. | |
name | Ja | Name des Benutzers. Das Benutzerprofil in Zendesk Support wird entsprechend diesem Wert erstellt oder aktualisiert. |
external_id | Nein | Wenn Ihre Benutzer anhand eines anderen Werts als der E-Mail-Adresse eindeutig identifiziert werden und die Möglichkeit besteht, dass sich ihre E-Mail-Adresse ändert, müssen Sie eine eindeutige ID aus Ihrem System übergeben. Geben Sie die ID als String an. |
locale (für Endbenutzer) locale_id (für Agenten) |
Nein | Das Gebietsschema (Sprache) in Zendesk Support als Zahl. |
organization | Nein | Name einer Organisation, zu der der Benutzer hinzugefügt wird. Hinweis: Wenn die Option Benutzer können mehreren Organisationen angehören aktiviert ist, ergänzen die zusätzlichen Organisationen die ursprüngliche Organisation; vorhandene Zugehörigkeiten werden nicht gelöscht. Wenn Sie mehrere Organisationen gleichzeitig übergeben möchten, verwenden Sie stattdessen das Attribut organizations. Die Organisationen müssen in einer fortlaufenden Zeichenfolge mit Kommas als Trennzeichen übergeben werden. |
organization_id | Nein | Die externe ID der Organisation in der Zendesk-API. Wenn sowohl „organization“ als auch „organization_id“ angegeben werden, wird „organization“ ignoriert. Hinweis: Wenn die Option Benutzer können mehreren Organisationen angehören aktiviert ist, ergänzen die zusätzlichen Organisationen die ursprüngliche Organisation; vorhandene Zugehörigkeiten werden nicht gelöscht. |
phone | Nein | Eine Telefonnummer als Zeichenfolge. |
tags | Nein | JSON-Array mit Stichwörtern für den Benutzer. Diese Stichwörter ersetzen die evtl. bereits im Benutzerprofil vorhandenen Stichwörter. |
remote_photo_url | Nein | URL eines Fotos für das Benutzerprofil. |
role | Nein | Rolle des Benutzers. Kann auf „user“, „agent“ oder „admin“ gesetzt werden. Standardwert: „user“. Wenn die Rolle des Benutzers in Zendesk Support anders ist, wird sie in Zendesk Support geändert. |
custom_role_id | Nein | Nur zutreffend, wenn die Benutzerrolle „agent“ lautet. |
user_fields | Nein |
Ein JSON-Hash aus dem Schlüssel des angepassten Benutzerfelds und Werten, die für den Benutzer festgelegt werden sollen. Das angepasste Benutzerfeld muss existieren, damit der Feldwert festgelegt werden kann. Jedes angepasste Benutzerfeld wird anhand seines Feldschlüssels identifiziert, der in den Admin-Einstellungen für Benutzerfelder zu finden ist. Das Format von Datumswerten lautet jjjj-mm-tt. Wenn ein Benutzerfeldschlüssel oder -wert ungültig ist, schlägt die Aktualisierung des Feldes ohne Meldung fehl, der Benutzer wird aber trotzdem erfolgreich angemeldet. Weitere Informationen zu angepassten Benutzerfeldern finden Sie unter Hinzufügen von angepassten Feldern zu Benutzern.
Hinweis: Bei Übergabe von Nullwerten im Attribut „user_fields“ werden eventuell vorhandene Werte aus den entsprechenden Feldern entfernt.
|
Parameter für Remote-Login-URL (return_to)
Wenn Zendesk einen Benutzer an die Remote-Login-Seite umgeleitet, wird auch der return_to-Parameter in der URL übergeben. Dieser Parameter gibt die Seite an, an die Zendesk den Benutzer weiterleitet, nachdem Ihr System ihn authentifiziert hat. Hängen Sie den Parameter (Name und Wert) an den JWT-Endpunkt von Zendesk an.
Angenommen, ein abgemeldeter Agent klickt auf den folgenden Link, um ein Ticket in Zendesk Support zu öffnen: https://meinefirma.zendesk.com/tickets/1232. Der Ablauf ist wie folgt:
- Wenn der Benutzer auf den Link klickt, leitet Zendesk ihn an Ihre Remote-Login-URL um und hängt den folgenden
return_to
-Parameter an die URL an:https://mycompany.com/zendesk/sso?return_to=https://mycompany.zendesk.com/tickets/123
- Ihr Authentifizierungssystem hängt den
return_to
-Parameter (Name und Wert) aus der URL an den JWT-Endpunkt von Zendesk an, nachdem der Benutzer erfolgreich authentifiziert wurde. Beispiel:https://mycompany.zendesk.com/access/jwt?jwt=payload&return_to=https://mycompany.zendesk.com/tickets/123
- Zendesk verwendet den Parameter, um die Ticketseite für den Agenten zu öffnen.
Der return_to
-Parameter ist eine absolute URL für die Agentenoberfläche und eine relative URL für das Help Center.
Die Übergabe des return_to
-Parameters ist zwar optional, empfiehlt sich aber, um ein angenehmes Benutzererlebnis sicherzustellen.
return_to
-Adresse eigene URL-Parameter enthält, müssen Sie sicherstellen, dass Ihr Skript bei der Übergabe des JWT-Tokens den gesamten return_to
-Wert URI-codiert. Fehlerbehandlung
Wenn Zendesk bei der Verarbeitung einer JWT-Anmeldeanforderung einen Fehler erkennt, erscheint eine Meldung, aus der das Problem hervorgeht. Wenn Sie beim Konfigurieren der JWT-Integration eine Remote-Logout-URL angegeben haben, leitet das System den Benutzer zu dieser URL um und übergibt die Parameter message und kind. Bei einem Fehler hat der Parameter kind immer den Wert „error“. Zendesk empfiehlt, eine Remote-Logout-URL anzugeben und Meldungen von Zendesk zusammen mit dem Typ zu protokollieren. Die meisten Fehler, die auftreten, sollten behoben werden. Beispiele: Uhrzeitabweichungen, Überschreitung der Ratengrenzen, ungültige Token usw.
Codebeispiele für die JWT-Implementierung
Die eigentliche JWT-Implementierung ist unkompliziert; für die meisten modernen Sprachen sind Bibliotheken verfügbar. Im folgenden GitHub-Repository zum JWT-SSO sind Beispiele für diverse Stacks zu finden:
Wenn Sie JWT in einem anderen Stack implementieren, würden wir gerne Ihr Beispiel zum Repository hinzufügen. Lassen Sie uns bitte in einem Kommentar zu diesem Beitrag wissen, was Sie implementiert haben.
Falls Sie IIS/AD verwenden und keine eigene .NET-Lösung erstellen möchten, bieten wir eine vollständige Implementierung in Classic ASP, bei der Sie lediglich ein paar Variablen anpassen müssen. Laden Sie das ASP-Authentifizierungsskript von dieser Github-Seite herunter: https://github.com/zendesk/zendesk_jwt_sso_examples/tree/master/bundles.
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.