我们有一个解决方案,包含两个内部Web应用程序,用于维护不同的数据集。这两个网站都访问.NET 4.6 REST API,用户是公司的员工。所有网站用户都是活动目录中的1或2个网站的成员,可以使用AD和组成员身份进行授权。网站2的用户具有网站1的用户无法访问的一些服务。到现在为止还挺好。 Windows身份验证,假冒,一切都很好。然后是两个合作的企业。业务1只允许对1个实体进行更改(我们使用的是实体框架)。重要的是,他们无法调用暴露给网站1和2的API。在域控制器之间建立信任是不可取的。 Business 2公开了与网站1非常相似的数据。他们面向公众的门户网站拥有数百万个人用户。它不太可能包括其他合作企业。这两个企业都可以获得认证认证,因为这似乎比基本认证更安全,即使它满足安全最低要求。是否应该在控制器本身或服务中进行授权?
请参阅随附的草图。 如果给出上述说明,您将如何保护REST API?我找不到使用Active Directory进行授权的混合模式身份验证的任何良好引用。一种可能性是将REST API划分为内部API和外部API。通过这种方式,可以大大减少公开的功能,并且我们为每个REST API提供了更简单,统一的授权方案。这种方法增加了一些开销,可能会降低可维护性,因为这两个项目将共享许多底层服务,我们还需要将一些管道和辅助类重构为某种公共库。如果需要,合作业务nr 2同意为外部REST API托管反向代理。我们可以为合作的业务1和2创建Active Directory用户帐户。