认证授权
目前 ONES 系统用于认证授权的凭据分为 个人
和 组织
类型:
个人
凭据可被任意 ONES 用户进行 OAuth2 授权,授权后经过授权码所得到的 Token 代表该授权用户。组织
凭据可被超级管理员/多团队组织管理员/单团队团队管理员授权,创建凭据授权后获取的 Token 代表一个虚拟管理员,可访问组织/团队在Scope
范围内的所有数据。
同时,ONES 系统对不同组织类型的凭据管理页面位置不同:
- 单团队组织需团队管理员在 ONES 系统「配置中心」-「团队配置」-「凭据管理」。
- 多团队组织需组织管理员在 ONES 系统「组织配置」-「组织管理」-「凭据管理」。
凭据管理
个人凭据
在 凭据管理
页面创建个人凭据需要填写以下信息:
- 名称:个人凭据名称。
- 凭据类型:个人。
- Redirect URI:申请授权码成功后,将重定向到该地址。
- 范围:选择个人凭据可访问 ONES Open API 的
Scope
范围。
创建个人凭据后会得到 CLIENT_ID
和 CLIENT_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. 删除凭据后,已申请的访问令牌是否会失效?
删除凭据后,已申请的授权码、访问令牌、刷新令牌都将失效。