如何为Web服务中的某些端点执行相互身份验证?

问题描述:

我有一个.NET MVC的网络应用程序,我将暴露少数应该只被某些授权的内部应用程序命中的端点。我想通过某种形式的相互身份验证来实现这一点,以便Web服务可以验证呼叫者的身份。如何为Web服务中的某些端点执行相互身份验证?

我已经看到了这个

许多解决方案似乎依赖于IIS级别的配置,因此似乎在全球范围适用于Web服务,而不仅仅是特定端点。

为了让事情变得更加复杂,在我们的系统中的所有内部请求首先通过路由/负载均衡的ARR反向代理。因为ARR提供路由,我更愿意把一切都通过HTTP来避免比ARR其他需要一个单独的路由机制来定位机

如何我可以配置一些形式的相互认证的这种情况?

+0

你看着做这样的事情RSA密钥,并给予私有主机端点和公众进行访问的应用程序? – Richard

+0

如果你不使用HTTPS这将是非常简单的中间人攻击 – Liam

+0

@Liam我们确实使用了HTTPS加密所有流量通过一个简单的人欺骗了认证,但目前还没有客户端验证。我的理解是,ARR会使这变得复杂。 – ChaseMedallion

如果调用者也是同一个Windows域中的Windows .NET应用程序,我会通过WCF公开端点而不是MVC应用程序。

然后配置WCF端点使用Windows身份验证,并使用基于角色的授权WCF`s支持。 (基于简单情况的属性) 有关于如何实现here的文档。