> ## 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 の組織で Actions や SDK を使用する方法を学びます。

# 組織を使用したカスタム開発

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

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

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

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

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

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

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

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

メンバーが自分の組織を管理できるようにするには、メンバーにロールを割り当て、API や SDK を使用して製品内にダッシュボードを構築できます。管理者は、<Tooltip tip="シングルサインオン (SSO): ユーザーが 1 つのアプリケーションにログインすると、そのユーザーは他のアプリケーションにも自動的にログインされるサービスです。" cta="用語集を表示" href="/ja/docs/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](/ja/docs/manage-users/organizations/configure-organizations/use-org-name-authentication-api) を参照してください。
</Callout>

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

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

詳しくは、以下を参照してください。

* [認可コードフローを使用してログインを追加する](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/add-login-auth-code-flow)
* [認可コードフローを使用して API を呼び出す](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/call-your-api-using-the-authorization-code-flow)
* [PKCE 付き認可コードフローを使用してログインを追加する](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/add-login-using-the-authorization-code-flow-with-pkce)
* [PKCE 付き認可コードフローを使用して API を呼び出す](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce)
* [フォーム POST を使用するインプリシットフローでログインを追加する](/ja/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/add-login-using-the-implicit-flow-with-form-post)
* [ハイブリッドフローを使用して API を呼び出す](/ja/docs/get-started/authentication-and-authorization-flow/hybrid-flow/call-api-hybrid-flow)
* [組織に基づいてセッションの非アクティブタイムアウトをカスタマイズする](/ja/docs/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="オーディエンス: 発行されたトークンの対象を一意に識別する値です。トークン内では aud という名前で表され、その値には、IDトークン の場合はアプリケーション（クライアントID）の ID、アクセストークン の場合は API（API Identifier）の ID が含まれます。" cta="用語集を表示" href="/ja/docs/glossary?term=audience">オーディエンス</Tooltip> が指定されている場合、<Tooltip tip="オーディエンス: 発行されたトークンの対象を一意に識別する値です。トークン内では aud という名前で表され、その値には、IDトークン の場合はアプリケーション（クライアントID）の ID、アクセストークン の場合は API（API Identifier）の ID が含まれます。" cta="用語集を表示" href="/ja/docs/glossary?term=access+token">アクセストークン</Tooltip> は <Tooltip tip="JSON Web Token (JWT): 2 者間でクレームを安全に表現するために使用される標準的な IDトークン 形式（および多くの場合アクセストークン形式）です。" cta="用語集を表示" href="/ja/docs/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, # このトークンの署名を検証する
               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 ドメインは、テナント名、リージョンのサブドメイン (テナントが米国リージョンにあり、2020 年 6 月より前に作成された場合を除く) 、および `.auth0.com` を組み合わせたものです。たとえば、テナント名が `travel0` の場合、Auth0 ドメイン名は `travel0.us.auth0.com` になります。 (テナントが米国にあり、2020 年 6 月より前に作成された場合、ドメイン名は `https://travel0.auth0.com` になります。)

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

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

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