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

# 組織のカスタム開発

> Auth0の組織に使用するActionsとSDKについて説明します。

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

<Card title="利用可能性はAuth0プランによって異なる">
  この機能が利用できるかどうかは、ご利用のAuth0プラン（または契約）によります。詳細については、「[価格設定](https://auth0.com/pricing)」をお読みください。
</Card>

## 拡張性

組織は拡張ポイントに対応しているため、組織メタデータにプロパティーを定義して、そのデータを[Actions](/docs/ja-jp/customize/actions)に反映することができます。これにより、各顧客またはアプリケーションのために機能をカスタマイズできます。たとえば、組織のメタデータに特定の顧客のサブスクリプションプラン情報を保管しておくと、カスタムロジックをActionsで実行することができます。

### アクションのイベントオブジェクト

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

アクション内で`イベント`オブジェクトを使用してトークンの内容を変更すると、すべてのルールの実行が終わった後でトークンに反映されます。

## SDK

メンバーが自分の組織を独自に管理できるように、メンバーにロールを割り当てて、APIやSDKを用いてプロダクトにダッシュボードを作成することができます。管理者はシングルサインオン（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=single-sign-on" tip="シングルサインオン（SSO）: ユーザーが1つのアプリケーションにログインした後、そのユーザーを他のアプリケーションに自動的にログインさせるサービス。" cta="用語集の表示">SSO</Tooltip>）を構成したり、ユーザーを組織に招待したり、メンバーを組織に割り当てたり、メンバーに役割を割り当てたりできます。

SDKを利用して組織に実行すると良いタスクには、以下のような例があります。

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

  一般に、トークンの検証には組織IDを使用することが推奨されます。ただし、組織名の方が適している状況では、組織名を使用してかまいません。トークンの検証に組織名を使用をした場合の影響については、「[Authentication APIで組織名を使用する](/docs/ja-jp/manage-users/organizations/configure-organizations/use-org-name-authentication-api)」をお読みください。
</Callout>

### ユーザーのログイン先に特定の組織を指定したい

新しいクライアントを定義する際に、組織IDを組織パラメーターに渡します。次にコールバック時に、IDトークンで返された組織が`/authorize`要求で送信された組織と同じであることを確認します。そのためには、`org_id`クレームを`exp`や`nonce`などの他のクレームが検証されたのと同じ方法で検証します。

詳細については、以下をお読みください。

* [認可コードフローを使用してログインを追加する](/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を使った認可コードフローでログインを追加する](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/add-login-using-the-authorization-code-flow-with-pkce)
* [PKCEを使った認可コードフローで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)
* [フォーム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)

### 独自のアプリケーションを使用して、認証ユーザーのログイン先組織を取得したい

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

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

### 独自のAPIを使用して、アクセストークンが発行された組織を取得したい

ユーザーが組織を使用して認証され、オーディエンスが指定された場合、アクセストークンは<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>になり、ユーザーがログインした組織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

    // Retrieve the organization ID value from the decoded token
    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>

## もっと詳しく

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