如何通过Azure DevOps REST API正确生成Bearer令牌并用于获取PAT
如何正确生成并使用Azure DevOps REST API的Bearer令牌创建PAT
一、生成Bearer令牌的核心流程
生成PAT的REST API要求使用基于Azure AD OAuth2.0的Bearer令牌(不能用现有PAT替代),需完成完整授权流程:
1. 注册Azure AD应用
- 在Azure门户创建应用注册,设置重定向URI(例如
http://localhost:8080) - 为应用添加API权限:选择「Azure DevOps」,添加
user_impersonation权限,并授予管理员同意
2. 获取授权码
构造授权URL,引导用户登录Azure账号后获取授权码:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/authorize?client_id={你的应用ID}&response_type=code&redirect_uri={你的重定向URI}&response_mode=query&scope=https://app.vssps.visualstudio.com/user_impersonation&state=任意随机字符串
用户登录后,重定向URI会附带code参数,这就是授权码。
3. 交换Bearer令牌
发送POST请求到Azure AD的token端点,用授权码换取access_token(即Bearer令牌):
- 请求地址:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token - 请求头:
Content-Type: application/x-www-form-urlencoded - 请求参数(表单格式):
client_id={你的应用ID} client_secret={你的应用密钥} grant_type=authorization_code code={步骤2获取的授权码} redirect_uri={你的重定向URI} scope=https://app.vssps.visualstudio.com/user_impersonation
返回结果中的access_token就是需要的Bearer令牌。
二、调用PAT生成API
拿到Bearer令牌后,即可调用Azure DevOps的PAT生成接口:
- 请求地址:
POST https://vssps.dev.azure.com/{你的组织名}/_apis/tokens/pats?api-version=7.1-preview.1 - 请求头:
Authorization: Bearer {你的access_token} Content-Type: application/json - 请求体示例(JSON格式):
{ "displayName": "API生成的PAT", "scope": "vso.build_execute vso.code_read", "validTo": "2024-12-31T23:59:59Z" }
接口返回结果中会包含生成的PAT令牌(patToken字段),请务必妥善保存,该值只会返回一次。
三、常见失败原因排查
- 权限问题:确保Azure AD应用的
user_impersonation权限已授予管理员同意 - Scope错误:令牌的scope必须包含
https://app.vssps.visualstudio.com/user_impersonation,否则无权调用PAT生成接口 - 令牌过期:access_token有效期通常为1小时,过期后需要用refresh_token重新获取
- 参数错误:检查租户ID、组织名、应用ID/密钥等参数是否与实际一致
内容的提问来源于stack exchange,提问作者Jagdish Padeliya
相关产品推荐
相关产品推荐

