1 用户

December 10, 2021 · View on GitHub

本文档描述 认证和授权 的相关接口。

认证包括两大类:

  • 普通用户,使用用户名和密码登录
  • token

API请求时需要将 会话密钥 放入Header 的 "Authorization"头 中,当前有如下形式:

  • Session Key:形式为 "Authorization: Session {session_key}", 比如: "Authorization: Session sxddxefda8"
  • Token:形式为 "Authorization: Token {token}", 比如: "Authorization: Token daalkfjdkx"

当前,所有的资源被划分为如下三个 scope:

  • Product:产品线资源,比如产品线的转发规则
  • Support:导出类资源, 用于BFE数据面模块从API-Server导出所需要的配置
  • System: 全部的权限,包括全局配置(比如 BFECluster)、产品线资源和导出类资源

对于普通用户和token都会设定可访问资源的scope,只能访问 scope 内资源

  • 如果设定的scope为Product,还需要进一步校验是否具有某个产品线的权限

1 用户

1.1 创建用户

基本信息

项目说明
含义创建用户
端点/auth/users
版本v1
methodPOST-

输入参数

Body 参数

参数名类型参数含义必填补充描述
user_namestring用户名Y
passwordstring用户密码Y必填
is_adminbool是否是系统管理员Y如果是,就是有 System 的权限,不然就是 Product的权限

HTTP BODY中参数示例

{
	"user_name": "user_demo",
	"password": "password@baidu.com",
	"is_admin": true
}

返回数据(Data内容)

1.2 删除用户

基本信息

项目说明
含义删除用户
端点/auth/users/{user_name}
版本v1
动作DELETE-

输入参数

URL 参数

参数名类型参数含义必填补充描述
user_namestring待删除的用户名Y-

返回数据(Data内容)

1.3 重置用户密码

基本信息

项目说明
含义重置用户密码
端点/auth/users/{user_name}/passwd
版本v1
动作PATCH-

输入参数

URL 参数

参数名类型参数含义必填补充描述
user_namestring待修改密码的用户名Y-

Body 参数

参数名类型参数含义必填补充描述
old_passwordstring旧的用户密码N当被修改的用户为当前登录用户,需要填入旧密码
passwordstring用户新密码Y-

HTTP BODY中参数示例

{
	"old_password": "manager2123@$"
	"password": "manager2123@$"
}

返回数据(Data内容)

1.4 获取用户列表

基本信息

项目说明
含义查看用户列表
端点/auth/users
版本v1
动作GET-

输入参数

返回数据(Data内容)

数组,每个元素为一个用户

成功返回数据示例

[
    {
        "user_name": "user_demo1",
        "is_admin": true
    },
    {
        "user_name": "user_demo",
        "is_admin": false
    }
]

1.5 设置用户是否具有管理员权限

基本信息

项目说明
含义设置用户是否有管理员权限
端点/auth/users/{user_name}/is_admin
版本v1
动作PATCH-

输入参数

URL 参数

参数名类型参数含义必填补充描述
user_namestring待修改权限的用户的用户名Y-

Body 参数

参数名类型参数含义必填补充描述
is_adminbool是否为系统管理员Y系统管理员有System(所有)的权限

HTTP BODY中参数示例

{
	"is_admin": true
}

返回数据(Data内容)

1.6 为用户增加某个产品线的授权

基本信息

项目说明
含义为用户增加某个产品线的授权
端点/auth/users/{user_name}/products/{product_name}
版本v1
methodPOST-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名Y-
user_namestring用户名Y-

返回数据(Data内容)

1.7 对用户取消某个产品线的授权

基本信息

项目说明
含义对用户取消某个产品线的授权
端点/auth/users/{user_name}/products/{product_name}
版本v1
methodDELETE-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名Y-
user_namestring用户名Y-

返回数据(Data内容)

1.8 获取对指定产品线有权限的用户列表

基本信息

项目说明
含义获取对指定产品线有权限的用户列表
端点/auth/users/actions/search-by-product/{product_name}
版本v1
动作GET-

输入参数

URL 参数

参数名类型参数含义必填补充描述
product_namestring产品线名Y-

返回数据(Data内容)

数组,每个元素为一个用户

成功返回数据示例

[
    {
        "user_name": "user_demo",
        "is_admin": false
    }
]

2 session key

2.1 使用账号名密码创建session key

基本信息

项目说明
含义使用账号密码得到session key(可用来登录)
端点/auth/session-keys
版本v1
methodPOST-

输入参数

Body 参数

参数名类型参数含义必填补充描述
user_namestring用户名Y
passwordstring用户密码Y-

HTTP BODY中参数示例

{
	"user_name": "manager2",
	"password": "manager2123@$"
}

返回数据(Data内容)

参数名类型参数含义补充描述
session_keystring会话密钥在后续请求中需要在Header中带上该值,格式为 "Authorization: Session iMQW0z5ZwK_6FnPPT7Xj"
user_namestring用户名
is_adminbool是否是系统管理员如果是,就是有 System 的权限

成功返回数据示例

{
    "user_name": "user_demo",
    "session_key": "iMQW0z5ZwK_6FnPPT7Xj",
    "is_admin": false
}

2.2 删除 session key

基本信息

项目说明
含义删除 session key
端点/auth/session-keys/{session_key}
版本v1
动作DELETE-

输入参数

URL 参数

参数名类型参数含义必填补充描述
session_keystring待删除的session keyY-

返回数据(Data内容)

3 Token

3.1 创建Token

基本信息

项目说明
含义创建Token(同时完成产品线绑定)
端点/auth/tokens
版本v1
methodPOST-

输入参数

Body 参数

参数名类型参数含义必填补充描述
namestringtoken名字Yname必须全局唯一
scopestringscopeY只能指定一个scope
product_namestring产品线名Y如果scope 为 Product,必须且只能绑定一个产品线

HTTP BODY中参数示例

{
	"name": "token_demo",
	"scope": "Product",
	"product_name": "product_demo"
}

返回数据(Data内容)

参数名类型参数含义补充描述
tokenstring在后续请求中需要在Header中带上该值,格式为 "Authorization: Token Px2szn6R1HQo-WRSIJyt"

成功返回数据示例

{
    "token": "Px2szn6R1HQo-WRSIJyt"
}

3.2 删除Token

基本信息

项目说明
含义删除token
端点/auth/tokens/{token_name}
版本v1
动作DELETE-

输入参数

URL 参数

参数名类型参数含义必填补充描述
token_namestring待删除的token nameY-

返回数据(Data内容)

3.3 查看Token详情

基本信息

项目说明
含义查看Token详情
端点/auth/tokens/{token_name}
版本v1
动作GET-

输入参数

URL 参数

参数名类型参数含义必填补充描述
token_namestringtoken nameY-

返回数据(Data内容)

| 参数名 | 类型 |参数含义 | 补充描述 | | - | - | - | - | - | | name | string | token名字 | | | product_name | string | 产品线名 | | | token | string | token的值 | | | scope | string | scope | - |

成功返回数据示例

{
    "name": "token_demo",
    "product_name": "product_demo",
    "token": "Xim4h3tR_Gp7o4h",
    "scope": "Product"
}

3.4 查看Token列表

基本信息

项目说明
含义查看Token列表
端点/auth/tokens
版本v1
动作GET-

输入参数

返回数据(Data内容)

数组,每个元素为Token (详见“查看Token详情”)

成功返回数据示例

[
    {
        "name": "token_demo",
        "product_name": "product_demo",
        "token": "Xim4h3tR_Gp7o4h",
        "scope": "Product"
    }
]

3.5 获取对指定产品线有权限的Token列表

基本信息

项目说明
含义获取对指定产品线有权限的Token列表
端点/auth/tokens/actions/search-by-product/{product_name}
版本v1
动作GET-

输入参数

URL 参数

参数名类型参数含义必填补充描述
product_namestring产品线名Y-

返回数据(Data内容)

数组,每个元素为一个token对象(详见“查看Token详情”)

成功返回数据示例

[
    {
        "name": "token_demo",
        "token": "Xim4h3tR_Gp7o4h",
        "scope": "Proudct"
    }
]