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

使用微软图形应用程序的Azure Active Directory用户和SaaS应用程序

岑俊弼
2023-03-14

我正在开发一个 SaaS 应用程序,该应用程序要求外部组织的 AD 用户将约会同步到 Office 365 日历事件。

管理员用户方案:

  1. 管理员将所有AD用户导入应用程序。
  2. 该应用程序将管理员重定向到Microsoft登录并请求权限。
  3. 管理员允许应用程序访问用户的日历。

普通用户场景:

  1. 用户登录应用程序。
  2. 用户创建约会并同步到Office 365日历(无需请求权限)。

我在Microsoft Graph API中使用以下endpoint:

Authority = "https://login.microsoftonline.com/common/oauth2/authorize"
Resource = "https://graph.microsoft.com/"

如果我想让普通用户访问他们的Microsoft数据,我需要将租户“common”更改为他们的租户id吗?

我的另一个问题是管理员同意如何根据我的方案工作?

共有1个答案

水睿
2023-03-14

首先,我建议不要将所有用户导入应用程序。最好只在用户登录时以“及时”的方式提供您实际需要的用户。如果您的应用程序有列出租户中的其他用户(例如“人员选择器”)很有用的场景,您可以按需使用Microsoft Graph API。

接下来,要回答您的一个问题:不,您不应该将权威endpoint切换到租户特定的endpoint。继续使用通用endpoint,这确保您可以对来自任何租户的任何用户进行身份验证。

可以通过在身份验证请求期间使用< code > prompt = admin _ consent 查询参数来明确请求管理员同意。一种方法是让您的应用程序执行常规登录,然后在用户登录后,使用Microsoft Graph API检查用户是否是租户管理员。如果是,您可以将它们重定向到重新验证,但这一次使用< code > prompt = admin _ consent 选项。或者,您可以为您的应用程序创建一个“注册”流程,从一开始就使用< code > prompt = admin _ consent (注意,只有租户管理员可以这样做,因为非管理员将从Azure AD获得他们可能不理解的错误)。

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

  • 我正在开发一个新的SaaS应用程序,它使用redis进行会话存储和查询缓存。 我不知道在SaaS应用程序中使用redis实现的最佳架构。对所有租户使用单个redis数据库并通过命名空间识别每个租户更好,还是对每个租户使用单个redis数据库更好? 我认为对所有租户使用单一数据库更好,但我不确定这一点。 此外,如果在单个数据库中使用redis的最佳选择是,我想知道如何使用redis进行查询缓存。如果

  • 我正在使用Java、Spring、Struts2和Hibernate设计一个多租户SaaS Web应用程序。经过一些研究,我选择在共享数据库、共享模式、共享表的方法中实现多租户。并用tenantid标记每个db行。 我已经重写了我的应用程序,所以管理者和DAO将把tenantId作为一个参数,只为正确的数据库资源服务。 当获取信息时,这对所有视图来说都是完美的。也用于创建新的东西(使用登录的用户t

  • 我正在设计一个SAAS应用程序,每个用户拥有多租户数据库,每个数据库拥有唯一的订阅用户子域。当saas应用程序的订阅用户将更多用户添加到他们的仪表板或产品中时,问题就会出现,因此如何处理他们从我们的主应用程序页面的登录,因为他们的数据库条目将只在他们的管理员数据库中。或者我应该为所有用户使用一个全局数据库来处理登录? 我正在寻找任何有价值的建议,我是一个新手,刚刚开始在SAAS应用程序工作 谢谢

  • 我指的是:https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0 并试图获取所需的用户详细信息。 我的问题是,如何获取任何特定用户ID的字段详细信息(sbx、cn、uid、mail、jobtitle)? 这个想法是使用微软图形应用编程接口找到任何用户详细信息(上面的任何字段,如果不是全部的话)。 我试过这个:

  • 我正在为多租户SAAS模型设计web应用程序,由于一些规定,我们决定每个租户有一个数据库,我们正在考虑为我们的中间件提供微服务。但我有点困惑,微服务架构谈论的是“每个微服务都有自己的数据库”。下面是我的问题 如果我将共享数据库用于微服务,这违反了微服务设计的概念/目的,即它们都应该被隔离,任何更改都应该限于该微服务 我可以想到一个层,它模仿我的数据库表作为DTO,每个微服务都通过这个层与数据库通信