プロキシ サービスの利用

Web アプリで秘密鍵を扱うのに必要となるプロキシ サービスについて説明します。

プロキシ サービスとは

ブラウザー ベースの Web アプリに秘密鍵を埋め込むことはセキュリティのリスクが高まるため、プロキシ サービスの利用が推奨されています。プロキシ サービスを経由することでアプリ ID と秘密鍵をリクエストに埋め込むことができます。 プロキシ サービスを利用する方法は以下の2通りあります。

  • ArcGIS Online にホストされたプロキシ サービス(Service Proxies)

    ArcGIS for Developers の Web サイト上での設定のみで Esri の有償サービスへのアクセス権を持った URL を発行します

  • 独自の Web サーバーにホストするプロキシ ファイル(Resource Proxy)

    米国 Esri 社がプロキシ ファイルのソースコード(PHP、.NET、Java)を GitHub で公開しています

ArcGIS Online にホストされたプロキシ サービス

  1. ArcGIS for Developers の [Application] ページを開きます。

  2. [REGISTER NEW APPLICATION] をクリックしてアプリを登録します(登録済みのアプリであれば、アプリのページを開きます)。

  3. [Authentication] タブをクリックします。

  4. ページ下部の [Service Proxies] セクションまでスクロールします。

  5. [Service] リストからプロキシ サービスを利用したい Esri 有償サービスの種類を選択します。

  6. [Request Limit] にアクセス数の上限を設定します。

  7. [Allowed Domains] にてプロキシへのアクセス権を与えるリファラのホワイトリストにドメインを追加します。

サービス プロキシを利用可能な Esri 有償サービス一覧

以下ではサービス プロキシがサポートしているサービス一覧です。リストにないサービスやコンテンツ(例:個人が保有するセキュアなマップ/レイヤー)を設定したい場合は Resource Proxy を使ってください。

サービス [Service] リストの値
ジオコーディング geocode
ジオエンリッチメント geoenrichment
ルート解析 route
ルート解析(非同期) asyncroute
最寄り施設解析 closestFacility
最寄り施設解析(非同期) asyncClosestFacility
到達圏解析 serviceArea
到達圏解析(非同期) asyncServiceArea
ロケーション-アロケーション解析 asyncLocationAllocation
配車ルート解析 syncVRP
配車ルート解析(非同期) asyncVRP
交通量 traffic
標高 elevationSync
標高(非同期) elevation
水文解析 hydrology

独自の Web サーバーにホストするプロキシ ファイル

プロキシ ファイルは米国 Esri 社がメンテナンスしているプロキシ ファイルのソースコード(Resource Proxy)が GitHub で公開されています。このプロキシ ファイルにはアプリ ID と秘密鍵を設定することができ、Esri 有償サービスを利用するためのトークンとの交換を代替してくれます。

プロキシ サービスの設定

プロキシの設定ファイル(proxy.config)にアクセスを許可する Esri 有償サービスやプライベート コンテンツ(マップ/レイヤー)の情報を設定します。

  1. allowedReferers 属性を使ってアクセスを許可する HTTP リファラを設定します。

  2. rateLimitrateLimitPeriod 属性にて一定期間におけるアクセス数の上限を設定します。

以下は、プロキシ サービスの設定例です。

<ProxyConfig
    mustMatch="true"
    logFile="proxy_log_xml.log"
    allowedReferers="example.com">

  <serverUrls>
    <serverUrl
      url="geoenrich.arcgis.com"
      oauth2Endpoint="https://www.arcgis.com/sharing/oauth2"
      clientId="6Xo1d-example-9Kn2"
      clientSecret="5a5d50-example-c867b6efcf969bdcc6a2"
      rateLimit="120"
      rateLimitPeriod="60"
      matchAll="true"/>

    <serverUrl
      url="route.arcgis.com"
      matchAll="true"
      oauth2Endpoint="https://www.arcgis.com/sharing/oauth2"
      clientId="6Xo1d-example-9Kn2"
      clientSecret="5a5d50-example-c867b6efcf969bdcc6a2"
      rateLimit="120"
      rateLimitPeriod="60"/>

  </serverUrls>
</ProxyConfig>