翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Cognito と AWS Amplify UI を使用して、React アプリケーションの既存ユーザーを認証する
Amazon Web Services、Daniel Kozhemyako
概要
このパターンでは、 AWS Amplify UI ライブラリと Amazon Cognito ユーザープールを使用して、既存のフロントエンドの React アプリケーションに認証機能を追加する方法を紹介します。
このパターンは、Amazon Cognito を使用して、アプリケーションの認証、認可、ユーザー管理機能を提供します。また、 の機能をユーザーインターフェイス (UI) 開発に拡張するオープンソースライブラリである Amplify
このパターンを実装すると、ユーザーは次の認証情報のいずれかを使用してサインインできます。
ユーザー名とパスワード
Apple、Facebook、Google、Amazon などのソーシャル ID プロバイダー
SAML 2.0 互換または OpenID Connect (OIDC) 互換のエンタープライズ ID プロバイダー
注記
カスタムの認証 UI コンポーネントを作成するには、Authenticator UI コンポーネントをヘッドレスモードで実行します。
前提条件と制限
前提条件
アクティブな AWS アカウント
React 18.2.0 以降のウェブアプリケーション
Node.js および npm 6.14.4 以降がインストール済み
であること
制限事項
このパターンは React Web アプリケーションのみに適用されます。
このパターンは、事前構築済みの Amplify UIコンポーネントを使用します。このソリューションには、カスタム UI コンポーネントの実装に必要な手順は含まれません。
製品バージョン
Amplify UI 6.1.3 以降 (Gen 1)
Amplify 6.0.16 以降 (Gen 1)
アーキテクチャ
ターゲットアーキテクチャ
以下の図は、Amazon Cognito を使用して React ウェブアプリケーションのユーザーを認証するアーキテクチャを示しています。

ツール
AWS のサービス
Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。
その他のツール
Amplify UI
は、クラウドに接続できるカスタマイズ可能なコンポーネントを提供するオープンソースの UI ライブラリです。 Node.js
は、スケーラブルなネットワークアプリケーションを構築するために設計された、イベント駆動型の JavaScript ランタイム環境です。 npm
は Node.js 環境で動作するソフトウェアレジストリで、パッケージの共有や借用、プライベートパッケージのデプロイ管理に使用されます。
ベストプラクティス
新しいアプリケーションを構築する場合は、Amplify Gen 2 を使用することを推奨します。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
ユーザープールの作成 | Amazon Cognito ユーザープールを作成します。ユーザープールのサインインオプションとセキュリティ要件を、お使いのユースケースに合うように設定します。 | アプリ開発者 |
アプリクライアントを追加します。 | ユーザープールアプリクライアントを設定します。このクライアントは、アプリケーションが Amazon Cognito ユーザープールとインタラクトするために必要です。 | アプリ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
依存関係をインストールします。 |
| アプリ開発者 |
ユーザープールを設定します。 | 次の例を参考に、
| アプリ開発者 |
Amplify サービスをインポートして設定します。 |
| アプリ開発者 |
Authenticator UI コンポーネントを追加します。 |
注記サンプルのコードスニペットは、
次のコンポーネント例を参照してください。
注記
| アプリ開発者 |
(オプション) セッション情報を取得します。 | ユーザーが認証されると、AAmplify クライアントからセッションに関するデータを取得できます。たとえば、ユーザーのセッションから JSON Web トークン (JWT) を取得して、そのユーザーのセッションからバックエンド API への要求を認証できます。 JWT を含む要求ヘッダーの次の例を参照してください。
| アプリデベロッパー |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
新規ユーザーはアプリケーションにサインアップできません。 | 次のとおり、ユーザーがユーザープールにサインアップできるよう Amazon Cognito ユーザープールが設定されていることを確認します。
|
v5 から v6 にアップグレードしたら認証コンポーネント動作しなくなりました。 |
|
関連リソース
Amazon Cognito の開始方法
(AWS ウェブサイト) 新しい React アプリを作成する
(React ドキュメント) Amazon Cognito とは (Amazon Cognito ドキュメント)
Amplify UI library
(Amplify ドキュメント)
追加情報
App.js ファイルには次のコードが含まれています。
import './App.css'; import { Amplify } from 'aws-amplify'; import awsExports from './aws-exports'; import { fetchAuthSession } from 'aws-amplify/auth'; import { Authenticator } from '@aws-amplify/ui-react'; import '@aws-amplify/ui-react/styles.css'; Amplify.configure({ ...awsExports }); let token = (await fetchAuthSession()).tokens?.idToken?.toString(); function App() { return ( <Authenticator> {({ signOut, user }) => ( <div> <p>Welcome {user.username}</p> <p>Your token is: {token}</p> <button onClick={signOut}>Sign out</button> </div> )} </Authenticator> ); } export default App;