Wie erhalte ich Verbindungsinformationen aus einer .ags-Verbindungsdatei?

8

Ich arbeite an einem Python-Skript zum Verwalten von ArcGIS Server-Diensten (Veröffentlichen neuer Dienste, Aktualisieren vorhandener Dienste, Löschen alter Dienste usw.) im Batch in mehreren Umgebungen (z. B. Entwickler, Test und Produktion) und Instanzen (2+ pro Umgebung).

Zum Veröffentlichen von Diensten können Sie ArcPy- und AGS-Verbindungsdateien verwenden. Um jedoch darüber hinausgehende Aufgaben auszuführen (z. B. vorhandene Dienste auflisten, Dienste starten / stoppen / löschen), müssen Sie die AGS Admin REST-API verwenden , die die tokenbasierte Authentifizierung verwendet. und um ein Token zu erhalten , müssen Sie den Namen und das Passwort des Benutzers eingeben.

Es wäre für den Benutzer mühsam, jedes Mal die Server-URL, den Benutzernamen und das Kennwort anzugeben, insbesondere wenn er wie in meinem Skript mit mehr als einer AGS-Instanz gleichzeitig arbeitet. Ich würde es sehr bevorzugen, wenn sie stattdessen nur ihre bereits vorhandenen AGS-Verbindungsdateien verwenden könnten, die sie unabhängig davon für die Veröffentlichung benötigen.

Gibt es eine Möglichkeit, die Verbindungsinformationen (z. B. Server-URL, Benutzername, Kennwort) .agsprogrammgesteuert aus einer AGS-Verbindungsdatei ( ) abzurufen - idealerweise mit Python? arcpy.Describebetrachtet sie als dumme Dateien und kann nichts mit ihnen anfangen.

Wenn dies nicht möglich ist, muss ich wahrscheinlich einen zusätzlichen Konfigurationsschritt benötigen, um die Token für eine lange Zeit lokal zu generieren und zu speichern, da es zu umständlich wäre, den Benutzer jedes Mal zur Eingabe von Anmeldeinformationen für jede AGS-Instanz auffordern zu müssen Sie verwenden das Skript.

blah238
quelle

Antworten:

5

Kurz gesagt, nein. Es gibt keine Möglichkeit, diese Informationen ohne großen Aufwand und ernsthaftes Reverse Engineering aus einer .ags-Datei zu extrahieren. Esri hat es so konzipiert, da eine Datei, die den vollständig qualifizierten Domänennamen eines Servers sowie die vollständigen Anmeldeinformationen eines Benutzers mit Berechtigungen für den Zugriff auf diesen Server enthält, ein großes Sicherheitsrisiko darstellt.

Nur weil ein Benutzer über die Berechtigung zum Veröffentlichen eines Dienstes verfügt, bedeutet dies nicht, dass er Dienste auf dem GIS-Server starten und stoppen kann. Daher ist es Ihre Logik, dass er in der Lage sein sollte, nur weil er über eine Serververbindungsdatei (.ags-Datei) verfügt Der Zugriff auf die Administrator-REST-Endpunkte und die Start / Stopp-Dienste ist ein wenig fehlerhaft, es sei denn, ich interpretiere Ihren Beitrag falsch.

MrBubbles
quelle
1
Danke - so ziemlich das, was ich angenommen habe. Nur ein Schmerz ist alles. Natürlich müssten .ags-Dateien geschützt werden, genau wie .sde-Dateien. Aber zumindest können Sie .sde-Dateien tatsächlich für den beabsichtigten Zweck verwenden. AGS-Dateien scheinen zumindest für Skriptzwecke viel weniger nützlich zu sein. Und ich bin mir des Unterschieds zwischen Publisher- und Administrator-Verbindungen bewusst, wir verwenden hauptsächlich letztere.
blah238