如何在python脚本中向Azure DevOps REST API进行身份验证? 我发现有2种方法:
我正在使用第二种方法。遵循了本文档中的步骤: https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops
我编写了此函数,以使用OAuth 2.0对Azure DevOps进行身份验证:
def get_authenticated():
client_id = < my client ID as a string >
state = "user1"
scope = "vso.graph_manage%20vso.identity_manage%20vso.profile_write%20vso.project_manage%20vso.tokenadministration%20vso.tokens"
callback_URL = < Callback URL to my azure devops account >
# Azure DevOps Services authorization endpoint
Auth_URL = "https://app.vssps.visualstudio.com/oauth2/authorize?client_id=" + client_id + "&response_type=Assertion&state=" + state + "&scope=" + scope + "&redirect_uri=" + callback_URL
headers = {'Accept': 'application/json;api-version=1.0'}
print(Auth_URL)
response = requests.get(Auth_URL,headers = headers)
print(response)
print(response.status_code)
print(response.headers['content-type'])
response.raise_for_status()
但是当调用此函数时,我得到的输出是:
<Response [203]>
203
text/html; charset=utf-8
身份验证URL是正确的,因为当我尝试在浏览器中访问相同的URL时,它会成功重定向到表单以输入azure用户凭据。
该脚本的预期行为是,当请求auth_url时,Azure DevOps Services应要求用户进行授权。我认为应该通过在终端/通过浏览器提示输入用户名和密码来完成。
我对python脚本和REST API完全陌生。 有人可以通过指出我的代码中的错误或指出一些示例来帮助我吗?
答案 0 :(得分:0)
http错误203表示返回的元信息不是来自带有对象副本的服务器的对象的确定集,而是来自私有覆盖的网络。在您的代码中,您添加了headers = {'Accept': 'application/json;api-version=1.0'}
,但实际上内容类型应该为application/x-www-form-urlencoded
。
您可以使用某些OAuth2库(用于python)对Azure DevOps REST API进行身份验证,例如OAuthLib。其中包括世俗样本。
此外,您可以参考以下主题,希望对您有所帮助。