使用设备代码根据Azure Active Directory交互验证python应用程序

使用设备代码根据Azure Active Directory交互验证python应用程序,python,azure,azure-active-directory,Python,Azure,Azure Active Directory,正在尝试使用设备代码以交互方式访问Azure AD。无论如何,没有windows弹出窗口,但控制台正确输出代码“要登录,请使用web浏览器打开页面并输入代码EUDR3PTL6进行身份验证。” 打开url并输入代码,它会输出新的错误“AADSTS500113:没有为应用程序注册回复地址” 我如何获得一个交互式弹出窗口来输入设备代码或用户凭据,以便从Azure AD获取令牌 这是设备代码流的预期结果,您需要使用web浏览器打开页面并输入代码EUDR3PTL6进行身份验证 对于在没有web浏览器的设备

正在尝试使用设备代码以交互方式访问Azure AD。无论如何,没有windows弹出窗口,但控制台正确输出代码“要登录,请使用web浏览器打开页面并输入代码EUDR3PTL6进行身份验证。”

打开url并输入代码,它会输出新的错误“AADSTS500113:没有为应用程序注册回复地址”


我如何获得一个交互式弹出窗口来输入设备代码或用户凭据,以便从Azure AD获取令牌

这是设备代码流的预期结果,您需要使用web浏览器打开页面并输入代码EUDR3PTL6进行身份验证

对于在没有web浏览器的设备上运行的应用程序, 可以通过设备代码机制获取令牌, 它为用户提供URL和代码。用户进入网络 浏览器,输入代码并登录,然后 Azure AD将令牌返回给无浏览器设备

您收到AADSTS500113错误,因为您没有为应用程序注册回复地址。 您需要在azure portal中添加平台并提供重定向url。重定向url不用于设备代码流,但它是必需的

参考:


是通过AD而不是设备代码进行身份验证的任何其他交互选项。打开一个额外的浏览器不是真正的用户友好型。@Jonas根据文档,您还可以使用
授权代码流
。但是我以前没试过,你可以试一下。
from msrestazure.azure_active_directory import AADTokenCredentials
import adal, uuid, time

authority_host_uri = "https://login.microsoftonline.com"
tenant_id = "..."
client_id = "..."
authority_uri = authority_host_uri + '/' + tenant_id
resource_uri = "https://storage.azure.com/"
context = adal.AuthenticationContext(authority_uri, api_version=None)
code = context.acquire_user_code(resource_uri, client_id)
print(code['message'])

mgmt_token = context.acquire_token_with_device_code(resource_uri, code, client_id)
credentials = AADTokenCredentials(mgmt_token, client_id)