

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザープールの大文字と小文字の区別
<a name="user-pool-case-sensitivity"></a>

で作成した Amazon Cognito ユーザープール AWS マネジメントコンソール では、デフォルトで大文字と小文字が区別されません。ユーザープールが大文字と小文字を区別しない場合、*user@example.com* と *User@example.com* は同じユーザーを参照します。ユーザープール内のユーザー名が大文字と小文字が区別しない場合、`preferred_username` と `email` 属性でも大文字と小文字が区別されません。

大文字と小文字の区別なしは、属性の入力だけでなく出力にも適用されます。大文字と小文字を区別しないユーザープールにおいて、大文字と小文字が混在する属性値は、ユーザープールのテキスト出力で小文字に変換されます。ユーザープールのテキスト出力の例としては、[userInfo](userinfo-endpoint.md) レスポンス、ユーザークエリレスポンス ([GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) の出力など)、[Lambda トリガー](cognito-user-pools-working-with-lambda-triggers.md)への入力イベントがあります。

ユーザープールの大文字と小文字の区別の設定を考慮するには、代替のユーザー属性に基づいてアプリコードでユーザーを識別します。ユーザー名、優先ユーザー名、または E メールアドレス属性の大文字と小文字はユーザープロファイルによって異なる場合があるため、代わりに `sub` 属性を参照してください。また、ユーザープールにイミュータブルカスタム属性を作成し、各新規ユーザープロファイルの属性に独自の一意の識別子値を割り当てることもできます。最初にユーザーを作成するときに、作成したイミュータブルカスタム属性に値を書き込むことができます。

**注記**  
ユーザープールの大文字と小文字を区別する設定に関係なく、Amazon Cognito では、SAML または OIDC ID プロバイダー (IdP) のフェデレーティッドユーザーが、大文字と小文字を区別する一意の `NameId` または `sub` クレームを渡す必要があります。一意の識別子の大文字と小文字の区別および SAML IdP の詳細については、「[SP が開始した SAML サインインを実装する](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication)」を参照してください。

大文字と小文字を区別するユーザープールの作成  
 AWS Command Line Interface (AWS CLI) および [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) などの API オペレーションを使用してリソースを作成する場合は、ブール`CaseSensitive`パラメータを に設定する必要があります`false`。この設定では、大文字と小文字を区別しないユーザープールが作成されます。値を指定しないと、`CaseSensitive` はデフォルトで `true` に従います。Amazon Cognito コンソールで作成するユーザープールでは、大文字と小文字は区別されません。大文字と小文字を区別するユーザープールを生成するには、`CreateUserPool` オペレーションを使用する必要があります。2020 年 2 月 12 日以前のユーザープールでは、プラットフォームに関係なく、大文字と小文字が区別されていました。  
 AWS マネジメントコンソール の **[サインイン]** メニューおよび [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration) の `UsernameConfiguration` プロパティで、アカウント内の各ユーザープールの大文字と小文字を区別する設定を確認できます。

新しいユーザープールに移行する  
ユーザープロファイル間で競合が発生する可能性があるため、Amazon Cognito ユーザープールで大文字と小文字を区別するから大文字と小文字を区別しないに変更することはできません。代わりに、ユーザーを新しいユーザープールに移行します。ケース関連の競合を解決するには、移行コードをビルドする必要があります。このコードは、競合を検出したときに一意の新しいユーザーを返すか、サインイン試行を拒否する必要があります。大文字と小文字を区別しない新しいユーザープールで、[ユーザー移行の Lambda トリガー](user-pool-lambda-migrate-user.md) を割り当てます。 AWS Lambda 関数は、新しい大文字と小文字を区別しないユーザープールにユーザーを作成できます。ユーザーが大文字小文字を区別しないユーザープールでサインインに失敗した場合、Lambda 関数は大文字小文字を区別するユーザープールからユーザーを見つけて、複製します。また、[ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) イベントで、ユーザーの移行 Lambda トリガーを有効化することもできます。Amazon Cognito は、サインインやパスワード回復アクションからユーザー情報とイベントメタデータを Lambda 関数に渡します。関数が大文字と小文字を区別しないユーザープールに新しいユーザーを作成する際、イベントデータを使用してユーザー名とメールアドレス間で発生する競合を管理することができます。ユーザー名と E メールアドレスが、大文字と小文字を区別するユーザープールでは一意でも、大文字と小文字を区別しないユーザープールでは同一となる場合に競合が発生します。  
Amazon Cognito ユーザープール間でユーザーの Lambda 移行トリガーを使用する方法の詳細については、 AWS ブログの[「ユーザーの Amazon Cognito ユーザープールへの移行](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/)」を参照してください。