You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OneAuth/doc/api.md

12 KiB

VBase API 文档

概述

VBase 是一个多租户身份认证与访问管理(IAM)系统支持用户管理、组织管理、RBAC权限控制和OAuth2.0服务。

基础信息

  • 基础URL: https://api.example.com
  • 请求格式: application/json
  • 响应格式: application/json
  • 认证方式: Bearer Token (JWT)

通用响应格式

{
  "code": 200,
  "message": "success",
  "data": {}
}

错误响应

{
  "code": 400,
  "message": "error message",
  "data": null
}

认证相关

用户登录

POST /auth/login

用户登录获取访问令牌。

请求参数

字段 类型 必填 说明
username string 用户名/邮箱/手机号
password string 密码
remember bool 记住登录

响应示例

{
  "code": 200,
  "data": {
    "access_token": "eyJhbGciOiJIUzI1NiIs...",
    "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
    "token_type": "Bearer",
    "expires_in": 3600,
    "user": {
      "id": "user-id",
      "username": "admin",
      "nickname": "管理员",
      "email": "admin@example.com",
      "avatar": "https://..."
    }
  }
}

用户注册

POST /auth/register

注册新用户。

请求参数

字段 类型 必填 说明
username string 用户名(2-50字符)
password string 密码(至少8位)
email string 邮箱
phone string 手机号
nickname string 昵称

刷新Token

POST /auth/refresh

使用刷新令牌获取新的访问令牌。

请求参数

字段 类型 必填 说明
refresh_token string 刷新令牌

用户登出

POST /auth/logout

用户登出使当前Token失效。

请求头

  • Authorization: Bearer {access_token}

支持的第三方登录提供商

GET /auth/providers

获取系统支持的第三方登录提供商列表。

响应示例

{
  "code": 200,
  "data": [
    {
      "name": "google",
      "display_name": "Google",
      "icon": "google",
      "enabled": true
    },
    {
      "name": "github",
      "display_name": "GitHub",
      "icon": "github",
      "enabled": true
    }
  ]
}

第三方登录授权

GET /auth/authorize/thirdparty

获取第三方登录授权URL。

请求参数

字段 类型 必填 说明
provider string 提供商: google/github/wechat
redirect string 登录成功后重定向地址
bind_mode bool 是否为绑定模式

响应示例

{
  "code": 200,
  "data": {
    "auth_url": "https://github.com/login/oauth/authorize?...",
    "state": "random-state-string"
  }
}

第三方登录回调

GET /auth/callback/{provider}

处理第三方登录回调。

路径参数

  • provider: 提供商名称

查询参数

  • code: 授权码
  • state: 状态值

响应示例(已绑定)

{
  "code": 200,
  "data": {
    "need_bind": false,
    "access_token": "eyJhbGciOiJIUzI1NiIs...",
    "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
    "token_type": "Bearer",
    "expires_in": 3600,
    "user": {...}
  }
}

响应示例(未绑定)

{
  "code": 200,
  "data": {
    "need_bind": true,
    "provider": "github",
    "provider_id": "12345",
    "auth_url": "/auth/bind?token=xxx"
  }
}

绑定第三方账号

POST /auth/bind

将第三方账号绑定到已有账号。

请求参数

字段 类型 必填 说明
temp_token string 临时绑定令牌
username string 用户名/邮箱/手机号
password string 密码

当前用户

获取当前用户信息

GET /me

获取当前登录用户的信息。

请求头

  • Authorization: Bearer {access_token}

响应示例

{
  "code": 200,
  "data": {
    "id": "user-id",
    "username": "admin",
    "nickname": "管理员",
    "email": "admin@example.com",
    "avatar": "https://...",
    "status": 1,
    "email_verified": true
  }
}

更新当前用户信息

PATCH /me

更新当前用户的基本信息。

请求参数

字段 类型 必填 说明
nickname string 昵称
avatar string 头像URL
email string 邮箱

修改密码

POST /me/change-password

修改当前用户密码。

请求参数

字段 类型 必填 说明
old_password string 旧密码
new_password string 新密码(至少8位)

获取第三方绑定列表

GET /me/bindings

获取当前用户绑定的第三方账号列表。

响应示例

{
  "code": 200,
  "data": [
    {
      "provider": "github",
      "provider_name": "GitHub User",
      "avatar": "https://...",
      "email": "user@example.com",
      "created_at": "2024-01-01 10:00:00"
    }
  ]
}

解绑第三方账号

DELETE /me/bindings/{provider}

解除指定提供商的账号绑定。

路径参数

  • provider: 提供商名称 (google/github/wechat)

用户管理

用户列表

GET /users

获取用户列表(需要权限)。

请求参数

字段 类型 必填 说明
page int 页码默认1
page_size int 每页数量默认10
keyword string 搜索关键词
status int 状态筛选

响应示例

{
  "code": 200,
  "data": {
    "items": [...],
    "total": 100,
    "page": 1,
    "page_size": 10,
    "total_pages": 10
  }
}

创建用户

POST /users

创建新用户(需要权限)。

请求参数

字段 类型 必填 说明
username string 用户名
password string 密码
nickname string 昵称
email string 邮箱
phone string 手机号
status int 状态

获取用户详情

GET /users/{user_id}

获取指定用户的详细信息。

路径参数

  • user_id: 用户ID

更新用户

PATCH /users/{user_id}

更新指定用户的信息。

路径参数

  • user_id: 用户ID

请求参数

字段 类型 必填 说明
nickname string 昵称
avatar string 头像
email string 邮箱
phone string 手机号
status int 状态

删除用户

DELETE /users/{user_id}

删除指定用户(软删除)。


更新用户状态

PATCH /users/{user_id}/status

更新用户状态。

请求参数

字段 类型 必填 说明
status int 0:禁用 1:正常 2:未激活

组织管理

组织列表

GET /orgs

获取当前用户的组织列表。

请求参数

字段 类型 必填 说明
page int 页码
page_size int 每页数量
keyword string 搜索关键词

响应示例

{
  "code": 200,
  "data": {
    "items": [
      {
        "id": "org-id",
        "name": "技术部",
        "code": "tech",
        "owner_id": "user-id",
        "path": "/tech",
        "level": 0,
        "status": 1,
        "my_roles": ["admin"],
        "my_status": 1
      }
    ],
    "total": 10
  }
}

创建组织

POST /orgs

创建新组织。

请求参数

字段 类型 必填 说明
name string 组织名称
code string 组织编码(唯一)
parent_id string 父组织ID
description string 描述
max_members int 最大成员数

获取组织详情

GET /orgs/{org_id}

获取组织详细信息。


更新组织

PATCH /orgs/{org_id}

更新组织信息(仅所有者)。


删除组织

DELETE /orgs/{org_id}

删除组织(仅所有者,需无子组织)。


组织树

GET /orgs/tree

获取当前用户的组织树结构。

响应示例

{
  "code": 200,
  "data": [
    {
      "id": "org-id",
      "name": "总公司",
      "children": [
        {
          "id": "sub-org-id",
          "name": "技术部"
        }
      ]
    }
  ]
}

组织成员列表

GET /orgs/{org_id}/members

获取组织成员列表。

请求参数

字段 类型 必填 说明
page int 页码
page_size int 每页数量
status int 状态筛选

OAuth2.0 服务端

授权端点

GET /oauth/authorize

OAuth2.0 授权端点,获取授权码。

请求参数

字段 类型 必填 说明
response_type string code/token
client_id string 客户端ID
redirect_uri string 回调地址
scope string 权限范围
state string CSRF防护
code_challenge string PKCE挑战码
code_challenge_method string S256/plain

令牌端点

POST /oauth/token

OAuth2.0 令牌端点,交换授权码获取访问令牌。

请求参数

字段 类型 必填 说明
grant_type string authorization_code/refresh_token/client_credentials
code string 条件 授权码
redirect_uri string 条件 回调地址
client_id string 客户端ID
client_secret string 客户端密钥
refresh_token string 条件 刷新令牌
code_verifier string 条件 PKCE验证器

撤销令牌

POST /oauth/revoke

撤销访问令牌或刷新令牌。


令牌内省

POST /oauth/introspect

查询令牌信息RFC 7662


用户信息

GET /oauth/userinfo

OIDC 用户信息端点。


OIDC 发现文档

GET /.well-known/openid-configuration

获取 OIDC 配置信息。


JWKS

GET /oauth/jwks

获取 JWT 签名公钥。


OAuth 客户端管理

客户端列表

GET /oauth/clients

获取 OAuth 客户端列表。


创建客户端

POST /oauth/clients

创建新的 OAuth 客户端。

请求参数

字段 类型 必填 说明
name string 应用名称
description string 描述
redirect_uris []string 回调地址列表
grant_types []string 授权类型
allowed_scopes []string 允许的范围

响应示例

{
  "code": 200,
  "data": {
    "id": "client-id",
    "name": "My App",
    "client_id": "abc123...",
    "client_secret": "secret...",
    "redirect_uris": ["https://app.com/callback"],
    "grant_types": ["authorization_code", "refresh_token"]
  }
}

获取客户端详情

GET /oauth/clients/{client_id}

获取 OAuth 客户端详情。


更新客户端

PATCH /oauth/clients/{client_id}

更新 OAuth 客户端信息。


删除客户端

DELETE /oauth/clients/{client_id}

删除 OAuth 客户端。


重新生成密钥

POST /oauth/clients/{client_id}/regenerate-secret

重新生成客户端密钥。


请求头说明

认证头

Authorization: Bearer {access_token}

组织上下文

X-Org-ID: {organization_id}

用于指定当前操作的组织上下文。


状态码说明

状态码 说明
200 成功
400 请求参数错误
401 未认证
403 无权限
404 资源不存在
429 请求过于频繁
500 服务器内部错误