翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Cognito を使用して、アプリケーションで認証されていないゲストアクセスを許可する方法
フロントエンド SDKsとダイレクト HTTPS リクエストの両方で AWS Identity and Access Management (IAM) を直接使用する代わりに、Amazon Cognito 認証を使用できます。
以下の場合は、この認証形式を使用します。
-
認証されていないユーザー — 匿名ユーザーがいるウェブサイトがある場合は、Amazon Cognito アイデンティティプールを使用できます。詳細については、「Amazon Cognito を使用して、アプリケーションで認証されていないゲストアクセスを許可する方法」セクションを参照してください。
-
独自の認証 — 独自の認証プロセスを使用する場合や、複数の認証方法を組み合わせたい場合は、Amazon Cognito フェデレーテッド IDを使用できます。詳細については、「Amazon Cognito 開発者ガイド」の「フェデレーテッドアイデンティティの使用を開始する」を参照してください。
Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。アプリケーションがスコープダウンされた一時的な AWS 認証情報を取得する方法として、Amazon Cognito の認証されていない ID プールを Amazon Location で使用できます。
詳細については、「Amazon Cognito 開発者ガイド」の「ユーザープールの使用を開始する」を参照してください。
注記
モバイルデベロッパーの場合、Amazon Location は iOS と Android の両方用のモバイル認証 SDKs を提供しています。詳細については、次の github リポジトリを参照してください。
Amazon Cognito アイデンティティプールを作成する
Amazon Cognito ID プールを作成して、Amazon Cognito コンソール、、または Amazon CognitoAmazon Cognito APIs を介して AWS CLI、認証されていないゲストがアプリケーションにアクセスできるようにします。
重要
作成するプールは、使用している Amazon Location Service リソースと同じ AWS アカウント と AWS リージョンに存在する必要があります。
認証されていない ID ロールに関連付けられた IAM ポリシーは、以下のアクションで使用できます。
-
geo:GetMap*
-
geo:SearchPlaceIndex*
-
geo:GetPlace
-
geo:CalculateRoute*
-
geo:GetGeofence
-
geo:ListGeofences
-
geo:PutGeofence
-
geo:BatchDeleteGeofence
-
geo:BatchPutGeofence
-
geo:BatchEvaluateGeofences
-
geo:GetDevicePosition*
-
geo:ListDevicePositions
-
geo:BatchDeleteDevicePositionHistory
-
geo:BatchGetDevicePosition
-
geo:BatchUpdateDevicePosition
他の Amazon Location アクションを含めても効果はなく、認証されていない ID はそれらを呼び出すことができません。
Amazon Cognito コンソールを使用して、アイデンティティプールを作成するには
-
Amazon Cognito コンソール
に移動します。 -
[アイデンティティプールの管理] を選択します。
-
[新しいアイデンティティプールの作成] を選択し、アイデンティティプールの名前を入力します。
-
折りたたみ式の [認証されていない ID] セクションで、[認証されていない ID に対してアクセスを有効にする] を選択します。
-
[プールの作成] を選択します。
-
アイデンティティプールで使用する IAM ロールを選択します。
-
[詳細を表示] を展開します。
-
[認証されていない ID] に、ロール名を入力します。
-
[ポリシードキュメントの表示] セクションを展開し、[編集] を選択してポリシーを追加します。
-
リソースへのアクセスを許可するポリシーを追加します。
マップ、場所、トラッカー、ルートのポリシー例を以下に示します。この例を独自のポリシーに使用するには、
region
とaccountID
のプレースホルダーを置き換えてください。注記
認証されていない ID プールはセキュリティで保護されていないインターネットサイトに公開することを目的としていますが、標準の期間限定 AWS 認証情報と交換されることに注意してください。
認証されていないアイデンティティプールに関連付けられている IAM ロールの範囲を適切に設定することが重要です。
-
[許可] を選択してアイデンティティプールを作成します。
作成されるアイデンティティプールは次の構文に従います。<
region
>:<GUID
>.
例:
us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef
Amazon Location 固有のその他のポリシー例については、Amazon Location Service のアイデンティティベースのポリシーの例を参照してください。
での Amazon Cognito ID プールの使用 JavaScript
次の例では、作成した認証されていない ID プールを認証情報と交換し、それをマップリソース のスタイル記述子の取得に使用しますExampleMap
。
const AWS = require("aws-sdk"); const credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "<identity pool ID>" // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef }); const client = new AWS.Location({ credentials, region: AWS.config.region || "<region>" }); console.log(await client.getMapStyleDescriptor("
ExampleMap
").promise());
注記
認証されていない ID から取得した認証情報の有効期限は、1 時間です。
以下は、有効期限が切れる前に認証情報を自動的に更新する関数の例です。
async function refreshCredentials() { await credentials.refreshPromise(); // schedule the next credential refresh when they're about to expire setTimeout(refreshCredentials, credentials.expireTime - new Date()); }
Amazon Location JavaScript 認証ヘルパーを使用して、この作業を簡略化することができます。これは認証情報の取得と更新の両方の代わりになります。この例では、 AWS SDK for JavaScript v3 を使用しています。
import { LocationClient, GetMapStyleDescriptorCommand } from "@aws-sdk/client-location"; import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; const identityPoolId = "<identity pool ID>"; // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef // Create an authentication helper instance using credentials from Cognito const authHelper = await withIdentityPoolId(identityPoolId); const client = new LocationClient({ region: "<region>", // The region containing both the identity pool and tracker resource ...authHelper.getLocationClientConfig(), // Provides configuration required to make requests to Amazon Location }); const input = { MapName: "ExampleMap", }; const command = new GetMapStyleDescriptorCommand(input); console.log(await client.send(command));
次のステップ
-
ロールを変更するには、IAM コンソール
にアクセスしてください。 -
アイデンティティプールを管理するには、Amazon Cognito コンソール
にアクセスしてください。