Azure AD 多租户权限

7
我有一个Azure Web应用程序,通过Azure AD管理其用户。我希望用户能够注册到我的Azure AD目录创建帐户(自助服务),所以我为应用程序提供了对目录的读写访问权限,并使用Graph API设置了一个页面来创建用户。
到这里为止,一切都很好。但是我现在遇到的问题是,我想启用多租户,以便外部AD目录的用户可以登录到我的应用程序。这是可行的,但我需要以管理员身份登录到该帐户,因为它还要求读写访问权限来操作他们的目录。
有没有办法解决这个问题?我只想获得对我的目录的读写访问权限以创建用户帐户。我不想请求权限来访问他们的目录,因为他们大概不会信任我的应用程序。
谢谢。

简短的回答是不行。Azure有将AD1与AD2集成的方法,但这只适用于两个特定的域,而不是“所有存在的域”。但是,您可以使用另一个AD作为第三方认证器,并仍然创建一个本地用户,您可以对其进行管理。 - Dave Alperovich
3个回答

2
我找到了一个快速而简单的解决方案:向Active Directory添加另一个应用程序。该应用程序应为单租户,并且仅具有读取和写入Active Directory的权限。我们可以使用此应用程序的凭据访问Graph API,使用另一个应用程序的凭据对用户进行身份验证。
我希望能看到是否有更好的解决方案适用于这种情况...

2
这确实是唯一的方法。您正在尊重其他Azure AD,但在自己的“空间”中创建一个本地的“用户”,以便您可以“管理”。这并不是一个不好的解决方案。这是使用所有第三方身份验证的已建立工作流程。如果您尊重Google Plus OAuth,则不希望管理Google用户。您需要创建一个本地实体,其中包含Google身份作为您的本地身份,并管理本地用户。 - Dave Alperovich

0

无需使用第二个应用程序来代替身份验证角色 - 这可能会对身份验证用户产生一些奇怪的副作用,例如外部/不完整的日志记录、角色不一致和缺少系统/内部引用。

您的应用程序使用什么登录凭据(TenantID等)?AD在凭证管理方面非常严格,因此我建议返回应用程序结构。

在查询级别,您可以使所有表都完全独立于租户,没有共享的表数据,并包括一个多租户标识列,以便如果您确定将多租户标识作为显式变量,则不会发生 SQL 注入。

然后,在实体模型中,您可以继承一个多租户接口,该接口会引用租户标识符(作为 EF 的一部分)。

通过这种方式,负担隔离到 OAuth 或其他库之上,以处理第三方身份验证。


0

很抱歉这里回复晚了。通常,在目录中创建对象(如用户)的操作需要管理员权限。此外,看起来您正在创建的 Web 应用程序使用仅应用程序权限,这绝对需要管理员同意。在多租户情况下,同意租户的管理员必须同意此类型的应用程序 - 只有此角色的人才有权授予此级别的访问权限。

希望这可以帮助到您,


我不确定我完全理解你的情况(或者你在这里谈论的快速而肮脏的解决方案)。看起来你正在构建一个用于委派用户管理的网站?这个想法是多个组织可以在他们的租户中使用这个应用程序吗? - Dan Kershaw - MSFT
我们希望使用Azure AD进行所有身份验证。如果用户拥有自己的AzureAD(Office 365等),他可以使用它在我们的应用程序中创建帐户。如果没有,他可以在我们的AzureAD中创建帐户...但我不想请求同意访问其他AzureAD目录,只想访问我的目录以创建这些用户。希望这能够清楚地阐明情况... - Carles Company

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接