方法
Python を介してトークンをリクエストする場合、リクエストは技術的に匿名になります。 IWA SSO を利用する場合、匿名認証は ArcGIS Web Adaptor レベルで無効になるため、トークンを生成しようとすると 404 Unauthorized エラーが返されます。
この制限を回避するには、Python 環境に requests-negotiate-sspi モジュールをインストールする必要があります。これは、リクエスト内に Windows 認証情報を渡す機能を「requests」モジュールに付与するために使用します。
以下のサンプル スクリプトを使用すると、スクリプトの実行時に使用する Windows アカウントの認証情報を使用してトークンを生成できます。
import json import requests from requests_negotiate_sspi import HttpNegotiateAuth portal = "https://hostname.domain.com/portal" server = "https://hostname.domain.com/server" def getPortalToken(url): parameters = {'client' : 'referer','referer': server,'expiration': 5,'f' : 'json'} req = requests.get(url + '/sharing/rest/generateToken?', parameters, auth=HttpNegotiateAuth()) json = req.json() token = json.get("token", "") return token def getServerToken(url, serverUrl, token): parameters = {'serverUrl' : serverUrl,'token' : token,'f' : 'json'} req = requests.get(url + '/sharing/rest/generateToken?', parameters, auth=HttpNegotiateAuth()) json= req.json() token = json.get("token", "") return token portalToken = getPortalToken(portal) serverToken = getServerToken(portal, server, portalToken) print(serverToken)
記事 ID: 000029103
ArcGIS エキスパートのサポートを受ける
Esri Support アプリのダウンロード