Python请求 - Azure图形API身份验证

2024-04-20 07:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python请求库访问azuread图形API。我的步骤是首先得到授权码。然后,使用授权代码,请求访问令牌/刷新令牌,最后查询API。在

当我通过浏览器时,我可以得到我的授权码。我把它复制过来以获取访问令牌。但是,对于Python脚本,我无法做到这一点。我被困在获取授权码的地方。在

我的脚本返回一个响应代码200,但是响应头不包括该字段。我本以为带有代码的新URL会出现在响应头中。我也希望响应代码是301。在

有人知道为什么我的响应头没有身份验证码吗?另外,对于auth代码,我如何提取它,然后使用Python获取访问/刷新令牌?在

我的代码如下:

import requests

s = requests.Session()
s.auth = (USERNAME, PASSWORD)

# Authorize URL
authorize_url = 'https://login.microsoftonline.com/%s/oauth2/authorize' % TENANT_ID
# Token endpoint.
token_url = 'https://login.microsoftonline.com/%s/oauth2/token' % TENANT_ID

payload = { 'response_type': 'code',
            'client_id': CLIENT_ID,
            'redirect_uri': REDIRECT_URI
          }

request = s.get(authorize_url, json=payload, allow_redirects=True)
print request.headers

Tags: 代码https脚本comauthapiidurl
2条回答

看起来您是通过python请求使用Authorization Code Grant Flow实现的。如流程所示,authorize_url请求的响应将重定向到广告租户的SSO页面。用户登录后,它将重定向到redirect_uri中设置的位置,其中code作为URL参数。E、 G.http://localhost/?code=AAABAAAAiL...
而且您的代码似乎不能简单地显示允许JavaScript的html页面,因此它不会重定向到页面上的登录。在

所以您可以参考@theadriangreen的建议,用pythonweb服务器应用程序实现。在

否则,可以参考Microsoft Azure Active Directory Authentication Library (ADAL) for Python,这是一个从AD获取访问令牌的python包,可以很容易地集成到python应用程序中。在

这篇博客文章展示了如何使用Python对azurerestapi进行正确的身份验证:http://blogs.msdn.com/b/shwetasblogs/archive/2015/10/21/authentication-with-azure-ad-for-azure-resource-manager-the-multitenant-app-approach.aspx。MSDN文档不是Python特有的,在这里:https://msdn.microsoft.com/en-us/library/azure/dn790557.aspx。在

相关问题 更多 >