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

> Auth0 におけるユーザープロフィールの仕組みを理解します。

# ユーザープロフィール

テナント内のアプリケーションにアクセスするには、各ユーザーがそのテナント内にプロフィールを持っている必要があります。ユーザープロフィールには、名前や連絡先情報など、ユーザーに関する情報が含まれます。ユーザープロフィールは、[Auth0 Dashboard](/ja/docs/get-started/auth0-overview/dashboard) と [Auth0 Management API](https://auth0.com/docs/api/management/v2) で管理できます。

<div id="user-data-sources">
  ## ユーザーデータソース
</div>

ユーザーデータは、自社のデータベースだけでなく、ソーシャル、法律関連、エンタープライズの<Tooltip tip="IDプロバイダー（IdP）: デジタルアイデンティティを保存および管理するサービス。" cta="用語集を表示" href="/ja/docs/glossary?term=identity+providers">IDプロバイダー</Tooltip>など、さまざまなソースから取得できます。たとえば、Google、Facebook、Active Directory、<Tooltip tip="IDプロバイダー（IdP）: デジタルアイデンティティを保存および管理するサービス。" cta="用語集を表示" href="/ja/docs/glossary?term=SAML">SAML</Tooltip> などがあります。サポートされている任意のデータソースから取得したユーザーデータは正規化できます。

ユーザープロフィール属性には、IDプロバイダーからの情報を含めることができます。以下に例を示します。

| ユーザーデータの取得元      | 含まれる可能性がある情報         |
| ---------------- | -------------------- |
| LinkedIn         | 現在の勤務先や取得した学位        |
| Facebook         | プロフィール写真、誕生日、交際ステータス |
| Active Directory | 社員番号、役職、部署           |

Auth0 では、すべてのユーザーデータソースを **接続** と呼びます。これは、Auth0 がそれらに接続してユーザーを認証するためです。

<div id="user-data-normalization">
  ### ユーザーデータの正規化
</div>

Auth0 は、さまざまな [IDプロバイダー](/ja/docs/authenticate/identity-providers) と [データベース接続](/ja/docs/authenticate/database-connections) をサポートしています。各接続から返されるユーザー属性のセットは異なる場合があります。また、接続によっては、同じ属性に別の名前が使われることもあります。たとえば、ある接続の `surname` が、別のユーザーデータソースでは `last_name` や `family_name` になっている場合があります。

こうした複雑さに対処するため、Auth0 では、ユーザーデータを保存するための Auth0 独自の標準である [Normalized User Profile](/ja/docs/manage-users/user-accounts/user-profiles/normalized-user-profiles) を提供しています。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 の [ユーザープロファイルのデータ構造](/ja/docs/manage-users/user-accounts/user-profiles/user-profile-structure) を表示するには、[Dashboard > User Management > Users](https://manage.auth0.com/#/users) に移動し、ユーザーをクリックします。
</Callout>

<div id="user-profile-attribute-mapping">
  ### ユーザープロフィールの属性マッピング
</div>

<div id="adldap-connector">
  #### AD/LDAP Connector
</div>

Auth0 AD/LDAP Connector を使用する Active Directory やその他の LDAP 接続では、ディレクトリサービス内のユーザープロフィール属性を Auth0 の Normalized User Profile にマッピングする仕組みがあります。AD/LDAP Connector のインストールディレクトリにある `profileMapper.js` ファイルによって、ユーザーの認証時に属性がマッピングされます。

<div id="saml-assertions">
  #### SAML アサーション
</div>

アプリケーションが Auth0 との通信に SAML プロトコルを使用している場合、ユーザー属性を Auth0 の Normalized User Profile に対応付ける方法は 2 つあります。

| If Auth0 is a...       | Then...                                                                                                                                                                                                                                                                    |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SAML Service Provider  | SAML 接続の **Mappings** タブを使用して、IdP から渡される属性を Auth0 ユーザープロフィールの属性にマッピングします。[Dashboard > Authentication > Enterprise > SAMLP](https://manage.auth0.com/#/connections/database/enterprise/samlp) に移動します。SAML 接続の名前をクリックし、**Mappings** をクリックします。                                |
| SAML Identity Provider | Application AddOns の **Settings** タブを使用して、Auth0 ユーザープロフィールの属性を、サービスプロバイダーに返される SAML アサーション内の属性にマッピングします。[Dashboard > Applications](https://manage.auth0.com/#/connections/database/applications) に移動します。アプリケーションの名前をクリックし、**Addons** をクリックしてから、**SAML2 Web App** をクリックします。 |

<div id="account-linking">
  ### アカウントのリンク
</div>

ユーザーは、最初は 1 つの接続 (カスタムデータベースなど) を使用してアプリケーションにログインし、その後で別の接続 (Facebook など) を使用してログインできます。この場合、2 回目の認証の `user_id` は、1 回目の認証の `user_id` とは異なります。

Auth0 には、この 2 つのアカウントをリンクする仕組みがあります。Auth0 が 2 つのアカウントをリンクすると、ユーザープロフィールの `identities` 配列に、各接続に対応する要素が 1 つずつ、合計 2 つ保存されます。

Auth0 は、複数のプロバイダーから取得したユーザープロフィール属性をマージしません。Auth0 は、最初に使用されたプロバイダーから **コア** ユーザープロフィール属性を取得します。

詳細については、[ユーザーアカウントのリンク](/ja/docs/manage-users/user-accounts/user-account-linking) を参照してください。

<div id="caching-user-profiles">
  ### ユーザープロフィールのキャッシュ
</div>

Auth0 は、接続から受け取ったユーザープロフィールを、呼び出し元のアプリケーションに渡す前にキャッシュします。このキャッシュは Auth0 のデータベースに保存されます。ユーザーが認証されるたびに、Auth0 はこのキャッシュを更新します。詳細については、[データベースを使用してユーザープロフィールを更新する](/ja/docs/manage-users/user-accounts/user-profiles/update-user-profiles-using-your-database)を参照してください。

<div id="custom-user-profile-data">
  ## カスタムユーザープロフィールデータ
</div>

Auth0 では、[metadata](/ja/docs/manage-users/user-accounts/metadata) を保存できます。これは、IDプロバイダーから提供されるものではない、各ユーザーに関連するデータです。`user_metadata` を使用すると、ユーザーの好きな色や趣味などのカスタム属性を保存できます。

<div id="change-user-profile-data">
  ## ユーザープロフィールデータを変更する
</div>

ユーザーのプロフィール情報は、いくつかの方法で変更できます。

* [Scopes](/ja/docs/get-started/apis/scopes): Auth0 でサポートされている認証フローには、スコープを指定できるオプションのパラメーターがあります。これにより、<Tooltip tip="JSON Web Token（JWT）: 2 者間でクレームを安全に表現するために使用される標準的な IDトークン形式（および多くの場合はアクセストークン形式）。" cta="用語集を表示" href="/ja/docs/glossary?term=ID+token">IDトークン</Tooltip> (<Tooltip tip="ID Token: リソースへのアクセスではなく、クライアント自体を対象とした認証情報。" cta="用語集を表示" href="/ja/docs/glossary?term=JWT">JWT</Tooltip>) に含めるユーザープロフィール情報 (クレーム) を制御できます。
* [Auth0 Dashboard](/ja/docs/manage-users/user-accounts/manage-users-using-the-dashboard): Dashboard では、任意のユーザーのプロフィール内の `user_metadata` と `app_metadata` を手動で編集できます。
* [Management API](/ja/docs/manage-users/user-accounts/manage-users-using-the-management-api): Auth0 データベースに保存されているユーザープロフィールの読み取り、更新、削除を行えます。
* [Custom database scripts](/ja/docs/authenticate/database-connections/custom-db/templates): 接続としてカスタムデータベースを使用している場合は、作成、ログイン、検証、削除、パスワード変更などのライフサイクルイベントを実装するスクリプトを作成できます。Auth0 には、利用するデータベースやスキーマに合わせて変更できる、これらのスクリプト用テンプレートが用意されています。
* [Rules](/ja/docs/manage-users/user-accounts/metadata/manage-metadata-rules): 認証トランザクション中に Rules を使用してユーザープロフィールを拡張し、必要に応じてその変更を Auth0 に永続化できます。

<div id="access-user-profiles">
  ## ユーザープロフィールにアクセスする
</div>

アプリと Auth0 の <Tooltip tip="顧客が管理タスクを実行できるようにする製品。" cta="用語集を表示" href="/ja/docs/glossary?term=Management+API">Management API</Tooltip> は、どちらもユーザーのプロフィール情報にアクセスできます。

<div id="access-user-profiles-from-apps">
  ### アプリからユーザープロフィールにアクセスする
</div>

Auth0 が認証を完了してアプリケーションに制御を戻すと、ユーザープロフィールがアプリケーションに提供されます。これを低レベルで実装するには、Auth0 がサポートしているアプリケーション [プロトコル](/ja/docs/authenticate/protocols) のいずれかを使用できます。ただし、ほとんどの開発者は Auth0 SDK の使用を選びます。詳しくは、[クイックスタート](/ja/docs/quickstarts) を参照してください。

SDK の 1 つに、ユーザー向けのログインインターフェースを提供する Auth0 Lock ウィジェットがあります。詳しくは、次を参照してください。

* [Lock for Web](/ja/docs/libraries/lock)
* [Lock Swift](/ja/docs/libraries/lock-swift)
* [Lock.Android](/ja/docs/libraries/lock-android)

Web アプリにカスタムのログイン UI を実装したい場合は、Auth0.js を使用できます。この Auth0 向けのヘッドレス JavaScript ライブラリは、認証フロー (およびその他のタスク) を呼び出し、戻り値としてユーザープロフィール オブジェクトを受け取ります。詳しくは、[Auth0.js Reference](/ja/docs/libraries/auth0js) を参照してください。

<div id="access-user-profiles-from-the-management-api">
  ### Management API からユーザープロフィールにアクセスする
</div>

Auth0 では、アプリケーションやサービスが ユーザープロフィール オブジェクトにアクセスし、操作できる REST API を提供しています。

API Explorer では、Management API をインタラクティブに確認できます。次の情報が提供されます。

* 利用可能な API コール
* 各コールに必要な情報
* 各コールから返される情報

API Explorer を使うと、Explorer UI またはコマンドラインでの CuRL コマンドを通じて、各エンドポイントを試すことができます。Management API のコマンドを試すには、[API Explorer](https://auth0.com/docs/api/management/v2) に移動します。選択したコマンドの **Scopes** で、`update:users` など必要なアクセス権を選択し、**TRY** をクリックします。

Auth0 Authentication API は、認証フロー専用の API です。詳しくは、[Authentication API Explorer](https://auth0.com/docs/api/authentication) を参照してください。通常、これらのエンドポイントの大半は独自のコードではなく、各種 Auth0 SDK で使用されます。

<div id="the-difference-between-user-profiles-and-tokens">
  ## ユーザープロフィールとトークンの違い
</div>

上記で説明した認証フローでは、Auth0 は完全なユーザープロフィールの代わりに、一連のトークンを返します。

返されるトークンの 1 つが IDトークン です。これは、ユーザープロフィールの属性を claims として含む JSON Web Token (JWT) です。これらの claims は、ユーザーに関する情報を表す記述です。トークンの利用側が署名を検証できれば、その claim は信頼できます。この署名は (HS256 の場合) Auth0 アプリの <Tooltip tip="クライアントシークレット: クライアント（アプリケーション）が認可サーバーに対して認証を行うために使用する秘密情報です。これはクライアントと認可サーバーのみが知るべきものであり、推測できないよう十分にランダムでなければなりません。" cta="用語集を表示" href="/ja/docs/glossary?term=client+secret">クライアントシークレット</Tooltip> を使って生成されます。アプリで RS256 を使用している場合、IDトークン は秘密鍵で署名され、公開鍵で検証されます。その後、アプリは JWT をデコードして、そのペイロードに含まれるユーザー情報を取得できます。この情報の例としては、ユーザーの名前、メールアドレス、その他、通常はユーザー体験の一部となるデータが挙げられます。

JWT 内の claims には、一般にユーザープロフィールで利用できる情報の一部しか含まれません。その目的は、トークンのサイズを最小限に抑えることです。詳しくは、[JSON Web Tokens](/ja/docs/secure/tokens/json-web-tokens) を参照してください。

認証時に返されるトークンには、ほかに 3 種類あります。

* Auth0 <Tooltip tip="アクセストークン: API へのアクセスに使用される認可資格情報で、不透明な文字列または JWT の形式を取ります。" cta="用語集を表示" href="/ja/docs/glossary?term=access+token">アクセストークン</Tooltip>
* サードパーティープロバイダーのアクセストークン
* <Tooltip tip="リフレッシュトークン: ユーザーに再度ログインさせることなく、新しいアクセストークンを取得するために使用するトークンです。" cta="用語集を表示" href="/ja/docs/glossary?term=Refresh+token">リフレッシュトークン</Tooltip>

トークンと claims の詳細については、[Tokens](/ja/docs/secure/tokens) を参照してください。

<div id="learn-more">
  ## 詳しく見る
</div>

* [Auth0.Android のログイン、ログアウト、ユーザープロフィール](/ja/docs/libraries/auth0-android/auth0-android-login-logout-and-user-profiles)
