IWish Auth开发者文档
V1 Alpha GitHub

SDK API Reference

TypeScript 和 Python SDK 0.3 稳定接口

SDK 0.3 参考

SDK 0.3 负责登录、授权码交换、App Session 解析、身份与公共上下文读取、登出和 Webhook 验签。它不判断业务 App 的本地角色或权限。

TypeScript Client

  • exchangeAuthorizationCode(request):服务端使用 Client Secret 与 PKCE verifier 交换一次性 code。
  • getAppSession({ forceRefresh? }):解析 opaque App Session 0.3。
  • getIdentity():读取稳定 IWish Auth 用户身份。
  • getEmployeeContext():读取飞书员工、部门、岗位、上级和在职状态。
  • getClientAssignments():读取当前有效客户项目职责。
  • revokeAppSession():撤销当前 App session。

checkPermissioncheckPermissionsBatchcheckUserPermission 已退出公开业务授权契约,调用会返回 410 application_owned_authorization。新代码不得依赖这些方法。

Next.js Adapter

createIWishAuth(options) 提供 beginLoginhandleCallbacklogoutgetSessionrequireAuthrequireAppAccessrequireOrganizationgetClientAssignments。受保护路由先调用 requireAppAccess,再使用 session.user.id 查询 App 本地成员并执行本地授权。

const session = await auth.requireAppAccess(request);
const member = await members.requireActive(session.user.id);
await permissions.require(member.id, "report.read");

requirePermission 仅保留为明确失败的迁移护栏,不是可用授权 API。

Express Adapter

createIWishExpressAuth(options) 提供 requireAuth()requireAppAccess()requireOrganization() middleware。成功后把 { context, token } 写入 request.iwishAuth。随后调用业务 App 自己的成员与权限 middleware。不要从浏览器 Header 接收角色。

Python 与 FastAPI

Python Client 提供 exchange_authorization_codeget_app_sessionget_identityget_employee_contextget_client_assignmentsrevoke_app_session。FastAPI Adapter 提供 logincallbacklogoutget_sessionrequire_authrequire_app_accessrequire_organizationget_client_assignments

check_permissioncheck_permissions_batchcheck_user_permissionrequire_permission 同样只返回 410 迁移错误。

App Session 0.3

稳定字段为:sessionVersion="0.3"authorizationDomain="application"sessionuseremployeeclientAssignmentsorganizationappapp.authorizationModeapplication_owned。响应中不存在业务 rolespermissionsmatchedRoles;SDK 发现旧结构或跨 App session 时必须 fail closed。

错误处理

401 表示没有有效统一身份,通常跳转登录;403 表示 Auth 层用户、员工、组织、App 或 OAuth Client 不可用,不应循环登录;410 application_owned_authorization 表示仍在调用已退出的中央业务权限 API;429 应按 Retry-After 重试;5xx 应记录 request ID 并默认拒绝。业务 App 本地成员或权限不足统一由 App 返回自己的 403 错误码。

Webhook 使用 verifyIWishWebhookverify_iwish_webhook 校验时间戳、HMAC-SHA256 签名和事件 ID。所有 Client Secret、Service Token 和 Webhook Secret 仅放在服务端 Secret 管理中。