NocoBase第三方API认证方式:从API Key到OAuth2.0
在现代应用开发中,第三方API集成已成为连接不同系统的核心能力。NocoBase作为极易扩展的无代码/低代码平台,提供了灵活的API认证机制,满足不同场景下的安全访问需求。本文将系统介绍NocoBase支持的两种主流认证方式:API Key(应用程序接口密钥)和OAuth2.0(开放授权2.0),帮助运营人员和开发人员快速掌握集成技巧。
API Key认证:简单高效的访问控制
什么是API Key
API Key是一种通过密钥字符串进行身份验证的机制,适用于服务器间通信或简单的第三方集成场景。在NocoBase中,API Key通过plugin-api-keys插件实现,支持密钥的生成、权限绑定和生命周期管理。
生成与管理API Key
- 启用插件:在NocoBase应用市场中安装API Keys插件,或通过CLI启用:
yarn plugin enable @nocobase/plugin-api-keys - 创建密钥:通过系统设置中的API密钥管理界面,填写名称、过期时间和关联角色,生成唯一Token。核心逻辑由api-keys.ts实现,使用JWT算法签名用户ID和角色信息:
const token = ctx.app.authManager.jwt.sign( { userId: ctx.auth.user.id, roleName: role.name }, { expiresIn: values.expiresIn } ); - 权限控制:通过ACL策略限制API Key的操作范围,默认仅创建者可管理自己的密钥。
使用示例
在HTTP请求中通过Authorization头传递API Key:
curl -H "Authorization: Bearer YOUR_API_KEY" \
http://localhost:13000/api/your-resource:list
客户端SDK调用示例可参考api.request.ts:
const api = new APIClient({
baseURL: 'http://localhost:13000/api',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const response = await api.resource('your-resource').list();
优缺点分析
| 优势 | 局限 |
|---|---|
| 实现简单,无需复杂流程 | 密钥泄露风险高,需定期轮换 |
| 适合服务器间固定通信 | 无法实现细粒度的权限动态调整 |
| 低延迟,无额外网络请求 | 不支持第三方应用授权场景 |
OAuth2.0认证:面向用户的授权框架
什么是OAuth2.0
OAuth2.0是一种行业标准的授权协议,允许第三方应用在不获取用户凭证的情况下,通过令牌(Token)访问受保护资源。NocoBase通过auth模块提供OAuth2.0基础支持,可集成GitHub、Google等主流身份提供商。
配置流程
- 注册应用:在第三方平台(如GitHub)创建OAuth应用,获取Client ID和Client Secret。
- 配置认证策略:修改auth-manager.ts添加OAuth2.0策略:
this.app.authManager.strategies.add('github', { provider: 'oauth2', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', authorizationEndpoint: 'https://github.com/login/oauth/authorize', tokenEndpoint: 'https://github.com/login/oauth/access_token' }); - 用户授权流程:
应用场景
- 第三方登录:集成企业SSO系统,如Azure AD、钉钉等
- 联合身份认证:通过plugin-users实现用户信息同步
- 细粒度权限控制:结合action权限实现动态授权
认证方式选择指南
| 场景 | 推荐认证方式 | 安全级别 | 实现复杂度 |
|---|---|---|---|
| 服务器间定时同步 | API Key | 中 | 低 |
| 前端应用访问API | OAuth2.0 | 高 | 中 |
| 第三方系统集成 | API Key + IP白名单 | 高 | 中 |
| 用户授权第三方应用 | OAuth2.0 | 高 | 高 |
扩展与定制
NocoBase的认证系统基于auth-manager设计,支持自定义认证策略:
- 扩展JWT配置:修改签名算法或添加自定义Claims
- 实现OIDC协议:基于现有OAuth2.0框架扩展OpenID Connect支持
- 多因素认证:结合plugin-verification实现二次验证
通过灵活的插件机制和模块化设计,NocoBase可满足从简单到复杂的各类认证需求,详细开发指南可参考官方文档中的"API认证"章节。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



