プロキシ サービスの利用
Web アプリで秘密鍵を扱うのに必要となるプロキシ サービスについて説明します。
プロキシ サービスとは
ブラウザー ベースの Web アプリに秘密鍵を埋め込むことはセキュリティのリスクが高まるため、プロキシ サービスの利用が推奨されています。プロキシ サービスを経由することでアプリ ID と秘密鍵をリクエストに埋め込むことができます。 プロキシ サービスを利用する方法は以下の2通りあります。
ArcGIS Online にホストされたプロキシ サービス(Service Proxies)
ArcGIS for Developers の Web サイト上での設定のみで Esri の有償サービスへのアクセス権を持った URL を発行します
独自の Web サーバーにホストするプロキシ ファイル(Resource Proxy)
米国 Esri 社がプロキシ ファイルのソースコード(PHP、.NET、Java)を GitHub で公開しています
ArcGIS Online にホストされたプロキシ サービス
ArcGIS for Developers の [Application] ページを開きます。
[REGISTER NEW APPLICATION] をクリックしてアプリを登録します(登録済みのアプリであれば、アプリのページを開きます)。
[Authentication] タブをクリックします。
ページ下部の [Service Proxies] セクションまでスクロールします。
[Service] リストからプロキシ サービスを利用したい Esri 有償サービスの種類を選択します。
[Request Limit] にアクセス数の上限を設定します。
[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 有償サービスやプライベート コンテンツ(マップ/レイヤー)の情報を設定します。
allowedReferers
属性を使ってアクセスを許可する HTTP リファラを設定します。rateLimit
とrateLimitPeriod
属性にて一定期間におけるアクセス数の上限を設定します。
以下は、プロキシ サービスの設定例です。
<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>