Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated Apr 30, 2024

Maintenance ModeYou are viewing Amplify Gen 1 documentation. Amplify Gen 1 has entered maintenance mode and will reach end of life on May 1, 2027. New project should use Amplify Gen 2. For existing Gen 1 projects, a migration guide and tooling are available to help you upgrade. Switch to the latest Gen 2 docs →

パスワード変更とリカバリーの設定

Amplify Authは、ユーザーがパスワードを変更したり、忘れたパスワードを復旧したりするための安全な方法を提供します。これにより、ユーザーの手間を安全に軽減し、アプリケーションへのアクセス体験を向上させます。

始める前に、以下が必要です:

  • Authカテゴリーが設定されたAmplifyプロジェクト
  • インストールして設定されたAmplifyライブラリ

ユーザーが忘れたパスワードを置き換えられるようにする

ユーザーは自分のアカウントへのアクセスを取り戻し、忘れたパスワードを置き換えたいと考えるかもしれません。ユーザーはセルフサービスでアカウント所有権を検証した後にパスワードをリセットするか、管理者にアカウントのパスワードをリセットするよう要求することができます。

セルフサービスを通じて新しいパスワードに変更する

forgotPasswordメソッドを使用することで、セルフサービスを有効にすることができます。これはユーザーのメールアドレスまたは電話番号に確認コードを送信します(Cognito ユーザープールで検証されている属性により異なります)。その後、forgotPasswordSubmitメソッドを使用して、その確認コードと新しいパスワードを入力することができます。これにより、ユーザーはパスワードをリセットし、新しいパスワードでサインインすることができます。

import { Auth } from 'aws-amplify';
// Send confirmation code to user's email or phone number
async function forgotPassword(username: string) {
try {
const data = await Auth.forgotPassword(username);
console.log(data);
} catch (err) {
console.log(err);
}
}
// Collect confirmation code and new password
async function forgotPasswordSubmit(
username: string,
code: string,
newPassword: string
) {
try {
const data = await Auth.forgotPasswordSubmit(username, code, newPassword);
console.log(data);
} catch (err) {
console.log(err);
}
}
import { Auth } from 'aws-amplify';
// Send confirmation code to user's email
async function forgotPassword(username) {
try {
const data = await Auth.forgotPassword(username);
console.log(data);
} catch (err) {
console.log(err);
}
}
// Collect confirmation code and new password
async function forgotPasswordSubmit(username, code, newPassword) {
try {
const data = await Auth.forgotPasswordSubmit(username, code, newPassword);
console.log(data);
} catch (err) {
console.log(err);
}
}

管理者リセット後に新しいパスワードに変更する

ユーザーのアカウントパスワードを管理者がリセットする必要がある場合、確認コードはリセットがトリガーされるとすぐにユーザーのメールアドレスまたは電話番号に送信されます(Cognito ユーザープールで検証されている属性により異なります)。その後、forgotPasswordSubmitメソッドを使用して、その確認コードと新しいパスワードを入力することができます。これにより、ユーザーはパスワードをリセットし、新しいパスワードでサインインすることができます。

注: 管理者は、Cognito Userpoolコンソールにアクセスし、ユーザーを選択し、「アクション」ドロップダウンの下で「パスワードをリセット」を選択することでユーザーのパスワードをリセットできます。これはCognito API Action AdminResetUserPasswordを使用してプログラムで実行することもできます。管理者としてユーザーのパスワードをリセットするについて詳しく学びます。

import { Auth } from 'aws-amplify';
async function forgotPasswordSubmit(
username: string,
code: string,
newPassword: string
) {
try {
const data = await Auth.forgotPasswordSubmit(username, code, newPassword);
console.log(data);
} catch (err) {
console.log(err);
}
}
import { Auth } from 'aws-amplify';
async function forgotPasswordSubmit(username, code, newPassword) {
try {
const data = await Auth.forgotPasswordSubmit(username, code, newPassword);
console.log(data);
} catch (err) {
console.log(err);
}
}

ユーザーはこれでアカウントを復旧し、新しいパスワードにリセットできます。

ユーザーがパスワードを変更できるようにする

他の場合には、ユーザーが時間をかけてパスワードを変更できるようにしたいかもしれません。Amplify Librariesを使用してこれを設定できます。

アカウントにサインイン中にパスワードを変更する

changePasswordメソッドを使用することで、ユーザーがパスワードを変更できるようにすることができます。これはユーザーに現在のパスワードoldPasswordと新しいパスワードnewPasswordを入力するよう促します。成功した場合、パスワードが更新されます。

import { Auth } from 'aws-amplify';
async function changePassword(oldPassword: string, newPassword: string) {
try {
const user = await Auth.currentAuthenticatedUser();
const data = await Auth.changePassword(user, oldPassword, newPassword);
console.log(data);
} catch (err) {
console.log(err);
}
}
import { Auth } from 'aws-amplify';
async function changePassword(oldPassword, newPassword) {
try {
const user = await Auth.currentAuthenticatedUser();
const data = await Auth.changePassword(user, oldPassword, newPassword);
console.log(data);
} catch (err) {
console.log(err);
}
}

これで、ユーザーはパスワードを変更できるようになります。

トラブルシューティング
検証エラーのトラブルシューティング

ユーザーが設定した要件を満たさない無効なパスワードを入力した場合、フォーム検証エラーが発生する可能性があります。たとえば、最小文字数が8文字である場合、ユーザーが8文字未満を入力するとエラーメッセージを表示する必要があります。

また、APIコールをtryブロックとcatchブロックでラップして、エラーをキャッチする必要があります。その後、ユーザーフレンドリーなエラーメッセージをUIに表示して、ユーザーが何が起こったかわかるようにすることができます。これにより、ユーザー体験でサイレント失敗がないようにすることができます。

おわりに

おめでとうございます。ユーザーパスワードの変更とリカバリーの設定ガイドを完了しました。このガイドでは、ユーザーがパスワードを変更できるようにする方法と、登録されたメールアドレスまたは電話番号を使用してアカウントを復旧し、パスワードを置き換えるのを支援する方法を学びました。

次のステップ

パスワード管理を有効にしたので、さらに機能を追加することも検討できます。以下について詳しく学ぶことをお勧めします: