> ## 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.

> 組織 対応のログインフロー、ロールの割り当て、メンバーコンテキストのトークンなど、Actions と SDK を使用して Auth0 Organizations の動作をカスタマイズします。

# Organizations を使ったカスタム開発

[組織](/docs/ja-jp/manage-users/organizations/organizations-overview)のメタデータと Actions を使用して Auth0 の機能を拡張したり、API や SDK を使用してユーザー向けの 組織 管理ダッシュボードを構築したりできます。

<Card title="利用可否は Auth0 のプランによって異なります">
  この機能を利用できるかどうかは、Auth0 のプランまたはカスタム契約によって異なります。詳しくは、[Pricing](https://auth0.com/pricing)をご覧ください。
</Card>

<div id="extensibility">
  ## 拡張
</div>

Organizations は拡張ポイントをサポートしているため、organization のメタデータ内でプロパティを定義し、そのデータを[Actions](/docs/ja-jp/customize/actions)で利用できるようにできます。これにより、個々の顧客やアプリケーションに合わせて機能をカスタマイズできます。たとえば、その情報を organization のメタデータに保存しておくことで、サブスクリプションプランに基づいて特定の顧客向けに Actions でカスタムロジックを実行できます。

<div id="actions-event-object">
  ### Actions イベントオブジェクト
</div>

Action のイベントオブジェクトには、ユーザーの IP アドレス、アプリケーション、位置情報など、現在の認証トランザクションに関するコンテキスト情報が格納されています。

Action 内で `event` オブジェクトを使用してトークンの内容を変更すると、その変更はすべての Actions の実行完了後にトークンに反映されます。

<div id="sdks">
  ## SDK
</div>

メンバーが自分の組織を自分で管理できるようにするには、メンバーにロールを割り当て、API や SDK を使って自社製品内にダッシュボードを構築できます。管理者は、<Tooltip tip="シングルサインオン (SSO): ユーザーが 1 つのアプリケーションにログインすると、そのユーザーは他のアプリケーションにも自動的にログインできます。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=Single+Sign-On">シングルサインオン</Tooltip> (SSO) の設定、ユーザーの組織への招待、メンバーの組織への割り当て、メンバーへのロールの割り当てなどを行えます。

以下に、SDK を使用して組織に対して実行できるタスクの例を示します。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  以下の例では、ID トークンとアクセストークンでデフォルトで利用できる `org_id` クレームを参照しています。ただし、テナントを設定することで、Authentication API で組織名も使用できるようにすることができます。これにより、トークンには `org_id` と `org_name` の両方のクレームが含まれるようになります。これらが含まれている場合は、受け取った値が信頼できるエンティティに対応していることを確認するために、`org_id` に加えて `org_name` クレームも検証してください。

  一般に、トークンの検証には組織IDを使用する方法が推奨されます。ただし、ユースケースによっては組織名を使用するほうが適切な場合もあります。組織名を使用してトークンを検証することによる影響を理解するには、[Use Organization Names in Authentication API](/docs/ja-jp/manage-users/organizations/configure-organizations/use-org-name-authentication-api) を参照してください。
</Callout>

<div id="i-want-users-to-log-in-to-a-specified-organization">
  ### ユーザーを指定した 組織 にログインさせたい
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  この方法は、アプリケーションコードを管理していることを前提としています。サードパーティアプリケーションの場合、外部の開発者が `organization` パラメータを渡すことを保証できません。代わりに、[Prompt for Credentials または Prompt for Organization](/docs/ja-jp/manage-users/organizations/login-flows-for-organizations)を使用してください。
</Callout>

新しいクライアントを定義するときは、組織 パラメーターに組織IDを渡します。次に、コールバック時に、<Tooltip tip="ID トークン: リソースへのアクセス用ではなく、クライアント自体のための認証情報。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=ID+token">ID トークン</Tooltip>で返される 組織 が `/authorize` リクエストで送信したものと同じであることを確認します。そのために、`exp` や `nonce` などのほかのクレームと同様に、`org_id` クレームを検証します。

詳しくは、以下をご覧ください。

* [認可コードフローを使用してログインを追加する](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow/add-login-auth-code-flow)
* [認可コードフローを使用して API を呼び出す](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow/call-your-api-using-the-authorization-code-flow)
* [PKCE を使用した Authorization Code フローを使用してログインを追加する](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/add-login-using-the-authorization-code-flow-with-pkce)
* [PKCE を使用した Authorization Code フローを使用して API を呼び出す](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce)
* [Implicit Flow with Form Post を使用してログインを追加する](/docs/ja-jp/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/add-login-using-the-implicit-flow-with-form-post)
* [ハイブリッドフローを使用して API を呼び出す](/docs/ja-jp/get-started/authentication-and-authorization-flow/hybrid-flow/call-api-hybrid-flow)
* [組織に基づいてセッションの非アクティブ タイムアウトをカスタマイズする](/docs/ja-jp/manage-users/sessions/manage-sessions-actions)

<div id="from-my-application-i-want-to-get-the-organization-to-which-the-authenticated-user-logged-in">
  ### 自分のアプリケーションから、認証されたユーザーがログインした組織を取得したい
</div>

ユーザーが組織を使って認証された場合、組織ID は ID トークンの `org_id` クレームに含まれます。Auth0 SPA SDK を使用して、次のように取得します。

`const { org_id } = await client.getIdTokenClaims();`

<div id="from-my-api-i-want-to-get-the-organization-with-which-the-access-token-was-issued">
  ### API から、アクセストークンがどの 組織 で発行されたかを取得したい
</div>

ユーザーが 組織 を使用して認証され、<Tooltip tip="Audience: 発行されたトークンの対象を一意に識別する識別子です。トークン内では aud という名前で表され、その値には ID トークンの場合はアプリケーション（Client ID）の ID、アクセストークンの場合は API（API 識別子）の ID が含まれます。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=audience">audience</Tooltip> が指定されている場合、<Tooltip tip="Audience: 発行されたトークンの対象を一意に識別する識別子です。トークン内では aud という名前で表され、その値には ID トークンの場合はアプリケーション（Client ID）の ID、アクセストークンの場合は API（API 識別子）の ID が含まれます。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=access+token">アクセストークン</Tooltip> は <Tooltip tip="JSON Web Token (JWT): 2 者間でクレームを安全に表現するために使用される標準的な ID トークン形式（および多くの場合アクセストークン形式）です。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=JWT">JWT</Tooltip> となり、ユーザーがログインした 組織 の ID を含む `org_id` クレームが含まれます。

これはバックエンドで、ほかのクレームとあわせて検証できます。以下は Ruby の例です。

```ruby lines theme={null}
class JsonWebToken
  def self.verify(token)
    decoded = JWT.decode(token, nil,
               true, # Verify the signature of this token
               algorithms: 'RS256',
               iss: 'https://YOUR_DOMAIN/',
               verify_iss: true,
               aud: Rails.application.secrets.auth0_api_audience,
               verify_aud: true) do |header|
      jwks_hash[header['kid']]
    end

    # デコードされたトークンから組織IDの値を取得する
    org = decoded[0]['org_id']
  end
end
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  **Auth0ドメインを確認する**

  Auth0ドメインは、テナント名、リージョンのサブドメイン (テナントが US リージョンにあり、2020 年 6 月より前に作成されている場合を除く) 、および `.auth0.com` を組み合わせたものです。たとえば、テナント名が `travel0` の場合、Auth0ドメイン名は `travel0.us.auth0.com` になります。 (テナントが US にあり、2020 年 6 月より前に作成されている場合、ドメイン名は `https://travel0.auth0.com` になります。)

  カスタムドメインを使用している場合は、そのカスタムドメイン名を指定します。
</Callout>

<div id="learn-more">
  ## 詳細情報
</div>

* [Auth0 Organizations の仕組みを理解する](/docs/ja-jp/manage-users/organizations/organizations-overview)
* [最初の組織を作成する](/docs/ja-jp/manage-users/organizations/create-first-organization)
* [トークンと組織を使用する](/docs/ja-jp/manage-users/organizations/using-tokens)
* [Organizations を設定する](/docs/ja-jp/manage-users/organizations/configure-organizations)
* [Auth0 Actions](/docs/ja-jp/customize/actions)
