方法

Python を使用して IWA SSO 認証を使用するフェデレートされた ArcGIS Server のトークンを生成する

Last Published: January 11, 2023

サマリー

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

新しい問題や一般的な問題に対する通知とソリューションの受け取り

新しい AI チャットボットから、要約された回答とビデオソリューションを入手してください。

Esri Support アプリのダウンロード

関連情報

このトピックについてさらに調べる

ArcGIS エキスパートのサポートを受ける

テクニカル サポートへのお問い合わせ

Esri Support アプリのダウンロード

ダウンロード オプションに移動