> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-update-anonymous-sessons-ea.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# B2B プロファイル管理

> B2B IAM 実装におけるユーザープロファイル管理の計画時の考慮事項。

いずれかの時点で、ユーザーのプロファイルに保存されている情報を変更する必要が生じることがあります。ユーザーのプロファイル (ユーザーアカウントとも呼ばれます) は Auth0 に保存されており、その情報の変更が必要になる理由には、たとえば次のようなものがあります。

* ユーザー自身による情報更新
* 組織の利用規約に関する必須の更新
* 規制遵守に伴う変更

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

[アイデンティティプロバイダー](/docs/ja-jp/authenticate/identity-providers) は、ログインプロセス中に提供されたデータを使ってユーザーのプロファイルを設定します。これを [Normalized User Profile](/docs/ja-jp/manage-users/user-accounts/user-profiles/normalized-user-profiles) と呼びます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Normalized User Profile はログイン時に アイデンティティプロバイダー の情報で更新され、その中に含まれる限られた情報は Auth0 Management API を通じて変更できます。また、[Actions](/docs/ja-jp/customize/actions) などの Auth0 の拡張機能を代替手段として使い、Normalized User Profile 内の情報を上書きすることもできます。詳しくは [User Profile Data Modification](/docs/ja-jp/manage-users/user-accounts/user-profiles#user-profile-data-modification) を参照してください。
</Callout>

デフォルトでは、各ユーザー ID ごとに 1 つのユーザープロファイルが作成されます。ここでは、いくつか考慮すべき点があります。

* ユーザー体験のカスタマイズに役立つ情報を保存する必要がある場合、どうすべきでしょうか。
* <Tooltip tip="Identity Provider (IdP): Service that stores and manages digital identities." cta="用語集を見る" href="/docs/ja-jp/glossary?term=identity+provider">アイデンティティプロバイダー</Tooltip> 由来ではないユーザー情報を保存する必要がある場合はどうでしょうか。
* ユーザーが変更できないユーザー関連情報を保存する必要があるのはなぜでしょうか。
* ユーザーが変更できないユーザー関連情報を保存する必要がある場合は、どうすればよいでしょうか。
* ユーザーがパスワードを忘れた場合はどうなりますか。
* パスワードを変更したい場合、ユーザーはどうすべきでしょうか。
* サードパーティ組織の管理者に、自組織のユーザーを管理する機能をどのように提供しますか。

Auth0 では、ユーザーのプロファイルにメタデータを保存できるため、ユーザー体験を向上させる目的で、言語設定やアクセシビリティ設定などの追加情報を保持できます。メタデータは、ユーザーが変更できる情報と変更できない情報の両方の保存に使用できます。後者を使えば、たとえば既存の実装を変更せずに、ユーザープロファイルを既存システム内のレコードに関連付けることが可能になります。

パスワードを忘れたユーザーや、既存のセルフサービスの仕組み (または導入を予定しているセルフサービスの仕組み) を通じてパスワード変更を許可されているユーザーについては、Auth0 が提供する [Password Reset](#password-reset) 機能を活用できます。これは既存の実装に統合でき、[Universal Login](/docs/ja-jp/authenticate/login/auth0-universal-login) を含む Auth0 の標準 UI ウィジェットにもあらかじめ組み込まれています。

また、常に [確認済みのユーザーアカウント](#account-verification) を扱っていることを確実にしたいはずです。Auth0 は、そのための標準的な仕組みも提供しています。さらに、[GDPR](https://gdpr-info.eu/) のような [規制遵守](/docs/ja-jp/secure/data-privacy-and-compliance) についても考慮すべきです。これには、EU 市民をプライバシー侵害やデータ侵害から保護するうえで、非常に具体的な要件があります。

Auth0 は現在、集中型のプロファイル管理ポータルを標準機能としては提供していませんが、セルフサービスによるプロファイル管理を実現するために、Auth0 の <Tooltip tip="Management API: A product to allow customers to perform administrative tasks." cta="用語集を見る" href="/docs/ja-jp/glossary?term=Management+API">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/secure/tokens/access-tokens) を使用する必要があります。

<Warning>
  セルフサービスのプロファイル管理は、セキュリティ上の懸念だけでなく、データプライバシー上の懸念も生じさせる可能性があります。たとえば、ユーザーが自分のメールアドレスを変更できるようにしたい場合でも、ベストプラクティスに沿ったセキュリティガイダンスに従わずに実施すると、ユーザーが自分のアカウントからロックアウトされたり、個人を特定できる情報 (PII) が漏洩したり、さらには潜在的なセキュリティ侵害を招いたりする恐れがあります。
</Warning>

また、<Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要製品。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> を使用して、[ユーザープロファイルの各種項目を管理する](/docs/ja-jp/manage-users/user-accounts/manage-users-using-the-dashboard)こともできます。Auth0 Dashboard から行うユーザーのプロファイル管理は、主に管理者向けの機能であり、本番環境でセルフサービスのプロファイル管理に**使用すべきではありません**。ただし、Dashboard が提供するインターフェースは、ユーザーのプロフィール情報をすばやく簡単に変更できるため、開発時には非常に便利です。

顧客の認証情報を自社システムに保存している場合に、顧客側の管理者が自分たちのユーザーを管理できるようにする必要があるなら、自分で構築するか、Auth0 Extension を使用できます。詳細については、[Admin Portal](#admin-portal) を参照してください。

<h2 id="metadata">
  メタデータ
</h2>

Auth0 のユーザープロファイルには、Normalized User Profile の情報に加えて、[メタデータ](/docs/ja-jp/manage-users/user-accounts/metadata) を保存できます。メタデータ を使うと、アイデンティティプロバイダーに由来しない情報や、アイデンティティプロバイダーから提供された情報を上書きするための情報を保存できます。

<Tip>
  メタデータ を使用する際は、Auth0 の[ユーザーデータ保存のベストプラクティス](/docs/ja-jp/secure/security-guidance/data-security/user-data-storage#metadata)に従ってください。メタデータ ストレージは汎用的なデータストアとして設計されていないため、可能であれば引き続き独自の外部ストレージを使用してください。また、メタデータ のサイズや複雑さも最小限に抑える必要があります。さらに、Auth0 Management API では、ユーザーに関連付けられたメタデータの更新や削除について厳格なガイドラインが定められています。
</Tip>

メタデータ は、Auth0 Management API と Auth0 Authentication API の両方で操作できます。Normalized User Profile を管理する場合と同様に、Management API を使って メタデータ を操作するには、[アクセストークン](https://auth0.com/docs/api/management/v2/tokens) が必要です。

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

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

ユーザーメタデータ (`user_metadata` とも呼ばれます) とは、ユーザープロファイルに保存できる情報のことで、ユーザーはセルフサービスのプロファイル管理の一環としてこれを参照・更新できます。この種のメタデータには、ユーザーの敬称や、Auth0 から送信される[メールのカスタマイズ](/docs/ja-jp/customize/email/email-templates)に利用できる優先言語などが含まれます。

<Tip>
  Auth0 のメールのカスタマイズに使いたい情報は、メタデータに保存してください。ユーザーによる変更を許可する情報 (メールの言語を判定するための情報など) は、できるだけ `user_metadata` に保存することをおすすめします。
</Tip>

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

一方、アプリのメタデータ (`app_metadata`とも呼ばれます) は、ユーザープロフィールに保存できる情報ですが、**適切な認可がある場合にのみ読み取りまたは更新が可能**で、ユーザーが`app_metadata`に直接アクセスすることはできません。この種のメタデータとしては、たとえばユーザーが最新の有効な利用規約に同意したことを示すフラグや、その同意日時などが挙げられます。

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

パスワードを忘れたユーザーや、既存のセルフサービスの仕組みでパスワード変更が許可されているユーザー向けに、Auth0 は [Password Reset](/docs/ja-jp/authenticate/database-connections/password-change) 機能を提供しています。これは既存の実装に統合できるほか、[Universal Login](/docs/ja-jp/authenticate/login/auth0-universal-login) の一部として含まれる Auth0 の標準 UI ウィジェットにもあらかじめ組み込まれています。

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

Auth0 <Tooltip tip="Universal Login: アプリケーションは、ユーザーの本人確認のために、Auth0 の Authorization Server でホストされている Universal Login にリダイレクトされます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Universal+Login">Universal Login</Tooltip> には、Auth0 Authentication API の機能を使用したパスワードリセット向けの組み込み UX サポートがあります。また、開発環境に適した Auth0 SDK のいずれかを介して、[Auth0 Authentication API](/docs/ja-jp/authenticate/database-connections/password-change#use-the-authentication-api) を使用することもできます。パスワードリセットのワークフローで使用するメールテンプレートは、Auth0 の標準 UI ウィジェットを使用する場合でも、カスタマイズした Universal Login を使用する場合でも、完全にカスタマイズできます。

一方、Auth0 Management API を使用すると、Database Connection タイプで定義されたユーザー ID の[パスワードを直接変更](/docs/ja-jp/authenticate/database-connections/password-change#directly-set-the-new-password)できます。Auth0 Management API は、任意のセルフサービスによるプロファイル管理の実装の一部として使用できるほか、[Change Password ページのカスタマイズ](/docs/ja-jp/get-started/architecture-scenarios/business-to-business/branding)の一部として使用することもできます。

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

また、常に検証済みのユーザーアカウントを使用し、Auth0 が提供する仕組みを活用する必要があります。あわせて、[GDPR](https://gdpr-info.eu/) のような規制への準拠も考慮すべきです。GDPR では、EU 市民をプライバシー侵害やデータ漏えいから保護するための非常に具体的な要件が定められています。

Auth0 には、ユーザーのアカウントを検証するために、そのユーザーのメールアドレスに [確認メール](/docs/ja-jp/customize/email/manage-email-flow) を送信する機能が標準で用意されています。デフォルトでは、[self sign-up](/docs/ja-jp/get-started/architecture-scenarios/business-to-business/provisioning#self-sign-up) の一環として作成された [Database Connection](/docs/ja-jp/authenticate/database-connections/password-change) の ID に対して、Auth0 が自動的に確認メールを送信します。また、ユーザー登録時に Social Provider によるメールアドレスの検証が行われない場合に確認メールを送信できる [Management API エンドポイント](https://auth0.com/docs/api/v2#!/Tickets/post_email_verification) も用意されています。

<h2 id="blocking-users">
  ユーザーのブロック
</h2>

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

さらに、Auth0 Management API では、誤った認証情報の入力が多すぎたために無効化されたユーザーの[ブロックを解除](https://auth0.com/docs/api/management/v2#!/User_Blocks/delete_user_blocks_by_id)することもできます。

<h2 id="admin-portal">
  管理ポータル
</h2>

管理ポータルは、新しいユーザーの作成、ユーザープロフィールの編集、ユーザーに関するアクティビティの確認などを行うためのアプリケーションです。このアプリケーションには、管理者のみがアクセスできるようにする必要があります。Auth0 には管理ダッシュボードが用意されていますが、意図せず Auth0 テナントを壊してしまうおそれのある操作が数多くあるため、多くの人に管理ダッシュボードへのアクセス権を与えることは推奨されません。代わりに、Auth0 では次の 2 つの選択肢を提供しています。

* [**Auth0 Management API**](https://auth0.com/docs/api/management/v2): Management API を使用すると、管理者がユーザーを管理できるアプリケーションを簡単に構築できます。これは、すでに管理者向けに利用している既存のアプリケーションに組み込むことも、現在のアプリケーションに合わせた UI を備えた新しいアプリケーションとして作成することもできます。
* [**Auth0 Delegated Administration Extension**](/docs/ja-jp/customize/extensions/delegated-administration-extension): この強力で柔軟な拡張機能を使うと、ユーザー管理のエクスペリエンスをカスタマイズできます。この拡張機能を調整することで、顧客側の管理者がログインし、自分の組織内のユーザーのみを表示および管理できるようにできます。

<Tip>
  管理者がユーザーを管理する独自の方法を提供する場合は、管理者がパスワードを直接設定できるようにするのではなく、メールでパスワード変更リンクをユーザーに送信できるようにするだけにすべきです。どうしてもこの推奨に従えず、管理者が他者のパスワードを設定できるようにする必要がある場合は、パスワードを知っているのが管理者ではなくユーザー本人だけになるよう、次回ログイン時にパスワードの変更を必須にすべきです。
</Tip>

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

推奨戦略の詳細を確認できるよう、ダウンロードして参照できるPDF形式の計画ガイドを提供しています。

[B2B IAM プロジェクト計画ガイド](https://assets.ctfassets.net/cdy7uua7fh8z/63F0WOPJdVzsPMxV1Xvp8x/7a329487c5e890d8e820f6a48983b46a/B2B_Project_Planning.pdf)

<h2 id="multiple-organization-architecture-multitenancy">
  複数組織アーキテクチャ (マルチテナンシー)
</h2>

多くのB2Bプラットフォームでは、顧客組織ごとに何らかの分離やブランディングを実装しており、そのためIdentity and Access Management (IAM) システムが複雑になることがあります。これに当てはまる場合は、この種の環境に関するガイダンスやベストプラクティスをまとめた資料をぜひご一読ください。

[複数組織アーキテクチャ](/docs/ja-jp/get-started/architecture-scenarios/multiple-organization-architecture)
