是否可以根据请求区域设置授权?基本上它是一个内联网类型的应用程序,只有很少的敏感信息。
如果请求是从组织内部执行的,那么允许匿名用户就可以了。
但是,如果是外部请求,他们应该获得401授权质询。 外部请求来自单个防火墙,因此IP / IP范围应该可以指定它是外部还是内部请求。
目前,它已在web.config文件中配置为Windows身份验证。
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
答案 0 :(得分:1)
直接在防火墙上处理此规则会更容易。
作为替代方案,您可以在IIS级别配置IP Security并按客户端IP进行过滤。
但是如果您无法控制防火墙,您可以编写一个自定义Authorize属性来检查传入的IP地址并允许/拒绝该请求:
public class IpBasedAuthorizeAttribute: AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var ip = httpContext.Request.UserHostAddress;
return IsAllowed(ip);
}
private bool IsAllowed(string ip)
{
// TODO: do your checks here and return true or false
// depending on whether the IP address is allowed to
// access the application or not
throw new NotImplementedException();
}
}
然后您可以使用此属性修饰单个控制器/操作,或者如果您希望将其应用于所有请求,则将其注册为全局授权属性:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new IpBasedAuthorizeAttribute());
}