Logto Management API でアプリサービスをセットアップする
Logto の Management API を利用して、アプリ内でカスタムの 組織フロー を構築できます。以下は Management API を統合するための基本的なセットアップ手順です。すでにご存知の場合は、チュートリアル へ進んでください。
セットアップに慣れたら、他の API も活用して、ビジネスニーズに合わせたフローを構築できます。
マシン間通信 (M2M) 接続の確立
Logto では、マシン間通信 (M2M) 認証 (Authentication) を利用して、バックエンドサービスと Logto Management API エンドポイントを安全に接続します。 バックエンドサービスは Management API を使って、組織の作成、メンバーの追加や削除 など、組織関連のタスクを処理できます。
この手順は以下の通りです:
- Logto コンソールで マシン間通信 (M2M) アプリ を作成します。
- Logto から M2M アクセス トークン (Access token) を取得します。詳細はこちら。
- バックエンドサービスから Logto Management API を呼び出します。例えば、すべての組織を一覧表示する場合:
curl \
-X GET https://[tenant_id].logto.app/api/organizations \
-H "Authorization: Bearer $M2M_ACCESS_TOKEN" \
-H "Content-Type: application/json"
アプリサーバーの保護
エンドユーザーが一部の組織操作をセルフサービスで実行できるため、エンドユーザーとアプリサーバーの間に認可 (Authorization) レイヤーを追加してください。サーバーはすべてのリクエストを仲介し、ユーザーの組織トークン (Organization token) と必要なスコープ (Scope) を検証したうえで、サーバーが保持する M2M 資格情報を使って Management API を呼び出すべきです。
ユーザーが組織トークン (Organization token) を提示してアクション(例:組織の作成)をリクエストした場合、サーバーはまずトークン内のスコープ (Scope) を検証します。トークンに org:create など必要なスコープ (Scope) が含まれていれば、リクエストを認可 (Authorization) し、M2M フロー経由で Logto Management API を呼び出して組織を作成します。
必要なスコープ (Scope) が含まれていない場合は、403 Forbidden を返し、M2M ロジックをスキップします。これにより、適切な権限を持たないユーザーが組織を作成できないようにします。
以下は一般的な認可 (Authorization) パターンです。
組織権限の利用
まず、前のセクション で組織権限とロールを組織テンプレートに定義していることを確認してください。
次に、Logto 設定に UserScope.Organizations(値:urn:logto:organization)が含まれていることを確認します。React SDK の例:
// src/App.js
import { UserScope } from '@logto/react';
const config = {
endpoint: 'https://<tenant-id>.logto.app/', // Logto エンドポイント
appId: '40fmibayagoo00lj26coc', // アプリ ID
resources: [
'https://my.company.com/api', // グローバル API リソース識別子
],
scopes: [
UserScope.Email,
UserScope.Phone,
UserScope.CustomData,
UserScope.Identities,
UserScope.Organizations, // 組織トークン (Organization token) をリクエスト
],
};
これにより、getOrganizationToken(organizationId) を呼び出す際、クライアント SDK はユーザーに割り当てられた組織権限を含む組織トークン (Organization token) をリクエストします。バックエンドサービスはこのトークンを検証し、権限に基づいて後続のリクエストを認可 (Authorization) できます。
組織レベル(非 API)権限の保護については、完全ガイド を参照してください。
組織レベル権限と API レベル権限の混在
API リソースと権限がグローバルに登録されているが、ロールは組織レベルで定義されている場合(API レベルの権限を組織テンプレート内の組織ロールに割り当て可能)、このパターンが該当します。
実装方法は前述のセクションと同じです。常に組織 ID を指定し、getOrganizationToken(organizationId) を呼び出して組織トークン (Organization token) を取得してください。そうしないと、組織権限が含まれません。
組織レベル API 権限の保護については、完全ガイド を参照してください。