【问题标题】:Azure Active Directory get token request http errorAzure Active Directory 获取令牌请求 http 错误
【发布时间】:2017-10-11 05:16:04
【问题描述】:

documentation 之后,我正在为 python 使用 Active Directory 身份验证库。早些时候我设法通过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"......}

【问题讨论】:

    标签: python azure-active-directory


    【解决方案1】:

    adal.adal_error.AdalError: Get Token request returned http error: 401 and server response: {"error":"invalid_client","error_description":"AADSTS70002: 请求正文必须包含以下参数:'client_secret 或 client_assertion '............“correlation_id”......}

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

    对于这个问题,请注册一个原生应用而不是网络应用。还应考虑谨慎使用资源所有者密码凭证流程,因为这可能会泄露凭证。请参阅以下链接中的流程:

    The OAuth 2.0 Authorization Framework - Authorization Grant

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误。 在 azure Active Directory 的应用注册部分,我将应用注册为 web host/api。 当我将其更改为 native app 时,一切都开始正常工作了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-17
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        相关资源
        最近更新 更多