使用 Logto Management API 配置你的应用服务
使用 Logto Management API 在你的应用中构建自定义的组织 (Organization) 流程。下面是集成 Management API 的基础设置步骤。如果你已经熟悉这些内容,可以直接跳转到教程。
熟悉设置流程后,你可以探索更多 API,以便根据业务需求定制其余流程。
建立机器对机器 (Machine-to-machine) 连接
Logto 使用机器对机器 (M2M) 认证 (Authentication),安全地将你的后端服务连接到 Logto Management API 端点。 你的后端服务随后可以使用 Management API 处理与组织 (Organization) 相关的任务,例如创建组织 (Organization)、添加或移除成员等。
具体步骤如下:
- 在 Logto 控制台中创建一个机器对机器 (M2M) 应用。
- 从 Logto 获取 M2M 访问令牌 (Access token)。了解更多。
- 从你的后端服务调用 Logto Management API。例如,列出所有组织 (Organizations):
curl \
-X GET https://[tenant_id].logto.app/api/organizations \
-H "Authorization: Bearer $M2M_ACCESS_TOKEN" \
-H "Content-Type: application/json"
保护你的应用服务器
由于终端用户可以自助执行某些组织 (Organization) 操作,请在终端用户和你的应用服务器之间添加授权 (Authorization) 层。服务器应拦截每个请求,验证用户的组织令牌 (Organization token) 及所需权限 (Scopes),只有在验证通过后,才使用服务器持有的 M2M 凭证调用 Management API。
当用户提交组织令牌 (Organization token) 请求某个操作(例如创建组织 (Organization))时,服务器首先验证令牌中的权限 (Scopes)。如果令牌包含必要的权限 (Scope),如 org:create,则授权 (Authorization) 请求,并通过 M2M 流程调用 Logto Management API 创建组织 (Organization)。
如果令牌不包含所需权限 (Scopes),则返回 403 Forbidden 并跳过 M2M 逻辑。这确保了没有相应权限的用户无法创建组织 (Organizations)。
以下是常见的授权 (Authorization) 模式。
使用组织 (Organization) 权限 (Permissions)
首先,确保你已在上一节的组织 (Organization) 模板中定义了组织权限 (Permissions) 和角色 (Roles)。
然后,确保在 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 endpoint
appId: '40fmibayagoo00lj26coc', // 你的 app id
resources: [
'https://my.company.com/api', // 你的全局 API 资源标识符
],
scopes: [
UserScope.Email,
UserScope.Phone,
UserScope.CustomData,
UserScope.Identities,
UserScope.Organizations, // 请求组织令牌 (Organization token)
],
};
这样可以确保在调用 getOrganizationToken(organizationId) 时,客户端 SDK 会请求包含分配给用户的组织权限 (Permissions) 的组织令牌 (Organization token)。你的后端服务随后可以验证该令牌,并根据这些权限 (Permissions) 授权 (Authorization) 后续请求。
关于保护组织级(非 API)权限 (Permissions) 的详细信息,请参阅完整指南。
混合组织级权限 (Permissions) 与 API 级权限 (Permissions)
当你的 API 资源 (API resources) 和权限 (Permissions) 是全局注册的,但角色 (Roles) 在组织 (Organization) 级别定义时适用(你可以在组织模板中将 API 级权限 (Permissions) 分配给组织角色 (Roles))。
实现方式与上一节相同。始终提供组织 ID 并调用 getOrganizationToken(organizationId) 获取组织令牌 (Organization token);否则,组织权限 (Permissions) 不会被包含。
关于保护组织级 API 权限 (Permissions) 的详细信息,请参阅完整指南。