> ## 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](/docs/ja-jp/get-started/auth0-overview/dashboard) と [Auth0 Management API](https://auth0.com/docs/api/management/v2) で管理できます。

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

ユーザーデータは、自社のデータベースをはじめ、ソーシャル、法的機関、エンタープライズの各<Tooltip tip="アイデンティティプロバイダー（IdP）: デジタルアイデンティティを保存・管理するサービス。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=identity+providers">アイデンティティプロバイダー</Tooltip>など、さまざまなソースから取得できます。たとえば、Google、Facebook、Active Directory、<Tooltip tip="アイデンティティプロバイダー（IdP）: デジタルアイデンティティを保存・管理するサービス。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=SAML">SAML</Tooltip> などがあります。サポート対象の任意のデータソースから取得したユーザーデータは正規化できます。

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

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

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

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

Auth0 は、さまざまな [アイデンティティプロバイダー](/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) を確認するには、[Auth0 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 の正規化されたユーザープロファイルにマッピングする仕組みが用意されています。AD/LDAP Connector のインストールディレクトリにある `profileMapper.js` ファイルによって、ユーザーの認証時に属性がマッピングされます。

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

アプリケーションが Auth0 との通信に SAML プロトコルを使用している場合、ユーザー属性を Auth0 の正規化されたユーザープロファイルにマッピングする方法は 2 つあります。

| If Auth0 is a...       | Then...                                                                                                                                                                                                                                                                |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SAML Service Provider  | IDプロバイダーから受け取る属性を Auth0 ユーザープロファイルの属性にマッピングするには、SAML 接続の **Mappings** タブを使用します。[Auth0 Dashboard > Authentication > Enterprise > SAMLP](https://manage.auth0.com/#/connections/database/enterprise/samlp) に移動します。SAML 接続の名前をクリックし、**Mappings** をクリックします。                |
| SAML Identity Provider | Auth0 ユーザープロファイルの属性を、サービスプロバイダーに返される SAML アサーション内の属性にマッピングするには、アプリケーションのアドオンにある **設定** タブを使用します。[Auth0 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 は、最初に使用されたプロバイダーから **core** ユーザープロファイル属性を取得します。

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

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

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

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

Auth0 では、[メタデータ](/docs/ja-jp/manage-users/user-accounts/metadata)を保存できます。これは、各ユーザーに関連付けられた、アイデンティティプロバイダーから取得したものではないデータです。`user_metadata` を使用すると、ユーザーの好きな色や趣味などのカスタム属性を保存できます。

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

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

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

<div id="access-user-profiles">
  ## ユーザープロファイルへのアクセス
</div>

アプリと Auth0 の <Tooltip tip="Management API: 顧客が管理タスクを実行できるようにする製品。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Management+API">Management API</Tooltip> の両方から、ユーザーのプロファイル情報にアクセスできます。

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

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

SDK の 1 つに Auth0 Lock widget があり、ユーザーのログインインターフェースを提供します。詳しくは、以下を参照してください。

* [Lock for Web](/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 library で、認証フロー (およびその他のタスク) を実行し、その結果としてユーザープロファイルオブジェクトを受け取ります。詳しくは、[Auth0.js Reference](/docs/ja-jp/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 は、認証フロー専用です。詳細については、[Authentication API Explorer](https://auth0.com/docs/api/authentication) を参照してください。通常、これらのエンドポイントのほとんどは、独自のコードではなく各種 Auth0 SDK によって使用されます。

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

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

返されるトークンの 1 つが ID トークンです。これは、ユーザープロファイルの属性をクレームの形で含む JSON Web トークン (JWT) です。これらのクレームは、ユーザーに関する情報を表します。トークンの利用者が署名を検証できれば、そのクレームは信頼できます。この署名は (HS256 の場合) 、Auth0 app の <Tooltip tip="Client Secret: クライアント（アプリケーション）が認可サーバーで認証するために使用する秘密情報です。これはクライアントと認可サーバーだけが知っている必要があり、推測されないよう十分にランダムでなければなりません。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=client+secret">client secret</Tooltip> を使って生成されます。アプリが RS256 を使用している場合、ID トークンは秘密キーで署名され、公開鍵で検証されます。その後、アプリは JWT をデコードして、そのペイロードに含まれるユーザー情報を取得できます。この情報には、ユーザー名、メールアドレス、その他通常はユーザーエクスペリエンスの一部となるデータなどが含まれます。

JWT 内のクレームには、通常、ユーザープロファイルで利用できる情報の一部しか含まれません。これは、トークンのサイズを最小限に抑えるためです。詳しくは、[JSON Web Tokens](/docs/ja-jp/secure/tokens/json-web-tokens) をお読みください。

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

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

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

<div id="learn-more">
  ## 詳細はこちら
</div>

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