跳到主要内容

认证授权

目前 ONES 系统用于认证授权的凭据分为 个人组织 类型:

  • 个人 凭据可被任意 ONES 用户进行 OAuth2 授权,授权后经过授权码所得到的 Token 代表该授权用户。
  • 组织 凭据可被超级管理员/多团队组织管理员/单团队团队管理员授权,创建凭据授权后获取的 Token 代表一个虚拟管理员,可访问组织/团队在 Scope 范围内的所有数据。

同时,ONES 系统对不同组织类型的凭据管理页面位置不同:

  • 单团队组织需团队管理员在 ONES 系统「配置中心」-「团队配置」-「凭据管理」。
  • 多团队组织需组织管理员在 ONES 系统「组织配置」-「组织管理」-「凭据管理」。

凭据管理

个人凭据

凭据管理 页面创建个人凭据需要填写以下信息:

  • 名称:个人凭据名称。
  • 凭据类型:个人。
  • Redirect URI:申请授权码成功后,将重定向到该地址。
  • 范围:选择个人凭据可访问 ONES Open API 的Scope范围。

创建个人凭据后会得到 CLIENT_IDCLIENT_SECRET,开发者需要进行妥善保存。

申请授权码

请求示例:

curl 'https://your-domain/oauth2/authorize?client_id=CLIENT_ID&response_type=code'

接口详细介绍

请求成功后浏览器将跳转至 ONES 系统,如果用户未登录则需要用户登录,如果用户已登录将跳转至同意授权页面,用户同意授权通过后,将重定向至 Redirect URI,并且在 URL 参数中添加 code、state 两个参数。code 在申请访问令牌后将失效,有且只能使用一次。

申请访问令牌

请求示例:

curl -X POST 'https://your-domain/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=CLIENT_ID' \
-d 'client_secret=CLIENT_SECRET' \
-d 'code=CODE' \
-d 'grant_type=authorization_code'

响应示例:

{
"access_token": "CN-NDd...pLW",
"email": "test@ones.bot",
"expires_in": 86400,
"refresh_token": "CN-MDF...TNi",
"scope": "read:testcase:library,write:testcase:library",
"token_type": "Bearer",
"user_id": "CJ...qz"
}

接口详细介绍

注意:access_token 是全局唯一接口调用凭据,调用 Open API 时使用,开发者需要进行妥善保存。

刷新访问令牌

刷新访问令牌后,之前申请的访问令牌和刷新令牌都将失效,同时将返回新的访问令牌、刷新令牌。

请求示例:

curl -X POST 'https://your-domain/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=CLIENT_ID' \
-d 'refresh_token=REFRESH_TOKEN' \
-d 'grant_type=refresh_token'

响应示例:

{
"access_token": "CN-NDd...pLW",
"email": "test@ones.bot",
"expires_in": 86400,
"refresh_token": "CN-MDF...TNi",
"scope": "read:testcase:library,write:testcase:library",
"token_type": "Bearer",
"user_id": "CJ...qz"
}

接口详细介绍

组织凭据

组织凭据支持的 ONES 版本:v6.2.18+

凭据管理 页面创建组织凭据需要以下信息:

  • 名称:组织凭据名称。
  • 凭据类型:组织。
  • 范围:选择组织凭据可访问 ONES Open API 的Scope范围。

创建组织凭据后可直接获得访问令牌(access_token),组织类型的 access_token 暂无过期时间。

注意:access_token 只在新建时展示一次,是全局唯一接口调用凭据,调用 Open API 时使用,开发者需要进行妥善保存。

使用访问令牌

可使用 access_token 访问令牌直接访问 ONES Open API

请求示例:

curl 'https://your-domain/openapi/v2/xxx' -H "Authorization: Bearer <ACCESS_TOKEN>"

获取访问令牌详情

请求示例:

curl "https://your-domain/oauth2/introspect" -H "Authorization: Bearer <ACCESS_TOKEN>"

响应示例:

{
"active": true,
"sub": "CJ...qz",
"scope": "read:testcase:library,write:testcase:library",
"client_id": "3hF...leI",
"token_type": "Bearer",
"exp": 1681889317,
"team_id": "xxx"
}

接口详细介绍

注销访问令牌

注销访问令牌,刷新令牌也将失效。

请求示例:

curl -X POST 'https://your-domain/oauth2/revoke' \
-H 'Content-Type: application/json' \
-d '{
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"access_token": ACCESS_TOKEN
}'

接口详细介绍

常见问题

1. 修改凭据的 Scope范围,已申请的访问令牌 Scope 是否同步变化?

修改凭据的 Scope范围,不会影响已申请的访问令牌 Scope范围。如果需要生效新的 Scope,需重新完成申请访问令牌流程。

2. 删除凭据后,已申请的访问令牌是否会失效?

删除凭据后,已申请的授权码、访问令牌、刷新令牌都将失效。