python - 无法以编程方式验证用户身份

标签 python azure authentication azure-active-directory adal

我正在使用以下代码(Python,但这并不重要,使用 powershell 和 invoke-webrequest 得到相同的结果):

from msrestazure.azure_active_directory import UserPassCredentials
username = '%username%'
password = '%password%'
client_id = '{Azure AD Application GUID}'
secret_id = '{Azure AD Application secret}'
credentials = UserPassCredentials(username, password, client_id, secret_id)

这适用于一个租户中的用户,但不适用于另一租户中的用户,并出现奇怪的错误:

msrest.exceptions.AuthenticationError: , InvalidGrantError: (invalid_grant) AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password

我可以使用相同的凭据使用门户登录。相关租户正在使用 AAD Sync 和 SSO,这会造成干扰吗?

如果是,如何为此类 Azure AD 中的用户获取 token ?

最佳答案

我非常确定在尝试使用 Azure AD 登录时了解使用资源所有者密码凭据授予的严重安全隐患。

它还有一些问题/副作用:

  • 如果您的帐户启用了 MFA/条件访问,则您将无法使用资源所有者密码凭据授予登录。时期。没有办法。
  • 如果您的域是联合(如您的情况),您将无法登录。如果您还进行密码哈希同步,则有可能登录,但我不确定这是否有帮助。

最后,验证后端和非用户交互流程的最佳方法是使用服务主体

查看以下文档源,详细了解 Azure AD 中的服务主体以及如何使用服务主体进行身份验证:

关于python - 无法以编程方式验证用户身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970472/

相关文章:

python - 如何使用 selenium (python 脚本)找到该图像?

python - 线程在退出 tk 窗口时不会关闭

c# - 无法从 Azure 移动服务将 toast 推送到 WP8

node.js - Azure Linux Web 服务器没有响应我的 Docker 容器

azure - 了解 Windows Azure 中的可用性集

http - 使用 OWIN 添加多个 WWW-Authenticate header

python - 具有特殊规则的 Pandas agg 数组

python - 在python中表达多个for循环的简单而优雅的方式?

authentication - Nginx 基本身份验证不起作用

node.js - 在 NodeJS 后端使用 JWT 和 Active Directory 身份验证