Amazon Pinpoint
開発者ガイド

Amazon Pinpoint アプリのユーザー認証

Amazon Pinpoint と統合するには、エンドポイントを登録して、使用量をレポートするために、アプリでユーザーを認証する必要があります。AWS Mobile Hub でプロジェクトを作成して Amazon Pinpoint にアプリを追加すると、Mobile Hub は、ユーザー認証を実装するために自動的に次の AWS リソースをプロビジョニングします。

Amazon Cognito ID プール

Amazon Cognito は、ユーザー用に一意の ID を作成し、アプリのバックエンド AWS; リソースへの一時的アクセスを許可する認証情報を提供します。ID プールは、アプリユーザーのユーザー ID データのストアです。

Amazon Cognito は認証されたユーザーと認証されていないユーザーに認証情報を提供します。認証されたユーザーには、Facebook、Amazon、または Google などのパブリック ID プロバイダーを使用してサインインしたユーザーが含まれます。認証されていないユーザーとは、ゲストユーザーなどアプリにサインインしていないユーザーです。

AWS リソースへのユーザーのアクセスは、認証されたユーザーと認証されていないユーザーとに分けた AWS Identity and Access Management (IAM) ロールを使って制御します。これらのロールは、ID プールに割り当てられている必要があります。

認証されていないユーザーの IAM ロール

認証されていないユーザーに AWS リソースへの制限付きのアクセス権を委任する、アクセス権限ポリシーが含まれています。必要に応じてロールをカスタマイズできます。デフォルトでは、このロールが Amazon Cognito ID プールに割り当てられます。

アプリでパブリック ID プロバイダーで認証するように要求する場合は、認証されたユーザーの IAM ロールを作成して、このロールを ID プールに割り当てる必要があります。Amazon Pinpoint をサポートするには、認証されたロールのアクセス権限に、Mobile Hub によって作成された認証されていないロールと同じアクセス権限が含まれている必要があります。

IAM ロールの詳細については、『IAM ユーザーガイド』の「IAM ロール」を参照してください。

アプリのコードは、Amazon Cognito と IAM を使って次のようにユーザーを認証します。

  1. アプリのコードは、Amazon Cognito 認証情報プロバイダーを構築します。

  2. Amazon Pinpoint クライアントを初期化するときに、アプリのコードはプロバイダーをパラメータとして渡します。

  3. この Amazon Pinpoint クライアントは、ID プールのユーザー ID の認証情報を取得するために、プロバイダーを使用します。新しい ID に新しいユーザーが割り当てられます。

  4. ユーザーは、ID プールと関連付けられた IAM ロールによって付与されたアクセス権限を取得します。

Amazon Cognito のユーザー認証方法の詳細については、『Amazon Cognito 開発者ガイド』の、「Amazon Cognito ID: フェデレーテッドアイデンティティを使用する」を参照してください。

認証されていないロール

Mobile Hub によって作成された認証されていないロールを使い、アプリのユーザーは、Amazon Pinpoint にデータを送信することができます。ロール名には、"unauth_MOBILEHUB" が含まれます。たとえば、IAM コンソールに、MySampleApp_unauth_MOBILEHUB_1234567890 のような名前のロールが表示されます。

2 つのタイプのポリシーでアクセス権限を委任する IAM ロール。

  • アクセス権限ポリシー – ロールのユーザーに、指定されたリソースの指定されたアクションを実行するアクセス権限を付与します。

  • 信頼ポリシー – ロールを引き受け、アクセス権限の取得を許可されるエンティティを指定します。

アクセス権限ポリシー

認証されていないロールには 2 つのアクセス権限ポリシーが含まれています。次のアクセス権限ポリシーにより、アプリユーザーは、Amazon Pinpoint に登録し、アプリの使用状況イベントをレポートできます。Mobile Hub は、このポリシーに "mobileanalytics_MOBILEHUB" を含んだ名前を割り当てます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "mobiletargeting:UpdateEndpoint" ], "Resource": [ "arn:aws:mobiletargeting:*:*:apps/*" ] } ] }

アプリが Amazon Pinpoint に統合されると、新しいユーザーがアプリを開始したときにアプリによってエンドポイントが Amazon Pinpoint に登録されます。ユーザーが新しいセッションを開始するたびに、アプリは更新されたエンドポイントデータを Amazon Pinpoint に送信します。

次のアクセス権限ポリシーにより、アプリユーザーは、アプリ用の Amazon Cognito ID プールを使って ID を確立することができます。Mobile Hub は、このポリシーに "signin_MOBILEHUB" を含んだ名前を割り当てます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:GetId" ], "Resource": [ "arn:aws:cognito-identity:*:*:identityPool/us-east-1:1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" ] } ] }

信頼ポリシー

ID プールにおいて Amazon Cognito が認証されていないユーザー用のロールを引き受けることができるよう、Mobile Hub は、ロールに次の信頼ポリシーを追加します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }

認証されたロールに割り当てられた信頼ポリシーの例については、『Amazon Cognito 開発者ガイド』の「ロールベースアクセスコントロール」を参照してください。

このページの内容: