管理员尚未同意使用该应用程序 - Azure AD

时间:2017-01-02 04:28:58

标签: python azure oauth-2.0 azure-active-directory azure-ad-graph-api

我正在尝试从Python客户端应用程序中获取Azure AD中的令牌。我希望用户只使用用户名和密码进行无缝身份验证(client_id / secret将嵌入到应用程序中)。我注册了我的应用程序,并给予了所有权限,并根据这篇文章点击了新门户网站中的“授予权限”按钮:

The user or administrator has not consented to use the application - Send an interactive authorization request for this user and resource

我发送一篇http帖子到:

https://login.microsoftonline.com/{tenant_id}/oauth2/token

包含以下数据:

headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}

body = "resource={0}&grant_type=password&username={1}&password={2}&client_id={3}&client_secret={4}&scope=openid".format(app_id_uri,user,password,client_id,client_secret)

无论我尝试什么,我似乎无法克服这个错误:

b'{"error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID \'078c1175-e384-4ac7-9116-efbebda7ccc2\'. Send an interactive authorization request for this user and resource.

再次,我的目标:

用户输入用户/通行证,没有别的。 App发送user / pass / client_id / client_secret,获取令牌。

2 个答案:

答案 0 :(得分:2)

根据你的评论:

  

我收到的消息说要做一个交互式请求,但这正是我试图避免的,因为这是一个没有网络浏览器的python应用程序,我试图避免复杂性

我认为您要构建一个守护程序应用程序或仅与Azure AD集成的应用程序应用程序。您可以参考https://graph.microsoft.io/en-us/docs/authorization/app_only进行一般性介绍。

此外,您可以轻松利用ADAL for Python来实现此功能。此外,您可以参考client_credentials_sample.py快速入门。

答案 1 :(得分:0)

您应该尝试以管理员身份登录,以便能够同意在您的租户上使用该应用程序。