Azure AD多租户权限

时间:2015-05-28 09:32:02

标签: c# azure asp.net-mvc-5 azure-active-directory

我有一个Azure webapp,它通过Azure AD管理它的用户。我希望用户能够在我的Azure AD目录中注册以创建帐户(自助服务),因此我为应用程序提供了对目录的读写访问权限,并使用Graph API设置页面来创建用户。 / p>

直到这里,一切都很棒。但我现在遇到的问题是我想启用多租户,因此外部AD目录的用户可以登录我的应用程序。这有效,但我需要以帐户的管理员身份登录,因为它还要求对他们的目录进行读写访问。

有没有办法解决这个问题?我只想对我的目录进行读写访问才能创建用户帐户。我不想要求允许触摸他们的目录,因为很可能他们不相信我的应用程序。

感谢。

3 个答案:

答案 0 :(得分:2)

我发现了一个快速而又脏的解决方案:将另一个应用添加到Active Directory。此应用程序应该是单个租户,并且只具有读取和写入活动目录的权限。我们可以使用此应用的凭据访问Graph API和其他应用的凭据来验证用户。

我等着看某人是否有更好的解决方案......

答案 1 :(得分:0)

抱歉这里迟到的回复。通常,在目录(如用户)中创建对象的操作需要管理员权限。此外,您正在创建的Web应用程序使用仅限应用程序的权限,这肯定需要管理员同意。在多租户案例中,同意租户的管理员必须是同意此类应用程序的管理员 - 只有具有此角色的人才有权授予此级别访问权限。

希望有所帮助,

答案 2 :(得分:0)

无需使用辅助应用程序代替身份验证角色 - 无论如何,对身份验证用户可能会产生一些特殊的副作用,例如无关/不完整的日志记录,角色不一致以及缺少系统/内部引用。

您使用的是什么用于应用的登录凭据(TenantID等)? AD在凭据管理方面非常严格,所以我会回到应用程序结构。

在查询级别,您可以使每个租户完全分离所有表,没有共享表数据,并且包含多租户标识符列,因此如果您确定将多租户标识符包含为显式变量,则无法进行sql注入。

然后在实体模型中,您可以为每个人返回多租户接口,这些接口引用回租户标识符(作为EF的一部分)。

这样,负担就会被隔离到OAuth或其他库,以便处理第三方身份验证。