Comment obtenir des informations de connexion à partir d'un fichier de connexion .ags?

8

Je travaille sur un script Python pour gérer les services ArcGIS Server (publier de nouveaux services, mettre à jour les services existants, supprimer les anciens services, etc.) en lot dans plusieurs environnements (par exemple, développement, test et production) et des instances (2+ par environnement).

Pour publier des services, vous pouvez utiliser les fichiers de connexion ArcPy et AGS, mais pour faire quoi que ce soit au-delà (par exemple, répertorier les services existants, démarrer / arrêter / supprimer des services), vous devez utiliser l' API REST Admin AGS , qui utilise l'authentification par jeton, et pour obtenir un jeton, vous devez soumettre le nom et le mot de passe de l'utilisateur.

Devoir spécifier l'URL, le nom d'utilisateur et le mot de passe du serveur à chaque fois serait fastidieux pour l'utilisateur, surtout s'il travaille avec plus d'une instance AGS à la fois, comme le fait mon script. Je préférerais de loin qu'ils puissent simplement utiliser leurs fichiers de connexion AGS préexistants, dont ils ont besoin pour la publication malgré tout.

Existe-t-il un moyen d'obtenir les informations de connexion (par exemple, URL du serveur, nom d'utilisateur, mot de passe) à partir d'un .agsfichier de connexion AGS ( ) par programme - idéalement avec Python? arcpy.Describeles considère comme des fichiers stupides et ne peuvent rien faire avec eux.

S'il n'y a aucun moyen de le faire, je suppose que je devrai exiger une étape de configuration supplémentaire pour générer et stocker les jetons localement pendant une longue durée car il serait trop lourd de devoir inviter l'utilisateur à fournir des informations d'identification pour chaque instance AGS à chaque fois. ils utilisent le script.

blah238
la source

Réponses:

5

Bref, non. Il n'y a aucun moyen d'extraire ces informations d'un fichier .ags sans un effort majeur et une ingénierie inverse sérieuse. Esri l'a conçu de cette façon, car avoir un fichier contenant le nom de domaine complet d'un serveur ainsi que les informations d'identification complètes d'un utilisateur disposant de privilèges d'accès à ce serveur poserait un risque de sécurité majeur.

De plus, ce n'est pas parce qu'un utilisateur est autorisé à publier un service qu'il peut démarrer et arrêter des services sur le serveur SIG, donc votre logique est qu'il devrait être en mesure de accéder aux points de terminaison Administrateur REST et aux services de démarrage / arrêt est un peu défectueux, à moins que j'interprète mal votre message.

MrBubbles
la source
1
Merci - à peu près ce que je pensais être le cas. Juste une douleur est tout. Bien sûr, les fichiers .ags devraient être protégés, tout comme les fichiers .sde. Mais au moins, vous pouvez réellement utiliser les fichiers .sde pour leur destination. Les fichiers AGS semblent être beaucoup moins utiles, au moins à des fins de script. Et je suis conscient de la différence entre les connexions éditeur et administrateur, nous utilisons principalement ce dernier.
blah238