我们有一个多实例Saas应用程序:
我们正在研究Azure AD应用程序配置选项,并希望确保我们构建最合理,最安全的Azure AD应用程序。以下是我们一直在关注的一些文档:
https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/
https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-compare
我们希望应用程序成为多租户,以简化配置,并允许在Gallery中提供可用性;但在考虑这样做时,我们会留下一些安全问题。
:一种。使用哪个应用程序版本
B中。如果我们的客户有不同的子域,如何管理回复URL?
我注意到以下选项:
℃。如何管理Graph API(AzureAD和Microsoft Graph)的授权
我注意到以下选项:
答案 0 :(得分:1)
真的好问题。我将尝试尽我所能回答每个问题,但如果有人有其他想法,请随时评论/添加自己的答案。
一个。使用哪个应用程序版本
v2应该允许您调用Azure AD Graph API。您链接的文档显示了指定Azure AD Graph范围的示例:
您应该使用v2的主要决策点是:您是否需要支持不在Azure AD中的Microsoft帐户?如果是,则需要使用v2。否则使用v1没有问题(好吧,缺乏动态权限)。
由于您使用Azure AD Graph修改内容,我猜测纯Microsoft帐户不适用于您。 我建议坚持使用v1。
v2也有一些限制:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-limitations
B中。当我们的客户有不同的子域时,如何管理回复URL?
我找不到有关网址限制的文档。可能你可以添加许多你想要的东西。但我不确定:))
如果您的子域名如下所示:https://customer.product.com
,您可以将回复网址配置为:
https://*.product.com
然后它将允许在redirect_uri
。
虽然请注意,在撰写本文时,v2 不支持通配符回复网址。
℃。如何管理Graph API(AzureAD和Microsoft Graph)的授权
使用多个密钥是没有意义的,因为它们都是平等的:)任何一个都可以用来呼叫另一个租户。
您可以将密钥/证书存储在Azure密钥保管库中,然后使用Azure AD Managed Service Identity在应用启动时获取它。
我更喜欢使用委派权限,但如果应用的用户无权执行您的应用需要执行的操作,那么这不起作用。
我只是确保客户的实例无法使用其他租户ID调用API。并且还要确保令牌缓存以这样的方式分离,即不可能获得另一个租户的访问令牌(实例上的内存缓存会很好)。