我遵循一个tutorial通过AAD为powerbirestapi进行身份验证。在
本教程使用C和ADAL。它通过
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
string token = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)).AccessToken;
我更喜欢使用Python,因此尝试使用ADAL library for Python。在
我可以通过
^{pr2}$但是我找不到AcquireToken的等效Python ADAL函数。最近的选项似乎是context.acquire_token
,但这需要我提供一个user_id
参数,而C版本没有(它也不接受重定向URI参数)。在
如何在Python中获得与教程中的C代码相同的行为?在
acquire-token函数在ADAL-Python中的用法差别不大。在adalpython中,您必须知道要遵循哪个身份验证流,然后使用适当的acquire令牌调用。您可以在Azure AD article中找到与应用程序类型和拓扑相关的不同身份验证流,以及在这些samples中对python的不同获取令牌调用的用法
在上面提到的场景中,您可以使用这个auth code flow示例。它需要一个客户端密码,但令牌是在用户交互登录后授予的。在
如果您仍然需要一个不提供客户机机密的交互式流,可以参考device code flow示例。然而,设备代码流主要用于没有交互式web界面的纯文本设备。用户可以使用另一个具有交互式web界面的设备进行登录。在
(我的意思是将此作为对Marcus's answer中的对话的注释,但是它太长了,不能放在那里)
感谢马库斯指出了一个工作样本和那篇博客文章。但值得指出的是:
acquire_token_with_client_credentials(...)
不是您要查找的droid。在acquire_token_with_authorization_code(...)
,但是确实,目前还没有,尽管在ADAL Python for native app(又称public client)中是already supported,但它需要应用程序开发人员实现自己的逻辑来启动HTTP服务器以捕获重定向的auth代码。在我通过遵循ADAL lib GitHub page中“Acquire token with client creds”部分中的示例来实现它。在
一些样品here。在
这对你有用吗?在
相关问题 更多 >
编程相关推荐