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

# ユーザープロファイル

> Auth0でユーザープロファイルがどのように使われるのかを理解します。

テナントのアプリにアクセスするには、ユーザーはテナントにプロファイルがなくてはなりません。ユーザープロファイルには、名前や連絡先など、ユーザーについての情報が含まれます。ユーザープロファイルは、[Auth0 Dashboard](/docs/ja-jp/get-started/auth0-overview/dashboard)と[Auth0 Management API](/docs/ja-jp/api/management/v2)で管理できます。

## ユーザーデータのソース

ユーザーデータは、独自のデータベースの他にも、ソーシャル、法務、エンタープライズIDプロバイダーなど、多数のソースから取得する可能性があります。例としては、Google、Facebook、Active Directory、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language（SAML）: パスワードなしに二者間で認証情報を交換できる標準化プロトコル。" cta="用語集の表示">SAML</Tooltip>などが挙げられます。対応しているデータソースからのユーザーデータは、正規化することができます。

ユーザープロファイル属性には、IDプロバイダーからの情報を含むことができます。たとえば：

| ユーザーデータの出所...    | 例...                 |
| ---------------- | -------------------- |
| LinkedIn         | 現在の勤務先や取得した学位        |
| Facebook         | プロファイル写真、誕生日、交際ステータス |
| Active Directory | 従業員番号、肩書き、所属部署       |

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

### ユーザーデータの正規化

Auth0はさまざまな[IDプロバイダー](/docs/ja-jp/authenticate/identity-providers)と[データベース接続](/docs/ja-jp/authenticate/database-connections)に対応します。それぞれの接続は、異なるユーザー属性を返すことができます。場合によっては、接続間で同じ属性に異なる名前が使われることもあります。たとえば、ある接続で`surname`（姓）と呼ばれるものが、別のデータソースでは`last_name`や`family_name`と呼ばれる場合があります。

こうした複雑性に対処するため、Auth0では、ユーザーデータを保存する際、Auth0固有の[正規化ユーザープロファイル](/docs/ja-jp/manage-users/user-accounts/user-profiles/normalized-user-profiles)を提供しています。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0[ユーザープロファイルのデータ構造](/docs/ja-jp/manage-users/user-accounts/user-profiles/user-profile-structure)を確認するには、[［Dashboard］>［User Management（ユーザー管理）］>［Users（ユーザー）］](https://manage.auth0.com/#/users)に移動し、ユーザーをクリックしてください。
</Callout>

### ユーザープロファイル属性のマッピング

#### AD/LDAPコネクター

Auth0のAD/LDAPコネクターを使用するActive Directoryや他のLDAP接続のために、ディクレトリサービスにあるユーザープロファイル属性を、Auth0の正規化されたユーザープロファイルにマッピングする機能があります。AD/LDAPコネクターのインストールディレクトにある`profileMapper.js`ファイルは、ユーザーの認証時に属性をマッピングします。

#### SAMLアサーション

アプリケーションがAuth0との通信にSAMLプロトコルを使用する場合、2つの仕組みのいずれかが、ユーザー属性をAuth0の正規化されたユーザープロファイルに一致させます。

| Auth0が以下の場合    | 作業                                                                                                                                                                                                                                                                                                                                         |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SAMLサービスプロバイダー | SAML接続の［Mappings（マッピング）］タブを使用して、IDPからの属性をAuth0のユーザープロファイルにある属性とマッピングします。これを行うには、[［Dashboard］>［Authentication（認証）］>［Enterprise（エンタープライズ）］>［SAMLP］](https://manage.auth0.com/#/connections/database/enterprise/samlp)に移動します。SAML接続の名前をクリックしてから、\_\_［Mappings（マッピング）］\_\_をクリックします。                                                            |
| SAML IDプロバイダー  | ［Application AddOns（アプリケーションのアドオン）］の［Settings（設定）］タブを使用して、Auth0のユーザープロファイルからの属性と、サービスプロバイダーから受け取ったSAMLアサーションにある属性をマッピングします。これを行うには、[［Dashboard］>［Applications（アプリケーション）］](https://manage.auth0.com/#/connections/database/applications)に移動します。アプリケーションの名前をクリックし、\_\_［Addons（アドオン）］**をクリックしてから、**［SAML2 Web App（SAML2 Webアプリ）］\_\_をクリックします。 |

### アカウントリンク

ユーザーは、まず1つの接続（カスタムデータベースなど）でアプリケーションにログインした後に、別の接続（Facebookなど）でログインすることができます。この場合、2回目の認証の`user_id`は、最初の認証で使われた`user_id`とは異なります。

Auth0には、この2つのアカウントをリンクする機能があります。Auth0は2つのアカウントをリンクする場合、ユーザープロファイルの`identities`配列部分に、各接続に対して1つずつ、2つの要素を保存します。

Auth0が複数のプロバイダーからのユーザープロファイル属性をマージすることはありません。Auth0は、最初に使われたプロバイダーの**core** ユーザープロファイル属性を使用します。

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

### ユーザープロファイルのキャッシュ

Auth0は、接続から受け取ったユーザープロファイルをキャッシュしてから、アプリケーションに渡します。このキャッシュはAuth0のデータベースにあります。ユーザーが認証する度に、Auth0はキャッシュを更新します。詳細については、[「データベースでユーザープロファイルを更新する」](/docs/ja-jp/manage-users/user-accounts/user-profiles/update-user-profiles-using-your-database)をお読みください。

## カスタムユーザープロファイルのデータ

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

## ユーザープロファイルのデータを変更する

ユーザープロファイル情報を変更するには、いくつかの方法があります。

* [スコープ](/docs/ja-jp/get-started/apis/scopes)：Auth0が対応する認証フローには、スコープを指定するオプションパラメーターがあります。これは、IDトークン（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-3" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JWT</Tooltip>）に含まれるユーザープロファイル情報（クレーム）を制御します。
* [Auth0 Dashboard](/docs/ja-jp/manage-users/user-accounts/manage-users-using-the-dashboard)：Dashboardでは、どのユーザープロファイルでも、`user_metadata`と`app_metadata`部分を手動で編集できます。
* [Management API](/docs/ja-jp/manage-users/user-accounts/manage-users-using-the-management-api)：Auth0のデータベースに保管されたユーザープロファイルの読み取り、更新、削除を行うことができます。
* [カスタムデータベースのスクリプト](/docs/ja-jp/authenticate/database-connections/custom-db/templates)：カスタムデータベース接続を使用している場合には、スクリプトを作成して、パスワードの作成、ログイン、検証、削除、変更など、ライフサイクルイベントを実装することができます。Auth0はスクリプトのテンプレートを提供しています。特定のデータベースまたはスキーマに合わせて、このスクリプトを書き換えることができます。
* [ルール](/docs/ja-jp/manage-users/user-accounts/metadata/manage-metadata-rules)：ルールを使用すると、認証のトランザクション中にユーザープロファイルを拡張し、オプションでそれらをAuth0に書き戻すことができます。

## ユーザープロファイルにアクセスする

ユーザーのプロファイル情報には、アプリとAuth0 <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>からアクセスすることができます。

### アプリからユーザープロファイルにアクセスする

Auth0が認証を完了すると、アプリケーションに制御を戻す際に、ユーザープロファイルを提供します。具体的なレベルでは、Auth0が対応するアプリケーション[プロトコル](/docs/ja-jp/authenticate/protocols)のいずれかを使ってこれを実行できます。ただし、ほとんどの場合、開発者にはAuth0 SDKの使用が好まれるはずです。詳しくは、[Quickstart](/docs/ja-jp/quickstarts)をお読みください。

SDKの1つに、ユーザーログインのインターフェイスを提供する、Auth0 Lockウィジェットがあります。詳細については、以下をお読みください。

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

WebアプリにカスタムのログインUIを実装したい場合には、Auth0.jsを使用することができます。このAuth0用のヘッドレスなJavaScriptライブラリーは、認証フロー（と他のタスク）を起動して、その見返りにユーザープロファイルオブジェクトを受け取ります。詳細については、「[Auth0.js v9の参考情報](/docs/ja-jp/libraries/auth0js)」をお読みください。

### Management APIからユーザープロファイルにアクセスする

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

API Explorerを使用すると、対話的にManagement APIを試すことができます。以下を提供しています。

* 利用可能なAPIの呼び出し
* それぞれの呼び出しに必要な情報
* それぞれの呼び出しで戻される情報

Explorerを使用すると、各エンドポイントをExplorer UIで試したり、各コマンドラインからCuRLを使用して試したりできます。Management APIコマンドを試すには、[API Explorer](/docs/ja-jp/api/management/v2)にアクセスします。`update:users`など、選択するコマンド内の **［Scopes（スコープ）］** から必要なアクセスを選択し、**［TRY（試す）］** をクリックします。

Auth0 Authentication APIは、認証フロー専用です。詳細については、[「Authentication API Explorer」](/docs/ja-jp/api/authentication)をお読みください。これらほとんどのエンドポントは、さまざまなAuth0 SDKで使用されていますが、コードで典型的に使用されるようなものではありません。

## ユーザープロファイルとトークンの違い

上記の認証フローでは、Auth0は完全なユーザープロファイルの代わりにトークンのセットを返します。

返されるトークンの1つに、IDトークンがあります。これはJSON Web Token（JWT）で、ユーザープロファイル属性がクレームの形で含まれています。これらのクレームはユーザーについてのステートメントです。クレームは、トークンの消費者がその署名を検証できた場合には信頼できます。この署名は（HS256の場合）、Auth0アプリのクライアントシークレットを使用して生成されます。アプリがRS256暗号を使用している場合には、IDトークンは秘密鍵で署名され、公開鍵で検証されます。アプリはJWTを解読して、ペイロードにあるユーザー情報を取得することができます。この情報には、ユーザー名、メール、その他の通常ユーザーエクスペリエンスの一部となるデータなどが挙げられます。

一般的に、JWTのクレームには、ユーザープロファイルにある情報のサブセットのみが含まれています。そうすることで、トークンのサイズが最小限に抑えられます。詳細については、[「JSON Webトークン」](/docs/ja-jp/secure/tokens/json-web-tokens)をお読みください。

認証中には、他にも3種類のトークンが返されます。

* Auth0のアクセストークン
* サードパーティプロバイダーのアクセストークン
* リフレッシュトークン

トークンとクレームの詳細については、[「トークン」](/docs/ja-jp/secure/tokens)をお読みください。

## もっと詳しく

* [ユーザープロファイルの確認](/docs/ja-jp/troubleshoot/authentication-issues/check-user-profiles)
* [カスタムドメインのトラブルシューティング](/docs/ja-jp/troubleshoot/integration-extensibility-issues/troubleshoot-custom-domains)
* [SAMLエラーのトラブルシューティング](/docs/ja-jp/troubleshoot/authentication-issues/saml-errors)
* [接続を確認する](/docs/ja-jp/troubleshoot/basic-issues/verify-connections)
* [APIの呼び出しをチェックする](/docs/ja-jp/troubleshoot/authentication-issues/check-api-calls)
* [Auth0.Androidのログイン、ログアウト、およびユーザープロファイル](/docs/ja-jp/libraries/auth0-android/auth0-android-login-logout-and-user-profiles)
