Amazon Cognito を使ったWebシステムの認証について解説します

こんにちは。「クロジカサーバー管理」プリセールスの高瀬です。

今回はAmazon Cognito によるWebシステムの認証について解説します。 

Amazon Cognito は アプリケーションにおけるユーザー管理機能を提供するAWSのサービスで、ユーザープールとIDプール(フェデレーティッド ID)の大きく二つの機能があります。

Webサーバー上のプログラムなど独自実装のシステムに対してユーザー認証を行う場合はユーザープール、ALBやS3などのAWSのサービスへのアクセスに対してユーザー認証を行う場合はIDプールを使います。

今回はPHPなどで実装するWebシステムでAmazon Cognitoを使うことを想定したユーザープール機能について解説します。

どんな機能があるか

Webシステムやモバイルアプリでよく使われるアカウント情報の追加、削除、パスワード認証といった基本的なアカウント管理機能が一通りAmazon CognitoのAPIで実現できるようになっています。

AWS Management Console 上でユーザーの一覧確認や追加削除も行うことができますので、ユーザーテーブルのデータベースを用意したり管理機能を作らなくてもユーザー認証機能を使うことができます。

また、パスワードの文字数や使用文字といったポリシーの設定やOAuth、2要素認証のようによく使われるセキュリティ対策や、SAML または Open ID Connect 経由でFacebook、Google、Amazon、Apple などの外部のソーシャル ID プロバイダーを通じたログイン機能も実装できるようになっています。

費用

AWS Cognitoの利用費用はアクティブユーザー数ベースになっており、2022年7月時点では0.0055USDで100,000ユーザーまで利用可能です。

SAML または Open ID Connect 経由でのログインを使ったり、2要所認証のためにSMSを送信する場合は別途費用が発生しますので、詳しくは料金ページをご確認ください。

https://aws.amazon.com/jp/cognito/pricing/

利用の流れ

まずはAWS Management Consoleからユーザープールを作成します。作成する際に各種の設定を画面で行うことができます。

・ログイン時にユーザー名をつかうのか、メールアドレスを使うのか

・パスワードポリシー

・多要素認証の利用有無

・メールなどでのアカウント復旧機能の有無

・ユーザーによるサインアップ機能の利用有無

・登録時のメールやSMSによる本人確認の有無

・認証情報以外にユーザーテーブルに保存する属性(氏名や生年月日など)

など

PHPなどのプログラムからAmazon CognitoにアクセスするためにはIAMユーザーを作成してアクセスキー、シークレットキーを生成します。

プログラム側でAmazon CognitoのAPIを呼び出すように実装します。AWSのマニュアルサイトにサンプルのコードがあります。

https://docs.aws.amazon.com/ja_jp/code-samples/latest/catalog/code-catalog-php-example_code-cognito.html

さいごに

CMSやフレームワークをベースにWebサイトを制作する場合は、基本的な認証機能はすでに実装されているため、Amazon Cognitoでゼロから認証機能を実装する、というケースは少ないかもしれません。

一方で2要素認証やSAMLといった機能を使うためにAmazon Cognitoと既存のユーザー管理機能を連携させる、といった使い方が想定されます。

WordPressの認証プラグインのminiOrangeでもAmazon Cognitoを利用した認証機能をサポートしています。

また、ユーザー情報を保存するデータベースを自社で構築したり、認証機能を自社で開発するよりもAWSの機能を使うことでセキュリティ対策のコストを下げるケースも想定できます。

一方で機能が多く、かなりの数の設定項目があるため、必要な機能を慎重に検討、選択する必要があるサービスだと感じました。

コーポレートサイトクラウドでセキュアに

コーポレートサイトをクラウドでセキュアに クロジカガイドブック

無料ではじめるサーバー管理
クロジカガイドブック

「クロジカサーバー管理」の詳しい内容がわかる資料をご用意しました。
  • コーポレートサイト構築・運用の課題を解決
  • クロジカサーバー管理の主な機能
  • 導入事例
  • 導入までの流れ

詳しい資料をご覧いただけます

クロジカサーバー管理のサービス内容を記載した資料をダウンロードできます。
クロジカの機能や事例が分かる
資料ダウンロード