微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure 来宾用户的 OAuth2 隐式授权流程失败

如何解决Azure 来宾用户的 OAuth2 隐式授权流程失败

我尝试通过 MSAL 库授权 Azure AD 访客 用户访问我的 Web 应用程序。 由于它是一个 SPA,我使用的是隐式授权流程。 对于“标准”用户,流程是可以的。 但是对于“访客”用户(使用“gmail”等个人地址),它无法按照此处所述获取 obo 令牌:

https://github.com/Azure/azure-sdk-for-java/tree/2.3.5/sdk/spring/azure-spring-boot-starter-active-directory#authenticate-in-frontend

消息是:

{ "error": "invalid_grant","error_description": "AADSTS500341: The user account <user_account> has been deleted from the <tenantId> directory. To sign into this application,the account must be added to the directory.
}

我隔离了 http 请求以绕过 MSAL 魔法(它在 /oauth2/token 请求上失败):

enter image description here

我只是想知道来宾用户是否可以通过此流程获得授权,或者是否有其他方式来授权他们。

解决方法

感谢您分享查询。 Azure AD B2B 用户(gmail 用户)可以继续使用隐式流从 AAD 成功获取访问令牌。您可以使用以下请求来实现相同的目的:

https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?client_id={client-id}&response_type=token&redirect_uri={redirect-uri}&scope=openid%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&response_mode=form_post&state=12345&nonce=678910

现在让我感到困惑的是以下语句“它在此处描述的 web api 令牌验证失败。”以及您附加的屏幕截图使用的是 OBO 流而不是隐式流。 >

所以,是这样的:

  1. 您使用隐式流为用户获取令牌
  2. 之后,您将该令牌发送给 API-1
  3. 然后 API-1 执行 OBO 流程并尝试为另一个 API 获取另一个令牌,例如 API-2

执行第 3 步时失败了?

如果是这种情况,请检查以下部分“截至 2018 年 5 月,某些隐式流派生的 id_token 不能用于 OBO 流。单页应用程序 (SPA) 应通过访问令牌到中间层机密客户端以执行 OBO 流。有关哪些客户端可以执行 OBO 调用的详细信息,see limitations。”

可以在此处找到更多详细信息:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow

如果不是这种情况,那么请分享更多有关此的详细信息,以便我们更好地了解设置。

,

使用代表流时,请按照步骤 here 操作。如果使用 id_token 请求 /token 端点,它将返回此错误。 assertion 应设置为访问令牌。


您在问题中使用了 On-Behalf-Of flow,但未使用隐式授权流程。

尝试使用隐式流程对受邀用户执行以下步骤:

  1. 在 Azure AD 中添加来宾用户

https://docs.microsoft.com/en-us/azure/active-directory/external-identities/b2b-quickstart-add-guest-users-portal#add-a-new-guest-user-in-azure-ad

  1. 导航到企业应用程序-> 您的应用程序-> 用户和组

enter image description here

  1. 请求 /authorize 获取令牌

您可以使用隐式流程在浏览器中登录用户。

https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?
client_id={client_id}
&response_type=id_token token
&redirect_uri={redirect_uri}
&scope=https://graph.microsoft.com/user.read
&response_mode=fragment
&state=12345
&nonce=678910

我的测试结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。