Azure Active Directory获取令牌请求http错误

时间:2017-10-11 05:16:04

标签: python azure-active-directory

我在documentation之后使用Active Directory身份验证库进行python。之前我设法通过Acquire Token with Client Credentials sample获取了access_token:

import adal

RESOURCE_URI = 'https://<mydomain>.crm.dynamics.com'
AUTHORITY_URL = "https://login.microsoftonline.com/<tenant_id>"
CLIENT_ID = 'xxxx'  #application_id
CLIENT_SECRET = 'xxxx'

context = adal.AuthenticationContext(AUTHORITY_URL)
token = context.acquire_token_with_client_credentials(
    RESOURCE_URI,
    CLIENT_ID,
    CLIENT_SECRET)
print token

但是当我尝试Acquire token and Refresh token sample

时收到错误消息
context = adal.AuthenticationContext(AUTHORITY_URL)   
token = context.acquire_token_with_username_password(
    RESOURCE_URI,
    USERNAME,
    PASSWORD,
    CLIENT_ID)

print token

>>> adal.adal_error.AdalError: Get Token request returned http error: 401 and server response: {"error":"invalid_client","error_description":"AADSTS70002: The request body must contain the following parameter: 'client_secret or client_assertion'.........."correlation_id"......}

2 个答案:

答案 0 :(得分:0)

  

adal.adal_error.AdalError:获取令牌请求返回http错误:401和服务器响应:{&#34;错误&#34;:&#34; invalid_client&#34;,&#34; error_description&#34;:& #34; AADSTS70002:请求正文必须包含以下参数:&#39; client_secret或client_assertion&#39; ..........&#34; correlation_id&#34; ......} < / p>

我们可以在Azure,本机或Web应用程序上注册两种应用程序。根据错误消息,您似乎注册了一个自信的应用程序,需要提供客户端密钥来获取访问令牌。

对于此问题,请注册原生应用而非网络应用。此外,应考虑使用资源所有者密码凭证流,因为这可能会泄漏凭据。请参阅以下链接中的流程:

The OAuth 2.0 Authorization Framework - Authorization Grant

答案 1 :(得分:0)

我遇到了同样的错误。 在azure活动目录的“应用程序注册”部分中,我将应用程序注册为网络主机/ api 。 当我将其更改为本地应用时,一切开始正常运行。