アプリにユーザー認証機能を簡単に追加 !「Amazon Cognito」をグラレコで解説

2021-03-02
AWS グラレコ解説

Author : 安田 茂樹

※ 本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。awsgeek.com は Amazon Web Services, Inc. プリンシパル・テクニカル・エバンジェリスト、ジェリー・ハーグローブが運営しているサイトです。

これまでのグラレコ解説はこちら »

今回は、AWS のマネージド型サービスである「Amazon Cognito (コグニート)」についてご紹介します。

Web アプリやモバイルアプリを開発する際、「なるべく労力をかけずにユーザー認証機能を追加したい」といった場合もあるのではないでしょうか ?

Amazon Cognito を利用することで、Web アプリやモバイルアプリに「素早く」かつ「簡単に」ユーザー認証機能、および AWS リソースへのアクセスコントロール機能を追加することができます。

Amazon Cognito の動作する仕組みについて、図を用いて解説していきます。

注記 :「サインイン」と「ログイン」は同じ意味ですが、各社で呼び方が異なります。AWSでは「サインイン」という呼び方を採用しているため、本記事では「サインイン」と表記します。


Amazon Cognito が提供するサービスには、大きく分けて 2 つあります。

  • 1 つは、「ユーザープール」です。ユーザープールでは、Web アプリやモバイルアプリのユーザーに対し、サインイン画面を含む認証機能を提供し、認証完了後に「トークン」を発行します。
  • 2 つ目は、「ID プール」です。ID プールでは、「ユーザープール」で認証を完了したユーザーが特定の AWS サービス (Amazon S3 など) へアクセスできるよう、「トークン」と引き換えに一時的な AWS 認証情報を発行します。

Amazon Cognito を使った全体的なユーザー認証の流れは、図のようになります。
図のステップ①〜③について、順を追ってご説明します。


ステップ①

まず、Web アプリやモバイルアプリから、「ユーザープール」に対してユーザー認証を行います。ユーザー側にはサインイン画面が表示され、ユーザーが ID・パスワードを入力することで、認証が行われます。認証が成功すると、「トークン」が発行されます。

なお、Amazon Cognito では「ホストされた UI (Hosted UI)」という標準的なサインイン画面の UI を提供しており、この UI を利用することで、開発者はサインイン画面を一から作成する事なく素早く実装できます。

注意点として、2021 年 2 月現在、「ホストされた UI (Hosted UI)」のサインイン画面は英語版のみ提供されており、日本語版は提供されておりません。

「ホストされた UI (Hosted UI)」を使わず、独自にサインイン画面を用意する場合は日本語で用意することも可能ですし、AWS Amplify の組み込みサインイン画面を利用する場合も日本語化が可能です。

また、AWS Amplify を使うことで、iOS / Android / JavaScript アプリに認証機能を素早く追加することもできます。

なお、Amazon Cognito のユーザー認証方法には、以下の 2 通りの方法があります。

  • Amazon Cognito 自体にユーザー ID、パスワード等の認証情報をあらかじめ登録し、Amazon Cognito 自体で認証する方法
  • Amazon Cognito 自体には認証情報を登録せず、外部の ID プロバイダーを使って認証する方法

外部の ID プロバイダーを使って認証する場合、ユーザーは Google、Facebook、Amazon、Apple といったソーシャル ID 経由でサインイン、または SAML / OpenID Connect 経由でサインインできます。

外部の ID プロバイダーを使って認証を行う主なメリットとしては、ユーザーが Amazon Cognito で新規ユーザー登録 (サインアップ) 作業を行う必要がなくなり、手間が省ける点が挙げられます。例えば、OpenID Connect プロトコルをサポートしている Yahoo! JAPAN や LINE といった外部 ID プロバイダーと連携して認証を行うことで、それらのサービスを既に利用中のユーザーが簡単にサインインできるようになります。

なお、外部 ID プロバイダーを使ってサインインしたユーザーの情報については、初回サインイン時に情報が自動的に Amazon Cognito に登録されます。

また、Amazon Cognito は多要素認証 (MFA) にも対応しています。ユーザープール作成時に、Amazon Cognito コンソールから、図の①の通常の ID・パスワードによるサインインに加え、図の②にあるような、SMS テキストをユーザーのスマートフォンに送信して行う認証、または時間ベースのワンタイムパスワード (TOTP) を使った認証を追加することができます。

注意点として、ユーザープール作成時にのみ、これらの MFA を「必須」に設定できます。ユーザープール作成時に MFAを「オフ」または「省略可能」に設定した場合、後から「必須」に変更することはできません。

図の③の生体認証に関しては、Amazon Cognito の標準機能では提供されていませんが、カスタム認証フローで AWS Lambda を使って実装することができます。実装イメージは こちらのブログ記事 をご参照ください。


ステップ②

ステップ①でユーザー認証が成功すると、「トークン」が発行されます。発行された「トークン」を ID プールへ渡すことで、トークンと引き換えに特定の AWS サービスにアクセスするために必要な、一時的な「AWS 認証情報」が発行されます。


ステップ③

ステップ②で ID プールから発行された一時的な「AWS 認証情報」を使い、特定の AWS サービスにサインインすることで、アクセスできるようになります。


以上が①〜③までの全体的なユーザー認証の流れとなります。
なお、図に記載されているように、AWS AppSync を使う事で、ユーザーが Web アプリ・モバイルアプリのどちらからサインインしても、ユーザープロファイルデータを常に同期させることができます。

Amazon Cognito の利用料金については、月間アクティブユーザー (MAU) 数に基づいて課金されるため、当該月において一度も利用していないユーザーに対して料金が課金されることは無く、合理的な料金体系となっています。なお、多要素認証 (MFA) や電話番号の検証のために SMS メッセージを送信する場合、別料金が発生します。料金の詳細に関しましては こちら をご覧ください。


最後に、全体の図を見てみましょう。

今回は、Web アプリやモバイルアプリにユーザー認証機能を追加できる「Amazon Cognito」サービスの概要についてご紹介しました。

サービスの詳細に関しましては、こちら をご覧ください。

この連載記事のその他の記事はこちら

選択
  • 選択
  • 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
  • サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
  • 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
  • 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
  • AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
  • コンテナを使ってモノリスを分割する方法をグラレコで解説 »
  • クラウドへ移行する理由とそのステップをグラレコで解説 »
  • Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
  • サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
  • サーバーレスで SaaS を構築する方法をグラレコで解説 »
  • 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
  • クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
  • 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
  • アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
  • わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
  • 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
  • Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
  • 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
  • ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
  • 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
  • カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
  • GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
  • IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
  • 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
  • サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
  • データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
  • 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
  • リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
  • アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
  • データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
  • アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

安田 茂樹
アマゾン ウェブ サービス ジャパン合同会社
テクニカルコンテンツマネージャー

2014 年にアマゾンジャパン合同会社に入社後、デバイス試験部門にて発売前の数多くの Amazon デバイスの試験に携わる。2019 年より現職。
趣味は新しいガジェットを試すこと、旅行、食べ歩き。

AWS のベストプラクティスを毎月無料でお試しいただけます

さらに最新記事・デベロッパー向けイベントを検索

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する