C# 将服务限制为内部网络,但不包括负载平衡器?
在我们基于ServiceStack(v3)的API中,我们有一些服务仅供内部使用,因此我们在所有内部请求DTO上都添加了C# 将服务限制为内部网络,但不包括负载平衡器?,c#,asp.net,servicestack,servicestack-bsd,C#,Asp.net,servicestack,Servicestack Bsd,在我们基于ServiceStack(v3)的API中,我们有一些服务仅供内部使用,因此我们在所有内部请求DTO上都添加了[Restrict(InternalOnly=true)]属性 问题是,我们使用负载平衡,受限制的服务对每个人都公开访问,因为调用API的IP始终是负载平衡器的IP,因此是内部IP 有没有办法避免这种情况,使内部服务仅限于内部IP,负载平衡器的IP除外?我没有看到基于特定IP的内置限制方法()。但是,您可以使用自定义属性自己过滤请求: 公共类AllowLocalExcludin
[Restrict(InternalOnly=true)]
属性
问题是,我们使用负载平衡,受限制的服务对每个人都公开访问,因为调用API的IP始终是负载平衡器的IP,因此是内部IP
有没有办法避免这种情况,使内部服务仅限于内部IP,负载平衡器的IP除外?我没有看到基于特定IP的内置限制方法()。但是,您可以使用自定义属性自己过滤请求:
公共类AllowLocalExcludingLBAttribute:RequestFilterAttribute
{
公共覆盖无效执行(IHttpRequest req、IHTTPRESSONSE res、对象请求DTO)
{
//如果请求不是本地的或它属于负载平衡器,则抛出异常
如果(!req.IsLocal | | req.RemoteIp==“10.0.0.1”)
抛出新的HttpError(System.Net.HttpStatusCode.Forbidden,“403”,“服务只能在内部访问”);
}
}
然后,您只需在服务或操作方法上添加[AllowLocalExcludingLB]
,否则您将使用[Restrict]
属性,或者将其与其他限制一起使用。用负载平衡器IP替换10.0.0.1