Azure ADAL for Python-acquire_token_with_username_password方法面临问题

Azure ADAL for Python-acquire_token_with_username_password方法面临问题,python,azure,adal,azure-sdk-python,Python,Azure,Adal,Azure Sdk Python,我正在尝试使用azure用户id和密码检索访问令牌。 最初,我尝试使用以下python代码块 import adal context = adal.AuthenticationContext(AUTHORITY) token = context.acquire_token_with_client_credentials( "https://management.azure.com/", CLIENT_ID, CLIENT_SECRET) 这是返回令牌而没有任何问题。 下

我正在尝试使用azure用户id和密码检索访问令牌。 最初,我尝试使用以下python代码块

import adal
context = adal.AuthenticationContext(AUTHORITY)
token = context.acquire_token_with_client_credentials(
    "https://management.azure.com/",
    CLIENT_ID,
    CLIENT_SECRET)
这是返回令牌而没有任何问题。 下面是一个使用用户名和密码检索令牌的示例,代码块如下

token2 = context.acquire_token_with_username_password("https://management.azure.com/",USER_NAME,PASSWORD,CLIENT_ID)
在这种情况下,不返回任何令牌,而是返回以下响应

File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\authentication_context.py", line 145, in acquire_token_with_username_password
    return self._acquire_token(token_func)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\authentication_context.py", line 109, in _acquire_token
    return token_func(self)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\authentication_context.py", line 143, in token_func
    return token_request.get_token_with_username_password(username, password)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\token_request.py", line 286, in get_token_with_username_password
    token = self._get_token_username_password_federated(username, password)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\token_request.py", line 252, in _get_token_username_password_federated
    username, password)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\token_request.py", line 211, in _perform_username_password_for_access_token_exchange
    username, password)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\token_request.py", line 198, in _perform_wstrust_exchange
    result = wstrust.acquire_token(username, password)
  File "F:\All_Python\Python_Setup\Python27\lib\site-packages\adal\wstrust_request.py", line 160, in acquire_token
    raise AdalError(return_error_string, error_response)
adal.adal_error.AdalError: WS-Trust RST request returned http error: 500 and server response: <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><s:Header><a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action><o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><u:Timestamp u:Id="_0"><u:Created>2017-06-07T12:12:56.567Z</u:Created><u:Expires>2017-06-07T12:17:56.567Z</u:Expires></u:Timestamp></o:Security></s:Header><s:Body><s:Fault><s:Code><s:Value>s:Sender</s:Value><s:Subcode><s:Value xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:FailedAuthentication</s:Value></s:Subcode></s:Code><s:Reason><s:Text xml:lang="en-US">ID3242: The security token could not be authenticated or authorized.</s:Text></s:Reason></s:Fault></s:Body></s:Envelope>

Process finished with exit code 1
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\authentication\u context.py”,第145行,在acquire\u token\u中使用用户名\u密码
返回自我。获取令牌(令牌功能)
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\authentication\u context.py”,第109行,在\u acquire\u令牌中
返回令牌函数(self)
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\authentication\u context.py”,第143行,在token\u func中
返回令牌请求。使用用户名密码(用户名、密码)获取令牌
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\token\u request.py”,第286行,在get\u token\u和\u用户名\u密码中
令牌=self.\u获取令牌\u用户名\u密码\u联邦(用户名,密码)
文件“F:\All\u Python\Python\Setup\Python27\lib\site packages\adal\token\u request.py”,第252行,位于\u get\u token\u username\u password\u
用户名、密码)
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\token\u request.py”,第211行,在\u perform\u username\u password\u for\u access\u token\u exchange中
用户名、密码)
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\token\u request.py”,第198行,在执行信任交换中
结果=wstrust.acquire_令牌(用户名、密码)
文件“F:\All\u Python\Python\u Setup\Python27\lib\site packages\adal\wstrust\u request.py”,第160行,在acquire\u令牌中
raise AdalError(返回错误字符串,错误响应)
adal.adal_error.AdalError:WS-Trust RST请求返回http错误:500和服务器响应:http://www.w3.org/2005/08/addressing/soap/fault2017-06-07T12:12:56.567Z2017-06-07T12:17:56.567Zs:Sendera:FailedAuthenticationID3242:无法对安全令牌进行身份验证或授权。
进程已完成,退出代码为1

如果有人对此有任何想法,请告诉我。

根据错误堆栈的信息,根据我的经验,由于错误来自方法
\u get\u token\u username\u password\u federated
和WS-Trust RST请求的500个错误代码,您用于获取令牌的用户/密码似乎没有在应用程序的Azure广告中创建,但看起来像是在联合广告中创建的

请尝试以下两种方法检查问题

  • 使用管理员帐户在Azure portal上注册的应用程序的Azure广告中创建新用户,然后使用新用户/密码检索令牌
  • 检查Azure AD配置,以确保是否已部署Active Directory联合身份验证服务以及在联合身份验证实例中创建的当前使用/密码

  • 根据错误堆栈信息,根据我的经验,由于错误来自方法
    \u get\u token\u username\u password\u federated
    和WS-Trust RST请求的500个错误代码,您用于获取令牌的用户/密码似乎未在应用程序的Azure AD中创建,但看起来像是在联邦广告中创建的

    请尝试以下两种方法检查问题

  • 使用管理员帐户在Azure portal上注册的应用程序的Azure广告中创建新用户,然后使用新用户/密码检索令牌
  • 检查Azure AD配置,以确保是否已部署Active Directory联合身份验证服务以及在联合身份验证实例中创建的当前使用/密码

  • 在使用用户名/密码的公共Azure上,您的权限可以是“”。你能分享你的权威吗?资源也应该“@LaurentMazuel”资源
    https://management.core.windows.net
    用于Azure服务管理,资源
    https://management.azure.com
    用于Azure资源管理。为Management.core.windows.net发行的令牌也适用于Management.Azure.com。请尝试。在使用用户名/密码的公共Azure上,您的权限可以是“”。你能分享你的权威吗?资源也应该“@LaurentMazuel”资源
    https://management.core.windows.net
    用于Azure服务管理,资源
    https://management.azure.com
    用于Azure资源管理。为Management.core.windows.net发行的令牌也适用于Management.Azure.com。试试看。