C# 如何解决RESTAPI中混合用户的授权问题

C# 如何解决RESTAPI中混合用户的授权问题,c#,api,rest,authentication,authorization,C#,Api,Rest,Authentication,Authorization,我们有一个由两个内部web应用程序组成的解决方案,用于维护不同的数据集。这两个网站都访问.NET4.6RESTAPI,用户都是该公司的员工。所有网站用户都是active directory中网站1或2组的成员,可以使用广告和组成员身份进行授权。网站2的用户拥有一些网站1的用户无法访问的服务。到目前为止,一切顺利。Windows身份验证、模拟和其他一切都很好。然后是两个合作企业。业务1只允许对1个实体进行更改(我们使用的是实体框架)。重要的是,他们不能调用暴露于网站1和2的API。在域控制器之间建

我们有一个由两个内部web应用程序组成的解决方案,用于维护不同的数据集。这两个网站都访问.NET4.6RESTAPI,用户都是该公司的员工。所有网站用户都是active directory中网站1或2组的成员,可以使用广告和组成员身份进行授权。网站2的用户拥有一些网站1的用户无法访问的服务。到目前为止,一切顺利。Windows身份验证、模拟和其他一切都很好。然后是两个合作企业。业务1只允许对1个实体进行更改(我们使用的是实体框架)。重要的是,他们不能调用暴露于网站1和2的API。在域控制器之间建立信任是不可能的。业务2以与网站1非常相似的方式公开数据。他们面向公众的门户网站拥有数百万个人用户。不太可能包括其他合作企业。这两个企业都可以获得认证,因为这似乎比基本认证更安全,即使它满足最低安全要求。授权应该在控制器本身还是在服务中进行

请参阅随附的草图。 根据上述描述,您将如何保护REST API?我找不到任何关于使用Active Directory进行授权的混合模式身份验证的好参考。一种可能是将RESTAPI分为内部API和外部API。这样,公开的功能将大大减少,我们为每个RESTAPI提供了一个更简单、统一的授权机制。这种方法增加了一些开销,可能会降低可维护性,因为这两个项目将共享许多底层服务,我们还需要将一些管道和助手类重构为某种公共库。合作业务nr 2已同意在需要时为外部REST API托管反向代理。我们可以为合作业务1和2创建Active Directory用户帐户。