无法以编程方式验证为用户

2024-05-19 10:53:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码(python,但这并不重要,使用powershell和调用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广告中为用户获取令牌?在


Tags: 代码用户clientidsecretapplicationusernamepassword
1条回答
网友
1楼 · 发布于 2024-05-19 10:53:21

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

它还有几个问题/副作用:

  • 如果您的帐户启用了MFA/条件访问,则您将无法使用资源所有者密码凭据授权登录。句号。没办法。在
  • 如果您的域是federated(与您的情况类似),您将无法登录。有一个微小的机会,它将可能登录,如果你也做密码哈希同步,但我不确定这是否有帮助。在

最后,验证后端和非用户交互进程的最佳方法是使用Service Principal。在

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

相关问题 更多 >

    热门问题