マルチプラットフォームのモバイル・WebアプリのアクセスをコントロールするAmazon Cognito

ユーザー認証の仕組みは、コンシューマ向けWebサイトやエンタープライズ企業の社内システム、モバイルアプリなど、ユーザーやアプリケーションの目的に応じて適切なものを採用します。AWSでは、さまざまなシステムの要件に応じた認証の仕組みを構築できるサービスを提供していますが、本コラムでは、モバイル・Webアプリに特化したユーザー認証の仕組み「Amazon Cognito」を紹介します。

シンプルかつセキュアなモバイルアプリの認証を提供するAmazon Cognito

ID/Passwordによるユーザー認証といっても、そこで使用される認証の仕組みやシステム環境や目的によって異なります。一般的なWebブラウザで利用するサイトならCookieを使ったセッション管理を使い、エンタープライズ企業のシステムなら Windowsの認証機能を使うことが多いでしょう。

APIに問い合わせして、適切な情報を取得・展開しながら利用するモバイルアプリやシングルページのWebアプリケーションの場合は、一般的にトークンと呼ばれる情報を使って認証を実現します。

ID/Passwordで認証したあとの通信では、トークンを伴ってリクエストを行う

AWSでは、さまざまなシステムの認証の仕組みを構築できるサービスを提供しています。なかでもAmazon CognitoはモバイルアプリやWebアプリケーションの認証に特化したサービスです。何億人ものユーザーにスケールできるセキュアなユーザー管理機能を容易に構築でき、Google、Facebook、AmazonなどのソーシャルIDを使った認証も提供します。また、データベースや通知、ロジックの実行などを担うほかのAWSサービスと連携したスケーラブルなアプリの開発が可能です。

ユーザープールとIDプール

Amazon Cognitoの主なコンポーネントは、アプリユーザーのサインアップとサインインを提供する「ユーザープール」とAWSのほかのサービスに対するアクセスを許可する「IDプール」です。下の図のようにユーザープールを介してサインインしたユーザーにトークンを与え、IDプールにてトークンを交換することで、Amazon S3やDynamoDBなどほかのAWSサービスにアクセスできるようになる仕組みを提供できます。

ユーザー認証のあとにAWSのほかのサービスへのアクセス許可を与える

Cognito Sync

PCやスマートフォン、タブレットなど、同一ユーザーが複数端末、OSの環境から利用する場合のデータの同期をサポートする「Cognito Sync」も提供されています。クライアントSDKをアプリに組み込むだけで、スケーラブルな同期基盤を構築できます。

iOSアプリ、Androidアプリ、Webブラウザなどさまざまなプラットフォームにまたがってデータを同期

Amazon CognitoとAWSのほかのサービスとの連携例

Amazon Cognitoはあくまでもユーザー認証を管理する仕組みですので、モバイルアプリとしてのサービスを実現する処理やデータベースの利用などには他の仕組みを使います。ここでは、AWSのほかのサービスと連携した利用例をいくつか紹介しましょう。

Amazon SNS Mobile Pushとの連携

Amazon Cognitoがユーザーからデータを受け取ったことをきっかけとして、ほかのAWSサービスと連携した処理を構築できます。たとえば、モバイルアプリでよく使われる機能であるプッシュ通知も可能です。連携するサービスは、「Amazon SNS Mobile Push」で、データの更新について同じデータを参照しているほかのユーザーに変更の通知をするなどの仕組みも構築できるでしょう。

Amazon SNSは、購読者のアプリケーションなどへのメッセージ配信を管理できるサービス。モバイル端末へのプッシュ通知にも対応

Amazon Kinesisとの連携

データストリームをリアルタイムで容易に収集、処理、分析できる「Amazon Kinesis」と連携すれば、ユーザーがデータを更新したタイミングでAmazon Kinesisにデータを送り、それに応じた分析などの処理をAWS Lambdaで実行するアプリケーションにも応用できます。

ユーザーからデータを受け取ったらAmazon Kinesisのデータストリームに送信

AWS Lambdaとの連携

入力された空白を削除したり、全角に変換したりするなど、ユーザーが入力したデータをその後の処理で扱いやすいように成形するプログラムにも応用できるでしょう。ユーザーのデータ送信を、データの内容を成形・修正するような一定の処理をAWS Lambdaに送り、変更後のデータを保存するといった利用方法もできるでしょう。

ユーザーからデータを受け取ったらAmazon Kinesisのデータストリームに送信

Amazon Cognitoの料金

Amazon CognitoではID管理やデータの同期に応じて課金されます。ほかのAWSサービス同様に初期費用は必要なく、利用したぶんだけ支払います。詳しくはAWSの公式サイトをご参照ください。

Amazon Cognito の料金(AWS公式ページ)
https://aws.amazon.com/jp/cognito/pricing/別ウィンドウで開きます

まとめ

最後に、Amazon Cognitoを入り口としたサービスの全体像をイメージしてみましょう。利用できる端末やOSはなるべく多く複数のプラットフォームに対応し、かつGoogleやFacebookログインも含めたユーザー認証・管理にも対応、ユーザーの権限はIAMロールによって管理され、ユーザーの利用に応じて変化するデータはほかのAWSサービスやアプリケーションと連携して処理をするアプリを構築できることがわかります。

複数のデバイスやプラットフォームに対応することで、利用者の体験を向上できる

移行準備段階で知っておくべきAmazon Web Servicesの
サービスを学び、具体的にクラウド検討を考える!

RECOMMEND
その他のコラム

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る