当前位置: 首页 > 知识库问答 >
问题:

Azure devops rest api承载令牌

常坚
2023-03-14

我在调用rest api时尝试使用承载令牌时遇到一些问题。

我尝试了两种方法,结果相同:

我在azure门户中创建了一个应用注册,并授予它使用devops api进行用户模拟的权限。

我在中创建了一个应用程序https://app.vsaex.visualstudio.com/并授予it项目/团队管理权限。

对于我的代码,我使用了这个(当我使用PAT进行身份验证时有效)

import requests
ADOtoken = 'obtained by microsoft example'
org = 'myorg'
projectName = 'test'
headers = {"Authorization": f"Bearer {ADOtoken}"}
requesturl = f"https://dev.azure.com/{org}/_apis/projects?api-version=6.0"
data  = {
                "name": projectName,
                "description": "description is requred",
                "capabilities": {
                    "versioncontrol": {
                    "sourceControlType": "Git"
                    },
                    "processTemplate": {
                    "templateTypeId": "6b724908-ef14-45cf-84f8-768b5384da45"
                    }
                }
            }
r = requests.post(requesturl, json = data, headers=headers)

我使用以下示例获取令牌:https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-python-webapp

我将范围更改为['https://app.vssps.visualstudio.com/user_impersonation']

我希望得到一个要调试的错误,或者要创建的项目

我得到一个203(重定向),内容是azure devops登录站点

共有1个答案

林波鸿
2023-03-14

在门户上添加api权限。

我的测试代码:

import requests
import json

# get beartoken
beartoken=''

client_id = '<your_clientid>'
client_secret = '<your_secret>'
aadTenantDomain='<your_aadTenantDomain_like_microsoft.onmicrosoft.com>'
token_url = 'https://login.microsoftonline.com/'+aadTenantDomain+'/oauth2/token'
token_data = {
    'grant_type': 'client_credentials',
    'client_id': client_id,
    'client_secret': client_secret,
    'resource':'https://app.vssps.visualstudio.com/',
}
token_r = requests.get(token_url, data=token_data)
d = json.loads(token_r.text)
beartoken= d['access_token']
print(beartoken)

# request devops api for test

url='https://dev.azure.com/jasonp2deploy/deployappwithvirtualapp/_apis/build/builds?api-version=5.0'
body = "{\"previewRun\":false,\"stageToSkip=\": [],\"resources\": [], \"templateParameters\": [], \"variables\": []}"

headers = {
    'Authorization' : 'Bearer '+beartoken
}

r = requests.get(url, data=json.dumps(body), headers=headers)
print(r.status_code)

我的测试结果:

如果你还想使用pat,你可以在下面的帖子中参考我的答案。

如何解决python中azure devop api对象移动的结果

 类似资料:
  • 我正在使用改型2.0在Android上构建一个Bitbucket REST客户端。 就我而言,OAuth2.0提供了“隐式授权”,当用户在提示下登录到他们的帐户时,它立即向客户机提供访问承载令牌。 承载令牌是可用于访问受保护资源的令牌。任何拥有承载令牌的人与其他拥有承载令牌的人一样,都有权访问受保护的资源。(根据IETF的这份文件) 如果我错了,请纠正我,但我认为使用隐式授权,在用户登录到他们的B

  • 如何使用Live PayPal ClientID和密钥从PayPal https://api-M.PayPal.com/v1/oauth2/Token API调用中获得访问/承载令牌。 我在调用Postman中的API之前使用了下面的设置 基本Auth类型。主体tab=x-www-form-urlencoded。grant_type=client_credentials 我得到以下响应时调用以上A

  • 我在做概念验证。我正在使用Azure Active Directory并试图在遗留项目中实现OAuth。 这个项目的一半使用Web表单,另一半直接通过JavaScript在另一个项目中调用WebAPI。 作为一个测试,我通过UseOpenIDConnectauthEntication的AuthorizationCodeReceed通知事件获得承载令牌。我使用以下代码将令牌快速写入调用WebAPI的

  • 当一个人试图使用azure AD承载令牌访问我们的系统时,这个获取和缓存资源令牌的工作流程是不存在的。 所以我的问题是,我如何使用承载令牌来启用它?如何才能像使用OpenIDConnect一样请求额外的资源令牌?是否可以使用ADAL从承载令牌获取授权代码?

  • 我们有一个由Angular网站访问的ServiceStack服务。随机的,我们无法确定它发生的原因或时间,承载令牌正在失效。我们可以看到不接受承载令牌,并显示错误消息。“令牌已失效”。我确信我们没有重新启动servicestack服务,我们仍然在请求中传递原始的承载令牌。我们没有实现任何使承载令牌无效的逻辑。我知道这有点模糊。如果有人能告诉我如何在ServiceStack中解决这个问题。这就是我需

  • 我在用阿斯匹林。网络应用程序 我很困惑。我已经使用JSON网络令牌。我明白这一点。已知经典的 JSON 网络令牌。标头、有效负载、签名、自包含。客户端可以查看索赔数据。 但是不记名令牌是什么呢?不记名令牌也是独立的。我们可以通过不记名令牌访问令牌的数据。客户端看不到索赔数据。 那我们为什么不使用不记名令牌呢?不记名代币不是标准吗?有没有像 JWT 持有者令牌这样的东西? 以及如何在 MVC Web