AWS Mobile Application Development

AWSのサービスをモバイルから使うにあたって調べた情報などまとめて行きます。

AndroidとDynamoDB実装方法 (2/4) - Cognito初期設定 -

AWSのNoSQLデータベースDynamoDBをDBとしてデータ操作を行うための基本的な設定のご紹介です。

AndroidとDynamoDB実装方法 (1) - AWS SDKの準備 -に続き、AWS Cognitoの設定を行います。


AWSのサービスをモバイルから使うときは、APIキー等を以前は使用していたと思いますが、現在はCognitoによる認証が基本となります。DynamoDB連携の事前作業として、Congnitoの初期設定を行います。

[目次]

Cognitoとは

Amazon Cognito は、ユーザーの一意の ID を作成したり、独自のユーザープールを使用するかまたはフェデレーテッド ID プロバイダーを使用して認証したりできるサービスです。アプリケーションの設定やゲームの状態などのモバイルユーザーデータを AWS クラウドに保存できます。バックエンドコードの記述やインフラストラクチャの管理は必要ありません。

よくある質問 - Amazon Cognito | AWS

今回の実装のケースで言うと、Android端末からDynamoDBへアクセスする際の認証機能としてCongnitoを使います。ユーザID/PWというような認証ではなく、今回のアプリ用のキーを発行してそのキーがプログラム内に記載されていれば、どんなアプリでもDynamoDBへアクセスすることができるという設定です。

AWSでのモバイル開発での認証方式について

AWSでは以下の通り、モバイル開発においてAWSを使用する場合Cognitoを使用するによう記載されています。アクセスキーをプログラム内に書くやり方も可能ですが、リスクとして、アプリ配布後、クラッカーがプログラムを解析して、プログラム内に記載されているアクセスキーを取得し、悪用することが出来てしまいます。その為、アプリ毎に権限をコントロールできるCognitoを使用することを推奨しています。

暗号化ストレージ内であっても、アクセスキーをアプリに埋め込まないでください。代わりに、Amazon Cognito を使用して、アプリでユーザー ID を管理してください。このサービスでは、AmazonFacebookGoogle、または OpenID Connect (OIDC) に対応している任意の ID プロバイダを使用してユーザーを認証できます。さらに、Amazon Cognito 認証情報プロバイダを使用して、AWS にリクエストを送信するためにアプリが使用する認証情報を管理できます。

docs.aws.amazon.com

アイデンティティプールの作成

AWSコンソールにログインし、「Cognito」サービスを開きます。
f:id:azumami:20161106072759p:plain

開いた画面で「Manage Federated Identities」をクリック。
f:id:azumami:20161106072910p:plain

「Identity Pool Name」に任意の認証グループ名を記載します。その際に「Enable access to unauthenticated identities」にチェックを入れ匿名ユーザのアクセス設定を可能な状態にします。
f:id:azumami:20161106073151p:plain

デフォルトの状態で「Allow」をクリックします。
f:id:azumami:20161106073426p:plain


以下のような認証情報が記載されますので「Get AWS Credentials」の方をテキストでコピーしておきます。
f:id:azumami:20161106073643p:plain

「Store User Data」はCongnitoの機能で端末間のユーザ情報を同期するための同期プログラムですので、この中では使用しません。

以上で、Cognitoの設定は終了です。続いて、DynamoDBの初期設定に進みます。