> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.generaltranslation.app/llms.txt
> Use this file to discover all available pages before exploring further.

# プロファイルの管理（B2C）

> B2CのIAM実装に向けて、ユーザープロファイルの管理を計画する際に考慮すべき内容について説明します。

何らかの時点で、ユーザーのプロファイルに保管されている情報の変更が必要になるかもしれません。ユーザーのプロファイル（ユーザーのアカウントとも呼ばれる）はAuth0に保管されています。それに含まれる情報を、以下の理由などで変更する必要性が生じることもあります。

* セルフサービスでの情報更新
* 組織の利用規約に関わる義務的な更新
* 規制順守に伴う変更

<Warning>
  複数のAuth0テナントにまたがるユーザープロファイルには、直接アクセスすることはできません。運用環境に複数のAuth0テナントをデプロイする場合は、注意が必要です。
</Warning>

[IDプロバイダー](/docs/ja-JP/ja-jp/connections)は、ログインの過程で提供されたデータを使ってユーザープロファイルを作成します。これは[正規化ユーザープロファイル](/docs/ja-JP/ja-jp/manage-users/user-accounts/user-profiles/normalized-user-profiles)と呼ばれます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  正規化ユーザープロファイルは、ログイン時にIDプロバイダーによって更新されるため、Auth0 Management APIを使って変更できるプロファイル情報は限られます。正規化ユーザープロファイルの情報をオーバライドする別の方法として、[Rules](https://auth0.com/docs/rules)など、Auth0の拡張機能を利用することもできます。詳細については、「[ユーザプロファイルのデータを編集する](https://auth0.com/docs/users/concepts/overview-user-profile#user-profile-data-modification)」を参照してください。
</Callout>

デフォルトでは、各ユーザーIDに対して1つのユーザープロファイルが作成されますが、以下のように、考慮するべき事柄がいくつかあります。

* ユーザーエクスペリエンスのカスタマイズに役立つように情報を保管するにはどうすれば良いのか。
* 発生源がIDプロバイダーではないユーザー情報を保管しなければならない場合にはどうすれば良いのか。
* ユーザーが自分で変更できないユーザー関連情報を保管しなければならない理由は何か。
* ユーザーが自分で変更できないユーザー関連情報を保管しなければならない場合にはどうすれば良いのか。
* ユーザーがパスワードを忘れた場合にはどうなるのか。
* ユーザーが自分のパスワードを変更したい場合、ユーザーはどうすれば良いのか。

Auth0では、ユーザーのプロファイルに対照したメタデータが保管できるため、言語やアクセシビリティの選択など、追加情報をキャプチャして、ユーザーエクスペリエンスの向上に活用することができます。メタデータは、ユーザーが変更できる情報とユーザーが変更できない情報の両方を保管できます。ユーザーが変更できない情報を使用すると、たとえば、既存の実装を変えることなく、ユーザープロファイルを既存のシステムにある記録と関連付けられるようになります。

自分のパスワードを忘れてしまったユーザーや、すでにある何らかのセルフサービスの仕組み（または、計画しているセルフサービスの仕組み）を使ってパスワードを変更できるユーザーについては、Auth0が提供している[パスワードのリセット](#password-reset)機能を活用することができます。これは、既存の実装と統合できるだけでなく、[ユニバーサルログイン](/docs/ja-JP/ja-jp/authenticate/login/auth0-universal-login)など、そのままで便利に使えるAuth0のUIウィジェットにすでに組み込まれています。

また、扱っているのが常に[検証済みのユーザーアカウント](#account-verification)であることを確認することも推奨されます。これにもAuth0は、変更することなくそのままで使える仕組みを提供しています。[規制を順守](/docs/ja-JP/ja-jp/secure/data-privacy-and-compliance)するために、プライバシーやデータの侵害からEU市民を保護する目的で詳細な要件を定めた[EU一般データ保護規則（GDPR）](https://eugdpr.org/)なども考慮しなければなりません。

Auth0は現在、一元管理型のプロファイル管理ポータルを、そのままで使える形では提供していませんが、セルフサービスのプロファイル管理については、Auth0 <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-JP/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>を使って独自に構築するか、すでに構築されたUIを利用することができます。Management APIエンドポイントについては、Auth0[コミュニティにあるガイダンス](https://community.auth0.com/t/how-to-allow-the-end-user-to-update-their-own-profile-information/6228)を参照してください。Management APIに対するすべての呼び出しには、[アクセストークン](/docs/ja-JP/ja-jp/secure/tokens/access-tokens)を使う必要があります。

<Warning>
  セルフサービスのプロファイル管理では、セキュリティ・データプライバシー上の懸念が生じる可能性があります。たとえば、ユーザーに対してメールアドレスの変更を許可したい場合に、セキュリティガイダンスに従わずにそれを行うと、ユーザーがアカウントからロックアウトされたり、個人を特定できる情報（PII）が漏洩したり、最悪の場合にはセキュリティ侵害が生じたりします。
</Warning>

別の方法としては、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-JP/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>を使って[ユーザープロファイルのあらゆる側面を管理](/docs/ja-JP/ja-jp/manage-users/user-accounts/manage-users-using-the-dashboard)することができます。Auth0 Dashboardを使ったユーザープロファイルの管理は、どちらかと言えば管理業務になるため、セルフサービスのプロファイル管理に運用環境で使用される**べきではありません** 。ただし、Dashboardが提供するインターフェイスは、ユーザーのプロファイル情報を素早く簡単に操作できるため、開発段階では非常に便利です。

<div id="metadata">
  ## メタデータ
</div>

Auth0のユーザープロファイルには、正規化ユーザープロファイルの情報以外に、メタデータも保管することができます。メタデータは、発生源がIDプロバイダーではない情報や、IDプロバイダーが提供する情報をオーバーライドするような情報を保管できるようにします。

<Info>
  ### ベストプラクティス

  メタデータを使用するには、Auth0[「ユーザーデータ保存のベストプラクティス」](/docs/ja-JP/ja-jp/best-practices/user-data-storage-best-practices#metadata)に従ってください。メタデータの保存は汎用のデータストアとして設計されておらず、可能な限り独自の外部ストレージ施設を使用するべきです。メタデータのサイズと複雑さは最小に保たれるべきで、Auth0 Management APIにはユーザーに関連するメタデータの更新および/または削除についての厳格な一連のガイダンスがあります。
</Info>

メタデータの操作には、Auth0 Management APIとAuth0 Authentication APIの両方を使うことができます。正規化ユーザープロファイルを管理する場合と同様に、メタデータの操作にManagement APIを呼び出す際には、[アクセストークン](/docs/ja-JP/ja-jp/api/management/v2/tokens)を使う必要があります。

<Warning>
  Management APIへの呼び出しには[Auth0レート制限ポリシー](/docs/ja-JP/ja-jp/troubleshoot/customer-support/operational-policies/rate-limit-policy)が適用されることを考慮してください。Auth0は、通常、APIを直接呼び出す代わりに、開発環境に適した[Auth0 SDK](/docs/ja-JP/ja-jp/libraries)を使用することを推奨しています。
</Warning>

<div id="user-metadata">
  ### ユーザーメタデータ
</div>

ユーザーメタデータ（または`user_metadata`）は、ユーザープロファイルに対照して保管できる情報であり、セルフサービスのプロファイル管理の一環としてユーザーが読み取りや更新を行える情報です。この種のメタデータには、ユーザーの敬称や使用する言語などが含まれ、Auth0から送信する[メールをカスタマイズ](/docs/ja-JP/ja-jp/customize/email/email-templates)するのに使うことができます。

<Info>
  ### ベストプラクティス

  Auth0のメールをカスタマイズするために使用する情報は、メタデータに保存し、ユーザーが変更できる場合（メールの言語を決定するために使用される情報など）は可能な限り`user_metadata`に保存しましょう。
</Info>

<div id="app-metadata">
  ### アプリメタデータ
</div>

アプリメタデータ（または`app_metadata`）は、ユーザープロファイルと一緒に保管できる情報ですが、**適切な許可がある場合のみ読み取りや更新** が行えます。ユーザーは`app_metadata`には直接アクセスできません。この種のメタデータには、ユーザーが最後に承認した有効な利用規約のセットを示すフラグや、いつ承認したかを示す日時などが含まれます。

<div id="password-reset">
  ## パスワードのリセット
</div>

自分のパスワードを忘れてしまったユーザーや、すでにある何らかのセルフサービスの仕組みを使ってパスワードを変更できるユーザーについては、Auth0が提供している[パスワードのリセット](/docs/ja-JP/ja-jp/connections/database/password-change)機能を活用できます。これは、既存の実装と統合できるだけでなく、[ユニバーサルログイン](/docs/ja-JP/ja-jp/authenticate/login/auth0-universal-login)の一部として、そのままで便利に使えるAuth0のUIウィジェットにすでに組み込まれています。

<Warning>
  パスワード変更とパスワードリセットは、Auth0[データベース接続](/docs/ja-JP/ja-jp/connections/database)タイプでのみサポートされています。
</Warning>

Auth0のユニバーサルログインは、Auth0 Authentication APIを使ったパスワードリセットのために、内蔵のUX対応を提供しています。別の方法としては、開発環境に適したAuth0 SDKが提供する[Auth0 Authentication API](/docs/ja-JP/ja-jp/connections/database/password-change#use-the-authentication-api)を使うこともできます。パスワードのリセットフローで使用されるメールのテンプレートは、そのままで便利に使えるAuth0のUIウィジェットとカスタムのユニバーサルログインのどちらを使う場合でも、完全にカスタマイズできます。

Auth0 Management APIを使用すると、データベース接続を使って定義されたユーザーIDについては、[直接パスワードを変更](/docs/ja-JP/ja-jp/connections/database/password-change#directly-set-the-new-password)することができます。Auth0 Management APIは、セルフサービスのプロファイル管理や[パスワード変更ページのカスタマイズ](/docs/ja-JP/ja-jp/get-started/architecture-scenarios/business-to-consumer/branding)の一環として使うことができます。

<div id="account-verification">
  ## アカウント検証
</div>

扱っているのが常に検証済みのユーザーアカウントであることを確認し、Auth0が提供している仕組みを活用する必要があります。規制を順守するために、プライバシーやデータの侵害からEU市民を保護する目的で詳細な要件を定めた[EU一般データ保護規則（GDPR）](https://eugdpr.org/)なども考慮しなければなりません。

Auth0は、ユーザーのメールアドレスに[確認メール](/docs/ja-JP/ja-jp/customize/email/manage-email-flow)を送信してアカウントを検証できるように、そのままで使える機能を提供しています。[データベース接続](/docs/ja-JP/ja-jp/connections/database)のIDが[セルフサインアップ](/docs/ja-JP/ja-jp/architecture-scenarios/b2c/provisioning#self-sign-up)によって作成されたものである場合、Auth0はデフォルトで自動的に確認メールを送信します。ただし、Auth0は[Management APIエンドポイント](/docs/ja-JP/ja-jp/api/v2#!/Tickets/post_email_verification)も提供して、ユーザーの登録時にソーシャルプロバイダーがメール検証を行わない場合、確認メールの送信に使えるようにしています。

<div id="blocking-users">
  ## ユーザーをブロックする
</div>

Auth0で[ユーザーのアクセスをブロック](/docs/ja-JP/ja-jp/manage-users/user-accounts/block-and-unblock-users)すると、特定の条件下でユーザーがアプリケーションにログインするのを防ぐことができます。すべてのアプリケーションに対して、管理者がユーザーのアクセスをブロックまたはブロック解除できるように、Auth0 Dashboardはデフォルトでそのまま使える仕組みを提供しています。この機能性は、[Auth0 Management API](/docs/ja-JP/ja-jp/api/management/v2#!/Users/patch_users_by_id)を使って実装することができます。また、Auth0の拡張性を利用して、[特定のアプリケーションに対してユーザーのアクセスを無効化](/docs/ja-JP/ja-jp/manage-users/user-accounts/manage-user-access-to-applications)したり、さらにきめの細かい[アクセス制御](/docs/ja-JP/ja-jp/get-started/architecture-scenarios/business-to-consumer/authorization)を提供したりもできます。

また、誤った資格情報を複数回使用したため無効になってしまったユーザーを[ブロック解除](/docs/ja-JP/ja-jp/api/management/v2#!/User_Blocks/delete_user_blocks_by_id)するのに、Auth0 Management APIを使うこともできます。

<div id="linking-user-accounts">
  ## ユーザーアカウントをリンクする
</div>

デフォルトでは、各ユーザーIDに対して1つのユーザープロファイル（ユーザーアカウント）があります。FacebookやGoogleの[ソーシャル認証](/docs/ja-JP/ja-jp/architecture-scenarios/b2c/authentication#social-authentication)、Auth0の[ユーザー名とパスワードの認証](/docs/ja-JP/ja-jp/architecture-scenarios/b2c/authentication#username-and-password-authentication)など、複数のIDプロバイダーからのログインを有効にしている場合には、それぞれに別途のユーザープロファイルがあります。Auth0の[ユーザーアカウントをリンクする](/docs/ja-JP/ja-jp/manage-users/user-accounts/user-account-linking)機能は、関連する各種のIDの総体として、1人のユーザーについて1つのプロファイルを作成できるようにします。

アカウントをリンクする処理では、2つのユーザープロファイルが結合されます。リンクを処理する際には、メインアカウントとサブアカウントが指定されなければなりません。ただし、リンク可能なアカウントの数は1組以上でも構いません。たとえば、すでに複数のアカウントが結合されているアカウントをメインアカウントとして、別のサブアカウントをそれにリンクさせることができます。つまり、1つのユーザーアカウントに複数のIDが関連付けられることになり、これには以下の利点があります。

* ユーザーが複数のIDを使ってログインできるようになり、それぞれに別途のプロファイルを作成する必要はありません。
* 登録済みユーザーは新しいログインIDを使用できると同時に、既存のプロファイルを使い続けることができます。
* ユーザーは、どのIDをログインに使っても、自分の同じプロファイルを維持することができます。
* ユーザーは、より完全なプロファイルを提供するために、身元情報が多いアカウントにリンクさせることができます。
* アプリケーションは、接続固有のユーザープロファイルデータを取得できます。

<div id="de-provisioning">
  ## プロビジョニング解除
</div>

アプリケーションは、ユーザーによるアカウント削除の要求に対応しなければならないことがあります（たとえば、[GDPR](https://eugdpr.org/)を遵守するためなど）。そのような機能は、他のプロファイル関連の機能と一緒に、[Management API](/docs/ja-JP/ja-jp/api/management/v2#!/Users)を使って実装することができます。Management APIを使用すると、ユーザーについて保管されている情報を取得したり、必要に応じて更新したりできます。

Auth0には、サインアップ時に同意通知やデータ保護へのリンクを表示して、ユーザーが自分についてのデータを閲覧・修正する権利を尊重するなど、プライバシーに関連した各種要件に対応する機能があります。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  [GDPR](https://eugdpr.org/)や他のプライバシーに関する指令では、自分に関するデータを閲覧して訂正できるユーザーの権利が要求されています。また、ユーザーには「忘れられる」権利も認められています。Management APIを使用してこれらの要件に対応し、法的義務を果たすことができます。
</Callout>

<div id="project-planning-guide">
  ## プロジェクト計画ガイド
</div>

当社では、PDF形式の計画ガイダンスを提供しています。ダウンロードして、推奨される戦略の詳細を参照してください。

[B2C IAM Project Planning Guide](https://assets.ctfassets.net/cdy7uua7fh8z/3er1aEQ7Ul0q3c9leJWczR/b1f18b4c16abb7e78b01e4eb2b52bb8e/B2C_Project_Planning.pdf)
