Jetons et services de jetons
Un jeton est utilisé lorsque la sécurité d'ArcGIS Server est configurée sur l'option d'authentification gérée d'ArcGIS. Un jeton représente l'identité d'un utilisateur sur un service Web ArcGIS. Un jeton est envoyé à une application cliente par un service de jetons, qui est un service Web. Une application cliente doit fournir un jeton valide à un service Web ArcGIS sécurisé pour y accéder.
Authentification gérée par ArcGIS et basée sur l'utilisation de jetons
La séquence d'événements suivante se produit lorsqu'une application cliente tente d'accéder à un service Web ArcGIS sécurisé :
- le client adresse une demande à un service Web ArcGIS sécurisé ;
- le service Web ArcGIS indique au client qu'un jeton est nécessaire et lui fournit l'URL du service de jetons ;
- le client demande un jeton auprès du service de jetons en fournissant un nom d'utilisateur et un mot de passe valides ;
- le service de jetons vérifie le nom d'utilisateur et le mot de passe et, s'ils sont valides, envoie un jeton au client ;
- le client adresse une demande au service Web ArcGIS sécurisé à laquelle il inclut le jeton ;
- le service ArcGIS valide le jeton et renvoie au client la réponse à la demande de service.
Utilisation de services SIG sécurisés avec des jetons
Lorsque le service de jetons est activé et requis pour l'accès à des services Web ArcGIS, le logiciel client doit être en mesure d'obtenir et d'utiliser le jeton, comme dans le processus décrit ci-dessus. Les applications clientes ESRI, telles qu'ArcGIS Desktop, gèrent automatiquement le processus d'acquisition des jetons à partir du service de jetons et de présentation des jetons au service Web ArcGIS sécurisé. Le comportement des clients ArcGIS lorsqu'ils se connectent à un service Internet ArcGIS Server qui nécessite une authentification à base de jetons est décrit ci-dessous.
ArcGIS Desktop (ArcMap, ArcCatalog) : l'utilisateur saisit un nom d'utilisateur et un mot de passe valides dans la boîte de dialogue de connexion. Si aucun nom d'utilisateur ou mot de passe n'est saisi, ou si les informations de connexion sont incorrectes, le logiciel demande à l'utilisateur de saisir des informations d'identification correctes. Lorsqu'un nom d'utilisateur et un mot de passe corrects sont saisis, l'utilisateur peut utiliser le service normalement.
ArcGIS Explorer : même comportement qu'ArcGIS Desktop.
Applications Web ADF (Java et Microsoft .NET Framework) : l'application Web utilise les informations d'identification saisies précédemment dans le gestionnaire ou dans l'environnement de développement. Dans le gestionnaire, le nom d'utilisateur et le mot de passe sont saisis lors de l'ajout du serveur SIG au moment de la création d'une application Web. Dans un environnement de développement, tel que Microsoft Visual Studio, le nom d'utilisateur et le mot de passe sont saisis lors de l'ajout de la ressource SIG à l'application.
Applications JavaScript (API ArcGIS pour JavaScript, Extension ArcGIS pour l'API Google Maps, Extension ArcGIS pour Bing Maps et d'autres applications de type REST) : le client doit être en mesure de fournir un jeton pour accéder au service nécessitant un jeton. Dans la plupart des cas, il est inapproprié d'imbriquer le nom d'utilisateur et le mot de passe du service dans l'action JavaScript côté client. En revanche, un jeton persistant peut être obtenu auprès du serveur de jetons, et ce jeton peut être inclus dans la page côté client. Le jeton est ensuite intégré à la demande de service. Pour plus d'informations sur l'acquisition du jeton, consultez la page Web GetToken. Pour plus d'informations sur la demande d'une ressource avec un jeton, reportez-vous à l'aide de l'API appropriée.
Applications SOAP : les applications qui utilisent un kit de ressources SOAP pour accéder au langage WSDL (Web Service Description Language) du service Web SIG, sans utiliser les classes de connexion ADF, doivent acquérir et utiliser explicitement des jetons. Reportez-vous à l'aide pour les développeurs d'ArcGIS Server pour obtenir plus d'informations et des exemples.
Dans des applications Web, l'utilisateur final de l'application n'entre pas d'informations d'identification pour accéder au service ArcGIS dans le navigateur. Les informations d'identification permettant d'accéder au service Web ArcGIS sont spécifiées lors de la création de l'application Web dans le gestionnaire ArcGIS Server ou l'IDE Eclipse/NetBeans. Ces informations d'identification sont utilisées pour tous les utilisateurs de l'application Web. L'application Web peut elle-même être sécurisée pour demander des informations de connexion, mais ces dernières sont validées séparément. La sécurité au niveau de l'application Web peut être configurée à l'aide du gestionnaire ArcGIS Server. Grâce à la programmation personnalisée, il est possible de transmettre les informations d'identification de l'utilisateur final au service Web ArcGIS. Pour plus d'informations, reportez-vous à l'aide pour les développeurs d'ArcGIS Server.
Configuration d'un service de jetons
Un service de jetons est un service Web installé en même temps qu'ArcGIS Server. Il communique avec les magasins principaux et les magasins de sécurité qui conservent les informations sur l'utilisateur et le rôle pour authentifier les demandes entrantes de jetons. Après l'authentification des informations de l'utilisateur, un jeton est émis pour permettre à l'utilisateur d'utiliser un service Web ArcGIS sécurisé.
Avant de lancer un service de jetons sur votre instance ArcGIS Server, vous devez le configurer. Pour configurer un service de jetons, ouvrez la page Paramètres dans le volet Sécurité du gestionnaire et cliquez sur l'onglet Sécurité des services SIG. Sélectionnez l'option Authentification du service de jetons ArcGIS et cliquez sur Configurer pour configurer et lancer un service de jetons sur votre instance ArcGIS Server.
Pour obtenir plus d'informations sur les valeurs des délais d'expiration des jetons et les clés partagées, consultez les sections "Délai d'expiration des jetons" et "Clé partagée pour le service de jetons" ci-dessous.
Connexion sécurisée (HTTPS/SSL) requise pour le service de jetons
Une connexion sécurisée utilisant HTTPS (SSL ou Secure Sockets Layer) est requise par défaut pour demander un jeton auprès du service de jetons. HTTPS chiffre le nom d'utilisateur et le mot de passe pendant la transmission. Le client doit utiliser HTTPS pour demander un jeton, soit à travers la méthode standard pour laquelle le nom d'utilisateur et le mot de passe sont inclus dans la chaîne de requête (utilisée par ArcGIS Desktop, les contrôles Web ADF et d'autres clients), soit à travers la page Web GetToken.html.
Uniquement à des fins de tests internes, vous pouvez désactiver le protocole HTTPS pour que les jetons puissent être obtenus via un protocole HTTP non sécurisé. Soyez conscient que les mots de passe envoyés à l'aide du protocole HTTP peuvent être interceptés par quiconque est connecté au réseau.
Délai d'expiration des jetons
Une fois le service de jetons activé, vous pouvez configurer la valeur du délai d'expiration du jeton dans le gestionnaire en ouvrant la page Paramètres du volet Sécurité et en cliquant sur Configurer dans l'onglet Sécurité des services SIG. Chaque jeton est associé à un délai d'expiration pour garantir sa sécurité. Si l'utilisateur final utilise un jeton périmé, un message d'expiration ou un autre message d'erreur peut s'afficher.
Les jetons avec un délai d'expiration plus court sont plus sûrs, car ils ne sont valables que pendant une fenêtre horaire réduite. Cependant, si le délai d'expiration est court, les applications doivent recycler les jetons plus souvent, ce qui entraîne une diminution des performances.
Lors de la configuration du service de jetons installé avec ArcGIS Server, vous êtes invité à entrer deux délais d'expiration :
Délai d'expiration court (délai d'expiration par défaut)
Le service de jetons émet un jeton avec un délai d'expiration court lorsque le client ne précise pas la valeur du délai d'expiration ou ne fournit pas d'identifiant de client lors de la demande de jeton.
Pour accéder aux services Web ArcGIS sécurisés, les clients ArcGIS Desktop et les applications Web ADF utilisent des jetons avec des délais d'expiration courts.
Délai d'expiration long (délai d'expiration maximal)
Il s'agit du délai d'expiration maximal pouvant être émis par le service de jetons. Pour toutes les demandes de jetons précisant un délai d'expiration pour les jetons, il est nécessaire de fournir un ID de client. En fournissant son ID, le client peut demander un jeton avec un délai d'expiration compris entre une minute et le délai d'expiration long (délai d'expiration maximal). La demande d'un délai d'expiration plus long que le délai maximal est considérée comme une erreur.
Les développeurs JavaScript qui souhaitent utiliser des services sécurisés peuvent demander un jeton avec un délai d'expiration spécifique sur la page Web GetToken.
Pour obtenir plus d'informations sur la demande de jetons, consultez la section "Demande de jetons" ci-dessous.
Clé partagée pour le service de jetons
La clé partagée pour le service de jetons permet de chiffrer le jeton. Le jeton est chiffré à l'aide du nom d'utilisateur et d'autres informations, puis envoyé au client. La demande envoyée par le client pour accéder à un service Web ArcGIS inclut le jeton. Le serveur utilise alors la clé partagée pour déchiffrer le jeton. Le serveur vérifie l'identité du client avant d'autoriser l'accès au service Web ArcGIS. La clé partagée garantit que le serveur a créé le jeton.
Comme la clé partagée est essentielle pour garantir l'identité et l'autorisation du client, une valeur unique d'une longueur appropriée doit être attribuée à la clé. Pour configurer la clé partagée, ouvrez la page Paramètres dans le volet Sécurité et cliquez sur Configurer dans l'onglet Sécurité des services SIG. Dans la boîte de dialogue Configurer le service de jetons local, définissez la valeur de la propriété Clé partagée pour le jeton de chiffrement. La clé doit être de 16 caractères (les caractères spécifiés après les 16 premiers ne sont pas utilisés). Il est recommandé d'utiliser un ensemble de caractères aléatoires pour la clé. Tous les caractères peuvent être utilisés, y compris les caractères non alphanumériques. La valeur de la clé ne doit pas pouvoir être devinée facilement par quiconque intercepterait le jeton. Comme les utilisateurs ne doivent ni utiliser ni se souvenir de la clé, la complexité de cette dernière n'est pas problématique, alors qu'elle peut l'être avec les mots de passe.
Le jeton est chiffré avec la clé à l'aide de la méthode de chiffrement AES (Advanced Encryption Standard), également connue sous le nom de Rijndael. Les 16 caractères de la clé correspondent aux 128 bits utilisés pour le chiffrement.
Pour obtenir plus d'informations sur le chiffrement et la norme AES, consultez les références sur la sécurité ou adressez-vous à une personne compétente de votre organisation dans les domaines de la sécurité et du chiffrement.
Page Web GetToken
Une page HTML est fournie avec le service de jetons pour permettre les demandes manuelles de jetons. En règle générale, cela est uniquement nécessaire lors de la création d'applications Web à l'aide de l'API ArcGIS Server pour JavaScript ou à des fins de test ou de dépannage. Les clients tels que les applications Web ADF et ArcGIS Desktop récupèrent automatiquement des jetons et ne requièrent pas cette page. La page GetToken se trouve sur l'instance d'ArcGIS Server à l'adresse https://<serveur_web>:<port>/arcgis/tokens/gettoken.html (ou si vous avez exporté le service de jetons et que vous l'avez déployé sur un serveur Web, remplacez <serveur_web> par le nom de domaine du serveur Web et remplacez arcgis/tokens par le chemin d'accès contextuel de l'application déployée).
Pour utiliser la page GetToken, entrez les informations suivantes :
- Nom d'utilisateur et mot de passe : informations d'authentification de l'utilisateur, valides pour les services Web ArcGIS sur ArcGIS Server. Les utilisateurs valides sont ceux qui ont été configurés par le gestionnaire ArcGIS Server dans le volet Paramètres.
- ID de client : identifiant de la machine adressant la demande au service Web. L'ID de client est nécessaire pour obtenir un jeton à long terme qui reste valide pendant une période prolongée, comme lors de l'utilisation de l'API ArcGIS pour JavaScript. L'ID de client peut être indiqué de deux façons différentes :
- Adresse IP : elle lie le jeton à la machine indiquée. Utilisez cette option si le jeton est toujours utilisé sur cette machine, comme pour une application Web créée avec l'API ArcGIS Server pour SOAP. Le serveur adressera alors les demandes au service Web ArcGIS depuis cette machine. Cette approche peut également être utilisée pour tester et résoudre des problèmes avec ArcGIS Server.
- Point d'accès HTTP : il s'agit de l'URL de la page à partir de laquelle la demande est adressée au service Web ArcGIS. Utilisez cette approche si vous créez une application avec l'API ArcGIS Server pour JavaScript ou une autre application REST, dans laquelle les clients individuels demanderont des cartes et des données directement à partir du service Web ArcGIS.
- Expiration : délai d'expiration pour un jeton, compris entre une minute et le délai maximal.
Format de demande de jeton
Pour obtenir un jeton du serveur, vous effectuez une demande d'URL. Les clients qui utilisent des jetons, tels qu'ArcGIS Desktop, l'infrastructure Web ADF, l'API Web et les clients mobiles utilisent cette approche, de même que la page GetToken décrite dans la section précédente.
Demande de jeton à l'aide de l'extrémité tokens
Vous pouvez demander un jeton à l'aide de l'extrémité tokens. Par exemple, l'URL suivante peut être utilisée pour obtenir un jeton d'un serveur :
https://myserver.example.com/arcgis/tokens?request=gettoken&username=myuser&password=secret1&clientid=ref.myserver.example.com&expiration=1440&f=json&callback=myfunction
Cette demande obtiendra un jeton pour l'utilisateur utilisateur1 pour une application Web qui s'exécute sur le même serveur (myserver.example.com) avec une période de validation d'un jour (1 440 minutes).
Les paramètres suivants peuvent être spécifiés dans la chaîne de requête :
request : la valeur de ce paramètre est toujours gettoken (request=gettoken). (obligatoire).
username : nom d'un utilisateur dans le système. (obligatoire).
password : mot de passe de l'utilisateur dans le système. (obligatoire).
Remarque :HTTPS/SSL chiffre le nom d'utilisateur et le mot de passe pendant la transmission du jeton. Pour plus d'informations, reportez-vous à la section Connexion sécurisée (HTTPS/SSL) ci-dessus.
clientid : paramètre facultatif qui identifie le client. Utilisez un caractère "." entre le type et la valeur. Si ce paramètre n'est pas spécifié, le jeton utilisera un paramètre de délai d'expiration des jetons éphémères.
Valeurs :
ip : adresse IP du client.
Exemple : clientid=ip.10.14.102.85
ref : URL de base de l'application Web dans laquelle ce jeton sera utilisé. Ce paramètre doit être spécifié si la valeur du paramètre client est referrer.
Exemple : clientid=ref.http://monserveur/monapplicationweb
requestip : si la valeur est spécifiée en tant que requestip (IP de la requête), le jeton est créé pour l'IP à partir de laquelle la demande a été émise.
Exemple : clientid=requestip
expiration : paramètre facultatif spécifiant combien de temps le jeton sera valide à partir de sa publication. La valeur est exprimée en minutes. Si ce paramètre n'est pas inclus, l'expiration utilisera le paramètre de délai d'expiration des jetons éphémères.
f : nouveauté d'ArcGIS Server 10.0 Service Pack 1 (SP1), ce paramètre facultatif précise le format en sortie. Il accepte la valeur "json" pour renvoyer le résultat au format json. Si ce paramètre n'est pas précisé, le jeton est créé au format texte.
Exemple : {"token":"hjSXkAQl2uczsyE9T3NDvhcso6WVYWSAqBcn1GFB-L8.","expires":"1289513369381"}
Le délai d'expiration est exprimé en millisecondes depuis le 1er janvier 1970.
callback : paramètre facultatif précisant le nom de la fonction de rappel. Lorsque le rappel est inclus, la sortie est toujours renvoyée au format json.
Demande de jeton à l'aide de l'extrémité generateToken
Nouveauté d'ArcGIS Server 10.0 Service Pack 1 (SP1), vous pouvez également demander un jeton à l'aide de l'extrémité generateToken. Par exemple, l'URL suivante peut être utilisée pour obtenir un jeton d'un serveur :
https://myserver.example.com/arcgis/tokens/generateToken?username=myuser&password=mypass&client=referer|ip|requestip&referer=referer&ip=ipaddress&expiration=expiration&f=json&callback=myfunction
Les paramètres suivants peuvent être spécifiés dans la chaîne de requête :
username : nom d'utilisateur pour lequel le jeton est créé. (obligatoire).
password : mot de passe correspondant au nom d'utilisateur. (obligatoire).
Remarque :HTTPS/SSL chiffre le nom d'utilisateur et le mot de passe pendant la transmission du jeton. Pour plus d'informations, reportez-vous à la section Connexion sécurisée (HTTPS/SSL) ci-dessus.
client : paramètre facultatif qui identifie le client. Si ce paramètre n'est pas spécifié, le jeton utilisera un paramètre de délai d'expiration des jetons éphémères.
Valeurs :
referer : URL de base de l'application Web dans laquelle ce jeton sera utilisé. Ce paramètre doit être spécifié si la valeur du paramètre client est referrer.
Exemple : referer=http://monserveur/monapplicationweb
ip : adresse IP de la machine à partir de laquelle le jeton sera utilisé. Ce paramètre doit être spécifié si la valeur du paramètre client est ip.
Exemple : ip=10.14.102.85
requestip : si la valeur est spécifiée en tant que requestip (IP de la requête), le jeton est créé pour l'IP à partir de laquelle la demande a été émise.
expiration : paramètre facultatif spécifiant combien de temps le jeton sera valide à partir de sa publication. La valeur est exprimée en minutes. Ce délai ne peut pas être supérieur au délai maximal autorisé pour un jeton persistant.
Exemple : expiration=60
Remarque :Si les paramètres client et expiration ne sont pas inclus, un jeton éphémère est créé et l'expiration utilise le paramètre de délai d'expiration de jeton éphémère.
f : paramètre facultatif précisant le format en sortie. Il accepte la valeur "json" pour renvoyer le résultat au format json. Si ce paramètre n'est pas précisé, le jeton est créé au format texte.
Exemple : {"token":"hjSXkAQl2uczsyE9T3NDvhcso6WVYWSAqBcn1GFB-L8.","expires":"1289513369381"}
Le délai d'expiration est exprimé en millisecondes depuis le 1er janvier 1970.
callback : paramètre facultatif précisant le nom de la fonction de rappel. Lorsque le paramètre de rappel est inclus, la sortie est toujours renvoyée au format json.