Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将服务限制为内部网络,但不包括负载平衡器?_C#_Asp.net_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_Servicestack Bsd - Fatal编程技术网 servicestack,servicestack-bsd,C#,Asp.net,servicestack,Servicestack Bsd" /> servicestack,servicestack-bsd,C#,Asp.net,servicestack,Servicestack Bsd" />

C# 将服务限制为内部网络,但不包括负载平衡器?

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

在我们基于ServiceStack(v3)的API中,我们有一些服务仅供内部使用,因此我们在所有内部请求DTO上都添加了
[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