J'ai une instance d'ArcGIS 10.1 Server exposant des services de carte sécurisés sur Internet. Mon besoin est de coder une application client (que je suis en train de construire en utilisant la version 3.3 de l'API ArcGIS Javascript) permettant à l'utilisateur de visualiser ces services web sécurisés:
Je pense que cet exemple ESRI en ligne est un bon début.
Ma volonté est de ne pas inviter l'utilisateur à CHAQUE authentification mapservice car je sais déjà que TOUS les services map appartiennent à lui / elle et sont donc accessibles par lui / elle sous le même nom d'utilisateur et mot de passe. Dans mon idée, l'invite pour les informations d'identification devrait apparaître juste UNE FOIS et donc le code JS devrait fournir des informations d'identification à chacun des services de carte via une sorte d'appel de connexion RESTful. Pour moi, il ne semble pas que l'API REST d'ArcGIS Server fournisse un tel appel ... je me trompe peut-être.
Cette façon "RESTful" de se connecter à des services de carte sécurisés est-elle donc possible avec ArcGIS Server (permettant d'accéder par programmation aux services sécurisés)? Si oui, pouvez-vous fournir des exemples ou des liens vers des ressources Web expliquant cela?
Réponses:
J'ai finalement trouvé ce que je cherchais: un point de terminaison Web ArcGIS Server approprié que je pouvais utiliser pour générer des jetons!
L'appel est le suivant:
ce qui rend le jeton dans le corps de réponse HTTP, et on peut l'envoyer à toute autre demande de ressources sécurisées sans être invité à nouveau pour les informations d'identification. Le jeton doit être la valeur de l'en-
Cookie
tête de la demande, car il est actuellement stocké dans un cookie côté client.Mais ... putain ! Ce générateur de jetons NE fait PAS partie de l'API REST d'ArcGIS Server !!! Je ne l'ai pas trouvé dans la documentation API en ligne ! Où dans le monde pourrais-je le trouver ???
Cela signifie qu'ArcGIS Server n'a pas de cadre d'authentification RESTful.
Par exemple, si nous avons ce service de carte exposé sous l'API ArcGIS REST:
/arcgis/rest/services/myDir/myMapService/MapServer/layers
et que nous essayons d'obtenir cette ressource, ce que nous obtenons d'ArcGIS Server est une réponse ayant un200: OK
code d'état et un document HTML dans le corps (le HTML est un formulaire de connexion ). À partir d'une connexion potentielle RESTful, je m'attendrais à ce que la demande me redonne un401: Authentication Required
code d'état avec un en-WWW-Authenticate
tête ... J'ai testé tout cela moi-même en utilisant un programme client REST.la source
Veuillez consulter le fonctionnement d' ArcGIS Server Security.
Fondamentalement, vous devrez créer des utilisateurs et des groupes, et accorder des droits d'utilisateur particuliers sur certains services.
Une fois que vous avez fait cela, vous devez utiliser la sécurité basée sur les jetons dans votre application JavaScript. Cela signifie que vous demandez à l'utilisateur son nom d'utilisateur et son mot de passe. Celui-ci est envoyé à ArcGIS Server, qui valide les informations d'identification et renvoie un jeton. Ce jeton est utilisé pour valider l'utilisateur chaque fois qu'une ressource est demandée.
En tant que programmeur, vous enverrez ce jeton à chaque service de carte, service de requête, etc.
Cette page détaille comment utiliser les services basés sur les jetons .
L'API Javascript ArcGIS est déjà livrée avec une classe, l' IdentityManager pour ce faire.
Voici quelques exemples d'utilisation de Identity Manager.
la source
Dans l'API ArcGIS pour JavaScript, il existe un widget appelé Identity Manager qui traite exactement ce que vous voulez faire. Découvrez des exemples qui utilisent le gestionnaire d'identité pour voir comment cela fonctionne.
L'exemple lié par Devdatta, bien que valide, est le moyen de le faire avant Identity Manager et implique beaucoup plus de code qui est nécessaire maintenant que l'authentification pour les services sécurisés est intégrée dans l'API.
la source
Vous pouvez également utiliser le proxy, de sorte que votre application ne vous demandera jamais de nom d'utilisateur et de mot de passe. Et vous n'avez pas besoin de configurer Token pour accéder aux services sécurisés chaque fois que vous y accédez. La seule chose que vous devez faire est dans votre fichier JS, définissez ce qui suit: esriConfig.defaults.io.proxyUrl = "/proxy.ashx"; (par exemple, http: //localhost//DotNet/proxy.ashx ; esriConfig.defaults.io.alwaysUseProxy = true; et dans votre fichier proxy.config, fournissez tous les services que vous consommez dans votre application.
Consultez https: //github.com/Esri/resource-proxy/ pour plus de détails sur le proxy. Comme vous voulez une authentification basée sur des jetons, dans votre fichier proxy.config, vous devez ajouter uniquement l'url, le nom d'utilisateur, le mot de passe et le contenu matchAll.
la source