msal - 具有相同电子邮件地址的个人和工作帐户
msal - personal and work accounts with same email address
我们正在通过电子邮件地址邀请外部人员作为来宾访问 azure AD。现在,他们中的一些人拥有使用此电子邮件地址的个人和工作帐户。
如果他们 link 我们租户的个人帐户并尝试连接 python MSAL 库,他们将收到错误消息。
- 如果他们使用工作帐户密码,他们将获得:'error':
'invalid_grant', 'error_description': 'AADSTS50020: 用户帐号
来自身份提供者的“{EmailHidden}”
'https://sts.windows.net/xxx-xx-xx/' 租户中不存在
'Contoso' 并且无法访问应用程序 'xxx-xx-xx-xx'(Contoso
应用程序)在那个租户。该帐户需要添加为外部
租户中的用户优先。注销并使用不同的重新登录
Azure Active Directory 用户帐户。'
- 如果他们使用个人帐户密码,他们将获得:'error':
'invalid_grant', 'error_description': 'AADSTS50126: 验证错误
由于用户名或密码无效而导致的凭据。'
我认为,msal 正在将用户电子邮件地址解析为工作帐户并尝试登录该帐户(这会失败)- 而不是有权使用该应用程序的个人帐户。
有什么方法可以通过编程方式解决这个问题吗?我们目前正在为此使用 ROPC 流程;我知道,这不是推荐的方式。
你是对的。您添加到租户中的是个人帐户而不是工作帐户。您收到第一个错误是因为 MSAL 正在尝试将您的用户识别为工作帐户。但用户实际上是其他租户的工作帐户。所以它需要你将它(工作帐户)作为访客添加到这个租户中。
但据我了解,您正在尝试为来宾用户(添加到您的租户中的个人帐户)使用 ROPC 流,对吗?
很遗憾,它不受支持。请参阅 ROPC flow document 中的 重要 提示。这就是你得到第二个错误的原因。
所以你想要的无法实现
如果您必须使用 ROPC 流程,唯一的方法是将工作帐户作为来宾添加到您的租户中,并向他们分配使用该应用程序的权限。
我们正在通过电子邮件地址邀请外部人员作为来宾访问 azure AD。现在,他们中的一些人拥有使用此电子邮件地址的个人和工作帐户。 如果他们 link 我们租户的个人帐户并尝试连接 python MSAL 库,他们将收到错误消息。
- 如果他们使用工作帐户密码,他们将获得:'error': 'invalid_grant', 'error_description': 'AADSTS50020: 用户帐号 来自身份提供者的“{EmailHidden}” 'https://sts.windows.net/xxx-xx-xx/' 租户中不存在 'Contoso' 并且无法访问应用程序 'xxx-xx-xx-xx'(Contoso 应用程序)在那个租户。该帐户需要添加为外部 租户中的用户优先。注销并使用不同的重新登录 Azure Active Directory 用户帐户。'
- 如果他们使用个人帐户密码,他们将获得:'error': 'invalid_grant', 'error_description': 'AADSTS50126: 验证错误 由于用户名或密码无效而导致的凭据。'
我认为,msal 正在将用户电子邮件地址解析为工作帐户并尝试登录该帐户(这会失败)- 而不是有权使用该应用程序的个人帐户。
有什么方法可以通过编程方式解决这个问题吗?我们目前正在为此使用 ROPC 流程;我知道,这不是推荐的方式。
你是对的。您添加到租户中的是个人帐户而不是工作帐户。您收到第一个错误是因为 MSAL 正在尝试将您的用户识别为工作帐户。但用户实际上是其他租户的工作帐户。所以它需要你将它(工作帐户)作为访客添加到这个租户中。
但据我了解,您正在尝试为来宾用户(添加到您的租户中的个人帐户)使用 ROPC 流,对吗?
很遗憾,它不受支持。请参阅 ROPC flow document 中的 重要 提示。这就是你得到第二个错误的原因。
所以你想要的无法实现
如果您必须使用 ROPC 流程,唯一的方法是将工作帐户作为来宾添加到您的租户中,并向他们分配使用该应用程序的权限。