ArcGIS Server では、トークンベースのアクセス制御システムが使用されます。 ユーザーが認証されると、クライアント アプリケーションにアクセス トークンが発行されます。 ユーザーがセキュリティ保護されたサービスにアクセスしたり、管理タスクを実行したりする必要がある場合、クライアント アプリケーションはアクセス トークンを送信します。ArcGIS Server は、サービスのアクセス許可やユーザーの権限に応じて、そのサービスまたは管理タスクへのアクセスを許可するかどうかを決定します。
トークンのプロパティ
次のセクションでは、ArcGIS トークンの重要なプロパティについて説明します。
トークンの有効期間
トークンのセキュリティを維持するために、各トークンには有効期限が関連付けられます。 有効期限の切れたトークンを使用すると、エンド ユーザーにタイムアウトまたはその他のエラー メッセージが表示されることがあります。
トークンの有効期限を短くするほど、悪意のあるユーザーが傍受したトークンを使用できる時間が短くなるため、安全性が向上します。 ただし、有効期限を短くすると、アプリケーションはより頻繁に新しいトークンをリクエストする必要があります。
発行されたトークンの有効期間は 2 つのパラメーターで定義します。
- [短期トークンの有効期間] - クライアントがトークンをリクエストするときに、タイムアウト値が指定されていない場合は、短期トークンが発行されます。 発行されたトークンは、このプロパティで定義された期間のみで有効です。 クライアントがトークンをリクエストするときに、短期トークンの有効期間設定よりも短いタイムアウト値が指定されている場合は、リクエストされた有効期限の値でトークンが発行されます。
- [長期トークンの有効期間] - クライアントがタイムアウト値を指定してトークンをリクエストした場合は、リクエストされたタイムアウト値が、このプロパティで定義された期間と比較されます。 リクエストされたタイムアウト値が長期トークンの有効期間よりも短い場合は、リクエストされた有効期限の値でトークンが発行されます。 リクエストされたタイムアウト値が長期トークンの有効期間設定を超えている場合でも、トークンは発行されますが、このプロパティに一致した有効期限になります。
共有鍵の定義
ArcGIS トークンは、暗号化された情報の文字列です。 共有鍵は、この暗号化された文字列を生成するための暗号鍵です。 共有鍵が複雑であるほど、悪意のあるユーザーが暗号を破って共有鍵を解読することは困難になります。 共有鍵を解読し、ArcGIS Server の暗号化アルゴリズムを複製して認証済みユーザーのリストを取得したユーザーは、トークンを生成して、その ArcGIS Server 上にあるセキュリティで保護されたリソースを利用できるようになります。
共有鍵を定義する前に、次の点を考慮してください。
- 共有鍵は 16 文字に設定する必要があります (16 文字を超える文字は使用されません)。 鍵には一連のランダムな文字を使用することが推奨されます。 英数字以外の文字を含め、あらゆる文字を使用することができます。
- 鍵には、辞書にある単語や、簡単に推測できる一般的な値を使用しないでください。 鍵を覚えておく必要や、別の場所で鍵を使用する必要はないので、鍵の複雑さがパスワードの場合のように問題になることはありません。
- トークンは、Rijndael としても知られる AES (Advanced Encryption Standard) に基づいて、共有鍵とともに暗号化されます。 鍵を構成する 16 文字は、暗号化に使用される 128 ビットを表します。 暗号化と AES の詳細については、セキュリティ リファレンスを参照するか、組織内のセキュリティや暗号に詳しい担当者に問い合わせてください。
- セキュリティ レベルが高い環境では、定期的に共有鍵を変更することをお勧めします。 共有鍵を変更した場合は、新しい共有鍵を使用するためにアプリケーションの更新が必要になる場合があることに注意してください。 共有鍵を変更すると、埋め込まれているすべての既存のトークンが無効になります。
トークンの安全な送信
トークンの傍受と悪用を避けるために、HTTPS を使用してセキュリティで保護された接続を使用することをお勧めします。 HTTPS を使用することで、クライアントから送信されたユーザー名とパスワードと、ArcGIS Server から返されたトークンが傍受されなくなります。
GET リクエストを使用して ArcGIS トークンベースの認証でセキュリティ保護された Web サービスにアクセスするカスタム ArcGIS クライアント アプリケーションを構築する場合、クエリ パラメーターの代わりに X-Esri-Authorization ヘッダーでトークンを送信することをお勧めします。 これにより、プロキシ、ゲートウェイ、ロードバランサーなどのネットワーク上の中間地点でトークンを取得できなくなります。 下記の HTTP GET リクエストの例では、X-Esri-Authorization ヘッダーでトークンを送信します。GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1
Host: arcgis.mydomain.com
X-Esri-Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-
ArcGIS Server が Web 層認証 (IWA、HTTP BASIC、PKI など) ではなく ArcGIS Server 認証を使用している場合、X-Esri-Authorization ヘッダーの代わりに標準の HTTP Authorization ヘッダーを使用できます。GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1
Host: arcgis.mydomain.com
Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-