認可 (Authorization)
Logto における 認可 (Authorization) とは、認証 (Authentication) 後にユーザーやアプリが何をできるか、つまり各アイデンティティに対してどの API、リソース、アクションが許可されているかを定義します。
Logto は、現代の SaaS や AI アプリ向けに柔軟なトークンベースの認可 (Authorization) を提供します。API リソースをグローバルに、または各組織 (Organization) のコンテキスト内で保護できます。すべての権限は ロールベースのアクセス制御 (RBAC) システムで管理され、組織テンプレート によってマルチテナントアプリにも高度に対応しています。ユーザーが何をできるかを制御するだけでなく、アプリレベルのアクセス制御 を使って、各アプリケーションにサインインできるユーザーも制限できます。
コア概念
- ロールベースのアクセス制御 (RBAC): Logto は RBAC を基盤として、ユーザー、クライアント、サービスへの権限付与を行います。RBAC について詳しくはこちら。
- API リソース: 保護したいバックエンドサービスやエンドポイント(グローバルまたは組織固有)。
- ロール (Role): 権限のグループ(例:管理者、閲覧者、編集者)。
- 権限 (Permission)(スコープ (Scope)): 許可された特定のアクション(例:
read:report、invite:member)。 - 組織 (Organization): アプリケーション内のテナント、ワークスペース、顧客を表します。これは Logto テナント(全体の Logto プロジェクトやインスタンス)とは異なります。
- 組織テンプレート: マルチテナントアプリ向けに、すべての組織で使い回せるロールと権限のセットを定義します。組織テンプレートの仕組みはこちら。
- アクセス トークン / 組織トークン: グローバルまたは組織スコープの権限を含むトークン。
認可 (Authorization) シナリオ
Logto には主に 3 つの認可 (Authorization) パターンがあります。ニーズに合ったシナリオを選択してください:
| シナリオ | 使用するタイミング | トークン種別 | ロール設定方法 | 詳細 |
|---|---|---|---|---|
| グローバル API リソース権限 | Logto テナント全体で共有される API リソースを保護したい場合(組織固有でない) | アクセス トークン | グローバルロール / 権限を割り当てる | グローバル API リソースの保護 |
| 組織(非 API)権限 | 組織固有のアクションや UI 機能、ビジネスロジックを制御したい場合(API 以外) | 組織トークン | アプリ制御用に組織ロール / 権限を割り当てる | 組織(非 API)権限の保護 |
| 組織レベルの API リソース権限 | 特定の組織内でアクセス可能な API リソースを保護したい場合 | 組織トークン | 組織 API 用に組織ロール / 権限を割り当てる | 組織レベルの API リソースの保護 |
Logto は RFC 8707 に従い、OAuth 2.0 認可フローで resource パラメーターを使用して API リソースをモデル化します。これにより、複数の API やマイクロサービスのセキュリティ確保が容易になり、他の標準ベースのシステムとも互換性が保たれます。
これらのパターンは、ユーザーがアプリケーションにサインイン した後 に何ができるかを制御します。特定のアプリケーションにサインインできるかどうか自体を制御したい場合は、アプリレベルのアクセス制御 を利用してください。これはユーザー、ロール、組織、組織ロールに基づく許可ルールでアプリケーションへのアクセスを制限し、上記のトークンベースパターンとは独立して動作します。
カスタムクレームや高度なアクセス制御が必要ですか?カスタムトークンクレーム をご覧ください。
Logto の認可 (Authorization) の仕組み
-
トークンベース: すべてのアクセスは安全に署名されたアクセス トークンによって許可されます。バックエンドでトークンを検証し、権限(スコープ)を強制します。
-
グローバル権限(スコープ)と組織権限(スコープ):
- グローバル 権限(スコープ):Logto テナント全体で API リソースへのアクセスを制御します。
- 組織 権限(スコープ):組織コンテキスト内でビジネスロジック(アプリ機能)や API リソースへのアクセスを制御します。組織権限は、API 以外の機能(UI 要素やワークフローなど)や組織スコープの API エンドポイントにも適用できます。
-
ロールと権限(スコープ): ロールは権限(スコープ)の集合体です。シナリオに応じて、ユーザーやクライアントにグローバルまたは組織単位でロールを割り当てます。
次のステップ
さらに進みたい方は、実践的なガイドを試したり、理解を深めたりしましょう:
きめ細やかなアクセス制御のためのロールと権限をマスターしましょう。
マルチテナントアプリケーション向けに再利用可能なロールと権限のセットアップ方法を学びます。
Logto テナント全体で共有される API をグローバルロールと権限で保護します。
組織ロールで組織固有のアクションや UI 機能を制御します。
特定の組織内でアクセス可能な API を組織ロールで保護します。
バックエンドで Logto トークンを検証し、API を安全に保護する方法を学びます。
ユーザー、ロール、組織、組織ロールを使って各アプリケーションへのサインインを制限します。
高度なアクセス制御シナリオ向けにカスタムクレームを追加する方法を学びます。
ユースケース
実践例や現実的なシナリオをお探しですか?以下のガイドをご覧ください:
RBAC を使った安全な認可 (Authorization) の実例をステップバイステップで紹介します。
マルチテナント SaaS アーキテクチャと実装の包括的なガイドに従いましょう。