2020/12/28

AWSの「Amazon Cognito」とは?利用ケースや活用方法を紹介!

 
  

AWSの「Amazon Cognito」とは?

「Amazon Cognito(アマゾン コグニート)」とは、モバイルアプリやWebアプリに対してAWS社から提供されている「認証処理サービス」の一つです。 こちらの記事では、「Amazon Cognito」の概要、主な機能や利用ケースについて解説していきます。

「Amazon Cognito」の概要について

「Amazon Cognito」の「認証処理サービス」は、主に4つの機能で構成されています(※詳細は後述します)。 これらの機能は、APIとして利用可能です。具体的には、「Cognito Identity Provider API」や「Cognito Auth API」等が用意されています。 Webアプリ等の認証機能は、Cognito用の「SDK(ソフトウェア開発キット)」を用いて開発していきます。

「Amazon Cognito」の主な機能

「Amazon Cognito」は、「ユーザープール」、「IDプール」、「Cognito Sync」、「AWS AppSync」の4つの機能で主に構成されています。 それでは、各機能の詳細を解説していきます。

「ユーザープール」とは

「ユーザープール」とは、IDやパスワードの認証情報をアプリ内部の「ユーザーディレクトリ」という領域に保存し、その情報を利用してアプリの「認証」を行う機能です。 この認証処理の後に「Cognitoトークン(JSON形式)」が発行され、以降はこのトークンを使用して認証処理が行われます。

「ユーザープール」の認証処理について

この「ユーザープール」での「認証」とは、いわゆるログインやサインイン等のことで、アクセスしてきたユーザーが誰であるか(アイデンティティ)を確認する処理です。 またこの認証処理は、Facebook、Amazon等の「外部IDプロバイダー(「IDP」と呼ばれます)」とも連携が可能となっており、外部からログイン情報を連携してもらうことで利用アプリの認証連携を行うこともできます。

「IDプール」とは

「IDプール」とは、「Amazon Cognito」のユーザープールに加えて、外部IDプロバイダーと連携しながらAWSの各サービスに対する「認可」を行う機能です。 このIDプールは、ユーザー識別情報とそのユーザーが利用許可されているAWSのサービスの情報とを保持しています。そのためアプリ等から渡された「Cognitoトークン」を参照して、ユーザーが申請しているAWSサービスの利用可否を判定しています。

「IDプール」の「認可」について

「IDプール」における「認可」とは、アクセスしてきたユーザーが誰であるかを確認(認証)した後の処理です。また、そのユーザーが利用しようとしているサービスが「利用許可されているか」を確認する処理のことです。

「ユーザープール」と「IDプール」の違いとは

「ユーザープール」は「認証(アクセスしてきたユーザーが誰か)」を処理しますが、「IDプール」は「認可(そのユーザーが利用できるサービスであるか)」を処理するという違いがあります。 もう一点の違いは、「ユーザープール」の認証処理の対象は「アプリ」ですが、「IDプール」は「AWSのサービス」が対象となっている点です。

「ユーザープール」と「IDプール」の利用方法のポイント

「ユーザープール」と「IDプール」の利用方法のポイントは、両方ともセットで実装することです。 その理由は、「認証(誰が)」と「認可(何のサービスを)」は組み合わせて利用することではじめて認証サービスとして機能するからです。 またモバイルアプリやWebアプリでは、「Facebook連携」等で外部IDプロバイダーと連携する認証方式とすることも一般的です。

「Cognito Sync」とは

「Cognito Sync」とは、モバイルアプリとクラウド間のデータを同期する機能です。 現在も提供中ですが、同様の機能を有するさらに高機能な「AWS AppSync」の利用がAWS社から公式に推奨されています。 そのことからCognitoのデータ同期サービスを新規で利用する場合は、「AWS AppSync」を選択することが望ましいと考えられます。

「AWS AppSync」とは

「AWS AppSync」とは、モバイルアプリとクラウド間のデータ同期機能です。 「Cognito Sync」と同様の機能ですが、「AWS AppSync」の方がより高機能版となっており、上述した通り現在ではこちらの利用が推奨されています。 主な特徴としては、「GraphQL」という柔軟な問い合わせが可能な「クエリ言語」が利用できる点です。

「GraphQL」とは

「GraphQL」とは、Facebookが開発したWeb APIのための規格です。 従来のREST方式のAPIと比較すると、必要なデータだけに絞って取得するといった柔軟な操作が可能となっているのが特徴です。 またSNS等で利用されているデータベースの「データ構造」に類似しているため、データ変換処理が省略可能なため負荷軽減できるといったメリットもあります。

AWS上で選択可能なユーザー認証方法について

ここからは、AWS上で選択可能なユーザー認証サービスについて解説していきます。 アプリの特性、対象ユーザー、認証機能要件等に応じて、AWS社で提供するサービス以外にも様々な選択肢があります。

AWSで提供しているユーザー認証サービス

AWSでは数多くのユーザー認証サービスが提供されており、通常であればこちらを利用します。 例えば、本記事で紹介している「Amazon Cognito」や「Amazon Single Sign-On(SSO)」といったシングル・サインオンのサービスがあります。

AWSパートナー企業のクラウド認証サービス

AWS社とパートナー契約を締結している企業が提供しているクラウド認証サービスを利用することも可能です。 例えば、「Auth0」や「onelogin」等のシングル・サインオンのサービスがあり、AWSのサービスだけでは不足する機能等がある場合は、これらも選択肢となります。

自社開発の認証サービス

AWS、もしくはAWSパートナー企業で提供している認証サービスでは、自社の特殊なセキュリティ要件を満たせない場合があります。 そういったケースでは、自社内で通常通りのシステム開発計画を立て、独自の認証サービスを開発します。

「Amazon Cognito」の利用ケースと実装方法

「Amazon Cognito」の一般的な利用ケースと実装方法をご紹介します。 「Amazon Cognito」は様々なアーキテクチャでの利用が可能ですが、ここでの想定例としては、モバイルアプリがCognitoにアクセスして認証と認可を行い、AWSのサービスを利用するまでを順を追って説明します。

「Amazon Cognito」のユーザープールへのサインイン

モバイルアプリから、「Amazon Cognito」のユーザープールに対してサインインします。 このサインインで認証に成功すると、モバイルアプリはユーザープールから「Cognitoトークン」を取得できます。

「Amazon Cognito」の「ID プール」へのアクセス

モバイルアプリは、取得した「Cognitoトークン」を利用して、「Amazon Cognito」の「ID プール」にアクセスします。 ここで「Cognitoトークン」と「IDトークン」を交換することで、「認可」に成功します。 この「IDトークン」を利用して、モバイルアプリはAWSの認可されたサービスにアクセス可能となります。

「Amazon Cognito」の実装方法

Cognitoを自社アプリで利用する際には、AWS社から提供されている「SDK(ソフトウェア開発キット)」を用いて、必要なAPI用モジュールをアプリに実装する必要があります。 CognitoのSDKには、主にJavaScriptの利用が想定されていますが、他にも Java、Python、PHP等の言語でも開発できます。

「Amazon Cognito」の学習方法

最後に、「Amazon Cognito」等のAWSの学習方法についてご紹介します。 具体的には、AWS社主催によるWebinar、AWSパートナー企業主催のセミナーやIT勉強会(「Connpass」等)があります。 特にお勧めなのは、「Connpass」で開催中の「AWS DevRelシリーズ AWSの基礎を学ぼう」の無料のオンライン勉強会です。 こういった様々な学習の機会を活用して、AWSのスペシャリストを目指しましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】