Vous pouvez authentifier vos utilisateurs en utilisant la connexion unique JWT (token Web JSON). Cet article décrit comment configurer votre authentification par connexion unique JWT pour les utilisateurs de Microsoft Active Directory et couvre les étapes suivantes :
1. Configuration de votre serveur Windows
3. Téléchargement et configuration du script d’authentification
1. Configuration de votre serveur Windows
IIS et ASP doivent être installés sur votre serveur Windows. Votre serveur IIS doit faire partie de votre domaine et bénéficier de l’accès direct à votre contrôleur de domaine. Le serveur IIS peut être dans le contrôleur de domaine, mais ce n’est pas obligatoire. Si vous utilisez Windows Server 2008, voici le rôle qui doit être installé :
Pour IIS Role Services, les éléments suivants doivent être installés :
- Application Development
- ASP.NET
- ASP
- Côté serveur :
Et sous Security
- Authentification de base
Une fois vos rôles et services installés correctement, vous devez configurer l’authentification pour votre serveur IIS. Zendesk fonctionne bien avec Basic Authentication, c’est donc ce que je choisis généralement comme valeur par défaut. N’oubliez pas de désactiver Anonymous Authentication : autrement le système ne demandera pas aux utilisateurs de saisir leur nom d’utilisateur et leur mot de passe Windows et leur connexion échouera.
2. Configuration de Zendesk
Pour des instructions, consultez la section portant sur l’activation de la connexion unique JWT dans votre Zendesk de l’article au sujet de la configuration de la connexion unique avec JWT (token Web JSON). Pour la valeur URL de connexion à distance, spécifiez l’emplacement où vous placerez le script d’authentification ASP décrit dans la section suivante.
3. Téléchargement et configuration du script d’authentification
Téléchargez le script d’authentification ASP à partir de cette page sur GitHub :
https://github.com/zendesk/zendesk_jwt_sso_examples/tree/master/bun...
Placez le script (et ses dépendances incluses dans le bouquet ci-dessus) dans le répertoire wwwroot. Vous pouvez créer un sous-répertoire, mais n’oubliez pas que nous étendrons seulement l’URL pour le script. Au cours d’une nouvelle installation, IIS créera ce répertoire dans :
c:\inetpub\wwwroot\
Pour votre navigateur Web, les fichiers de ce dossier apparaîtront dans cette URL :
http://serveraddress/classic_asp_jwt_with_ad.asp
Ouvrez le script dans Bloc-notes ou tout autre éditeur de texte. La première section du script que vous devez configurer est la suivante :
' Credentials for a domain user for LDAP access sLdapReaderUsername = "domain\username" sLdapReaderPassword = "password"
Saisissez le nom d’utilisateur et le mot de passe d’un utilisateur ayant accès à LDAP.
Vous devez ensuite entrer le token de secret partagé que vous avez obtenu pendant la configuration Zendesk JWT (sKey dans le script) ainsi que votre sous-domaine Zendesk :
' Set your shared secret and Zendesk subdomain
sKey = ""
sSubdomain = ""
Voici la section du script qui effectue la recherche LDAP de votre compte utilisateur :
sQuery = "<LDAP://" & sDomainContainer & ">;(sAMAccountName=" & sUsername & "); adspath," & sFields & ";subtree"
Set userRS = oConn.Execute(sQuery)
Si vous regardez le code, nous obtenons les valeurs adspath, mail, displayName et sAMAccountName de l’utilisateur. Si vous voulez extraire plus de données à utiliser dans votre appel, incluez-les dans cette section du code. Par exemple, si vous voulez inclure le bloc Notes ci-dessous :
Je mettrais à jour le code avec l’attribut « info » comme suit :
sQuery = ";(sAMAccountName=" & strUsername & ");adspath,mail,displayName,sAMAccountName,info;subtree" Set userRS = oConn.Execute(sQuery)
Une fois que nous avons les attributs recherchés, nous pouvons les utiliser. Le code ci-dessous effectue la traduction des attributs :
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 = ""
Vous verrez que nous avons déjà placé les valeurs displayName, mail et sAMAccountName. Si vous voulez appeler les attributs individuels de votre utilisateur, utilisez l’objet « userRS(“nomattribut”) ». Donc par exemple, si vous incluez la recherche « info » et si vous voulez utiliser le bloc Notes pour les marqueurs, mettez le code à jour comme suit :
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 = ""
Quels attributs individuels sont donc disponibles ? Vous pouvez voir les options des attributs ici :
http://www.kouti.com/tables/userattributes.htm
De plus, si vous activez Advanced Features dans Active Directory Users and Computers, vous pouvez changer les attributs individuels directement. Pour activer Advanced Features, allez à View > Advanced Features:
Une fois ceci activé, si vous allez aux propriétés de l’utilisateur, vous verrez un « Attribute Editor ».
Remarque sur le transfert d’organisations et de marqueurs
Pour transférer une organisation pour un utilisateur, une organisation doit déjà exister dans Zendesk. Si une organisation n’existe pas dans Zendesk (ou si les noms ne sont pas exactement identiques), Zendesk ne créera pas l’organisation « à la volée », contrairement à l’utilisateur. Vous devez d’abord créer l’organisation concernée.
Pour transférer des marqueurs, ils doivent être identifiés comme tels dans l’attribut :
« tag1, tag2, tag3 »
Si vous n’incluez pas la virgule entre les marqueurs, le transfert échouera.
Pour en savoir plus sur les différents champs que nous acceptons, consultez cette publication.
Une fois que vous avez effectué vos modifications dans le script, enregistrez-le. Allez à votre site Zendesk et cliquez sur Connexion. Cela devrait vous rediriger vers le script où vous entrerez vos identifiants Windows, puis vous replacer dans le Zendesk auquel vous êtes déjà connecté.
4. Résolution de problèmes
Vous avez cliqué sur Connexion et cela n’a pas marché ? Nous avons inclus une option de débogage dans le script. Si vous configurez le marqueur Debug sur True dans le script, les informations de débogage seront imprimées quand vous accédez au script. Cela devrait ressembler à ce qui suit :
[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
Vous devriez y trouver toutes les informations correctement répertoriées. Si vous avez configuré une organisation, des marqueurs ou une URL de photo, vous devriez voir ces données. Si vous voyez uniquement certaines des données, mais pas toutes, vérifiez les données d’attribut de l’utilisateur et assurez-vous que le code fait référence au bon attribut.
Si vous accédez à la page mais n’obtenez aucune donnée, cela signifie que le script ne parvient pas à se connecter à votre contrôleur de domaine ou qu’il n’a pas d’autorisation. Vérifiez sur le serveur que vous pouvez accéder au contrôleur de domaine en allant au partage du serveur (\\dcservername\ dans l’invite d’exécution). Vérifiez ensuite que le nom d’utilisateur et le mot de passe que vous avez placés dans le code sont corrects. De plus, si l’authentification anonyme est activée, vous verrez peut-être une page vide car l’authentification n’a pas été demandée. L’accès anonyme doit être désactivé.
Si vous n’arrivez pas à accéder à la page et si votre navigateur renvoie une erreur, il s’agit d’un problème IIS. Vérifiez que vous avez installé les rôles/services nécessaires sur votre serveur et qu’ils s’exécutent bien. Si vous rencontrez encore des problèmes, vous devrez peut-être vous adresser à un administrateur IIS car ce guide ne couvre pas ce type d’erreur.
Si vous rencontrez une erreur, partagez sa résolution avec nous. Je me ferais un plaisir de mettre cette publication à jour en y incluant des conseils supplémentaires portant sur les problèmes rencontrés et la façon de les résoudre.