我有一个Azure webapp,它通过Azure AD管理它的用户。我希望用户能够在我的Azure AD目录中注册以创建帐户(自助服务),因此我为应用程序提供了对目录的读写访问权限,并使用Graph API设置页面来创建用户。 / p>
直到这里,一切都很棒。但我现在遇到的问题是我想启用多租户,因此外部AD目录的用户可以登录我的应用程序。这有效,但我需要以帐户的管理员身份登录,因为它还要求对他们的目录进行读写访问。
有没有办法解决这个问题?我只想对我的目录进行读写访问才能创建用户帐户。我不想要求允许触摸他们的目录,因为很可能他们不相信我的应用程序。
感谢。
答案 0 :(得分:2)
我发现了一个快速而又脏的解决方案:将另一个应用添加到Active Directory。此应用程序应该是单个租户,并且只具有读取和写入活动目录的权限。我们可以使用此应用的凭据访问Graph API和其他应用的凭据来验证用户。
我等着看某人是否有更好的解决方案......
答案 1 :(得分:0)
希望有所帮助,
答案 2 :(得分:0)
无需使用辅助应用程序代替身份验证角色 - 无论如何,对身份验证用户可能会产生一些特殊的副作用,例如无关/不完整的日志记录,角色不一致以及缺少系统/内部引用。
您使用的是什么用于应用的登录凭据(TenantID等)? AD在凭据管理方面非常严格,所以我会回到应用程序结构。
在查询级别,您可以使每个租户完全分离所有表,没有共享表数据,并且包含多租户标识符列,因此如果您确定将多租户标识符包含为显式变量,则无法进行sql注入。
然后在实体模型中,您可以为每个人返回多租户接口,这些接口引用回租户标识符(作为EF的一部分)。
这样,负担就会被隔离到OAuth或其他库,以便处理第三方身份验证。