当前位置: 首页 > 知识库问答 >
问题:

从Microsoft帐户登录不适用于多租户Azure AD应用程序

鲜于德泽
2023-03-14

我正在构建基于Web的多租户SaaS应用程序。应用程序已在我的租户中注册,每个订阅Office 365的客户都将在Azure AD中获得服务主体对象。

我在客户租户中从外部帐户(Microsoft帐户)登录时遇到问题。

我创建了一个示例,并试图看看我可以从访问令牌中获得什么。

示例包含一个使用 MSAL 库处理身份验证的客户端应用程序 (.js) 和两个具有受保护终结点的 API。我还创建了三个独立的Azure AD应用程序AlanClient,AlanAPI1,AlanAPI2。AlanAPI1 和 AlanAPI2 都公开了 API(在 Azure 门户应用程序中公开 API 部分),并指定了一个使用者 AlanClient。AlanClient 有权访问这两个 API。所有应用程序都注册为“accessTokenAcceptVersion”:2和“signInAudience”:“AzureADMultipleOrgs”。

据我所知,这应该足以登录

  1. 来自主机租户的Office 365帐户
  2. 在主机租户中注册为外部用户的Microsoft帐户
  3. 来宾租户的Office 365帐户
  4. 在来宾租户中注册为外部用户的Microsoft帐户

澄清:-主机租户-

我对4号案子有意见

我收到以下错误消息:AADSTS50020:来自身份提供程序“live.com”的用户帐户“lovro. p365@…”在租户“A”中不存在,并且无法访问该租户中的应用程序Alan客户端。该帐户需要先在租户中添加为外部用户。退出并使用不同的Azure AD用户帐户再次登录。

共有1个答案

秦滨海
2023-03-14

2和4的场景应该相同。

我都测试过了,一切都很好。

您可以使用OAuth 2.0认证代码授权流对其进行测试。

使用您的应用程序配置构造对< code > log in . Microsoft online . com 的请求。

此网址将如下所示:

https://login.microsoftonline.com/[租户 A]/oauth2/v2.0/authorize?client_id=[在主机租户中注册的 Azure AD 应用的客户端 ID]

在租户A中使用Microsoft帐户的凭据登录后,您将在地址栏中获得一个“代码”。使用此代码请求访问令牌:

POST /[tenant]/oauth2/v2.0/token HTTP/1.1

client_id=[client id of the Azure AD app registered in host tenant]
&scope=https://graph.microsoft.com/user.read
&code=[code got from the previous step]
&redirect_uri=[redirect uri of the Azure AD app]
&grant_type=authorization_code

然后,我们可以获取 Microsoft 帐户的访问令牌作为租户 A 中的来宾用户。

 类似资料:
  • 我的目标很简单:使用Azure AD多租户应用程序来调用其他租户上的Azure资源管理器API。但是,当你用微软个人帐户登录时,我想不出该怎么做。 null 从技术角度来看,这可能是有道理的,但当我用个人账户登录时,如何将AAD应用程序添加到另一个租户呢? 应该通过手工检测个人MS帐户并找到与AAD承租人的关联来完成,或者有没有API可以促进这一点?在这两种情况下,怎么做?如果一个帐户与多个租户相

  • 我们的组织目前正在使用Office 365。我们刚刚购买了一些Windows 8笔记本电脑,并尝试使用Office 365组织帐户对其进行配置。我知道“Microsoft帐户”和“组织帐户”是不同的。但是,有没有其他选择。我曾尝试进入Azure Active Directory并在那里使用“Microsoft Account”应用程序,但没有成功。感谢任何帮助。

  • 嗨,我正在尝试对我的登录页面进行Microsoft单点登录身份验证。为此,我已经使用它创建了Azure多租户目录,并根据给定的链接https://www.c-sharpconer.com/article/azure-ad-authentication-for-mvc-web-application/创建了带有重定向URI的应用程序。成功地集成了代码,当运行时,我在输入用户名和密码后,我在错误下面得

  • Microsoft Graph API提供了仅适用于应用程序的身份验证方案,该方案非常适合拥有应用程序的租户。 我有一个Azure租户,我按照文档指南在其中创建了应用程序。我的应用程序现在可以使用endpoint获得访问令牌,这允许我查询租户内用户的图形API。 但是,我希望我的应用程序能够为其他租户获得访问令牌。我认为外部租户所有者应该以某种方式将我的应用程序插入到他们的Azure租户中,应用某

  • 我必须在j2ee中开发一个多租户SaaS应用程序,从Iaas和PaaS开始实现三种云模型,我选择了openstack和openshift origin。SaaS应用程序的第一个标准是多租户,我知道有三种方法来实现它——单独的数据库——共享数据库,单独的模式——共享数据库,共享模式。我在这里迷失了方向,因为许多框架,比如ATHENA,ORM,比如hibernate,还有TOPLINK。我需要帮助了解

  • 我已经安装了keycloak-angular包,我使用它的方式如下:https://www.npmjs.com/package/keycloak-angular 问题是,在我的应用程序中,我希望有多租户。这意味着在应用程序加载期间不知道领域名。 在说明中,它说“KeycloakService应该在应用程序加载期间使用APP_INITIALIZER标记初始化”,问题是该领域是由用户给定的,在应用程序