权限 SDK
用 AIDC 自己的账号体系做应用的登录、身份、角色与分享——不必自己写登录页、不必自己存用户。
import { auth } from "/developer/sdk/v1/aidc.js";
登录与身份
Nexus 客户应用(/nexus/<cellId>/apps/<应用>)打开前,平台已经按会话把关:没登录跳 AIDC 登录页、登录后回到应用;不是这家公司的人(也没有被分享)看到 403。访客身份随应用票据下发,服务端按它裁决每一次读写——应用自己不用、也不能伪造身份。
const v = auth.viewer(); // 同步读:{ name: "张三", role: "member", shared: false }(页面注入,用来显示)
const me = await auth.me(); // 服务端确认:账号、公司、角色、应用 / 通道 / 版本,以及语义层权限
// me.permissions = { read: [可读类型], actions: [能执行的 Action], write: [可直接写的类型], share: 能否分享 }
if (auth.can(me, { action: "production.flag_issue" })) showFlagButton();
角色
| 角色 | 谁 | 能做什么 |
|---|---|---|
developer |
本公司开发者(持 developer License 的账号、公司管理员、AIDC 平台员工) | 看全部;定义语义;直接改数据;分享;test 通道 |
member |
本公司成员(持 member License 或公司账号) | 看清单登记的类型;执行 Action |
editor |
经「指定账号」分享、角色为可改的人(可以是别家公司的人) | 同 member |
viewer |
只读分享、公开链接的访客 | 只看 |
anonymous |
AIDC 官方公开应用的访客 | 只看公开数据 |
应用清单可以把应用收紧到只有开发者和被分享的人:
{ "auth": { "access": "restricted" } }
缺省 company:本公司成员都能打开。Action 自己也可以限定角色(roles,见语义 SDK)。
只读访客想修改时:auth.login() 在新窗口打开 AIDC 登录页,登录后回到应用(沙箱里的应用不能跳转顶层页面)。
分享
// 开发者:分享当前应用
await auth.share({ audience: "company", role: "editor" }); // 本公司全员(restricted 应用靠它对全员开放)
await auth.share({ audience: "users", account: "li.si@example.com", role: "editor", expiresInDays: 30 }); // 指定账号,可跨公司
const { url } = await auth.share({ audience: "public" }); // 公开链接:持链接的任何人,只读
const list = await auth.shares(); // 当前应用的分享(公开链接只显示前缀)
await auth.revoke(list[0].id); // 撤销:链接 / 授权立即失效
- 公开链接只读,完整地址只在创建时返回一次(库里只存哈希)。链接打开的是应用 production 通道的当前版本,不需要登录;想修改要登录并被分享为 editor。分享的是真实数据,发之前确认它可以对外。
- company / users 对同一对象再分享 = 改角色与有效期(幂等);public 每次一条新链接。
- 每次分享、撤销都进审计(ActionLog)与日志 SDK(
kind: share)。
aidc share tj8100-live --user li.si@example.com --role editor --days 30
aidc share tj8100-live --public
aidc share list tj8100-live
aidc share revoke <分享 id>
票据
浏览器 SDK 自动带票据、自动续期:客户应用的票据 8 小时有效,快到期时凭当前票据续一张(过期 24 小时内也能续,服务端会复核账号仍有权访问、分享仍然有效)。所以工厂大屏这种一直开着的看板不会过夜就断。
API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/developer/auth/me |
我是谁、什么角色、语义层权限 |
| GET / POST | /api/v1/developer/shares |
分享列表 / 分享(开发者) |
| DELETE | /api/v1/developer/shares/{id} |
撤销 |
| GET | /nexus/s/{令牌} |
公开链接落地页(只读) |
本页由 developer/docs/auth.md 生成 · Markdown 原文 · llms.txt