0

我尝试通过 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 请求上失败):

在此处输入图像描述

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

4

2 回答 2

0

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


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

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

  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-广告

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

在此处输入图像描述

  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

我的测试结果:

在此处输入图像描述

于 2021-02-16T06:34:46.747 回答
0

感谢您分享查询。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 调用的更多信息,请参阅限制

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

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

于 2021-02-16T05:41:27.943 回答