翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Cognito と Amplify UI を使用して既存の React AWS アプリケーションユーザーを認証する
作成者: Daniel Kozhemyako (AWS)
環境:本稼働 | テクノロジー: ウェブおよびモバイルアプリ、セキュリティ、アイデンティティ、コンプライアンス、ビジネスの生産性、分析 | AWS サービス: Amazon CognitoAWSAmplify、Amazon Connect AWS マネジメントコンソール |
[概要]
このパターンは、 AWS Amplify UI ライブラリと Amazon Cognito ユーザープールを使用して、既存のフロントエンド React アプリケーションに認証機能を追加する方法を示しています。
このパターンでは、Amazon Cognito を使用してアプリケーションの認証、承認、およびユーザー管理を行います。また、 の機能をユーザーインターフェイス (UI) 開発に拡張するオープンソースライブラリである Amplify
このパターンを実装すると、ユーザーは次の認証情報のいずれかを使用してサインインできます。
ユーザー名とパスワード
Apple、Facebook、Google、Amazon などのソーシャル ID プロバイダー
2.0 SAML 互換または 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 以降 (世代 1)
アーキテクチャ
ターゲット アーキテクチャ
次の図は、Amazon Cognito を使用して React ウェブアプリケーションのユーザーを認証するアーキテクチャを示しています。
ツール
AWS のサービス
Amazon Cognito は、Web とモバイルアプリの認証、認可、ユーザー管理機能を提供します。
その他のツール
Amplify UI
は、クラウドに接続できるカスタマイズ可能なコンポーネントを提供するオープンソースの UI ライブラリです。 Node.js
は、スケーラブルなネットワークアプリケーションを構築するために設計されたイベント駆動型の JavaScript ランタイム環境です。 「npm
」は Node.js 環境で動作するソフトウェアレジストリで、パッケージの共有や借用、プライベートパッケージのデプロイ管理に使用されます。
ベストプラクティス
新しいアプリケーションを構築する場合は、Amplify Gen 2 を使用することをお勧めします。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
ユーザープールを作成します。 | Amazon Cognito ユーザープールを作成します。ユーザープールのサインインオプションとセキュリティ要件をユースケースに合わせて設定します。 | アプリ開発者 |
アプリクライアントを追加します。 | ユーザープールアプリクライアントを設定します。このクライアントは、アプリケーションが Amazon Cognito ユーザープールとやり取りするために必要です。 | アプリ開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
依存関係をインストールします。 |
| アプリ開発者 |
ユーザープールを設定します。 | 次の例に基づいて、
| アプリ開発者 |
Amplify サービスをインポートして設定します。 |
| アプリ開発者 |
Authenticator UI コンポーネントを追加します。 |
注: サンプルコードスニペットは、 UI コンポーネントは、次の
次のコンポーネント例を参照してください。
注: | アプリ開発者 |
(オプション) セッション情報を取得します。 | ユーザーが認証されると、AAmplify クライアントからセッションに関するデータを取得できます。例えば、ユーザーのセッションからJSONウェブトークン (JWT) を取得して、セッションからバックエンド へのリクエストを認証できますAPI。 を含むリクエストヘッダーの次の例を参照してくださいJWT。
| アプリ開発者 |
トラブルシューティング
問題 | ソリューション |
---|---|
新規ユーザーはアプリケーションにサインアップできません。 | 次のように、Amazon Cognito ユーザープールが、ユーザーがユーザープールにサインアップできるように設定されていることを確認します。
|
v5 から v6 にアップグレードすると、認証コンポーネントが機能しなくなりました。 |
|
関連リソース
Amazon Cognito の開始方法
(AWS ウェブサイト) 新しい React アプリを作成する
(React ドキュメント) Amazon Cognito とは (Amazon Cognito ドキュメント)
Amplify UI ライブラリ
(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;