是否可以根据请求的区域设置授权?基本上它是一个内部网类型的应用程序,只有很少的敏感信息。
如果请求是从组织内部执行的,则可以允许匿名用户。
但是,如果是外部请求,则应收到 401 授权质询。外部请求来自单个防火墙,因此 IP/IP 范围应该可以指定它是外部请求还是内部请求。
目前,它在 web.config 文件中配置为 Windows 身份验证。
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
直接在防火墙上处理此规则会更容易。
或者,您可以在 IIS 级别配置 IP 安全性并按客户端 IP 进行筛选。
但是,如果您无法控制防火墙,则可以编写一个自定义授权属性,该属性将检查传入的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());
}