1

是否可以根据请求的区域设置授权?基本上它是一个内网类型的应用程序,只有很少的敏感信息。

如果请求是从组织内部执行的,则允许匿名用户是可以的。

但是,如果是外部请求,他们应该得到 401 授权挑战。外部请求来自单个防火墙,因此 IP/IP 范围应该可以指定它是外部请求还是内部请求。

目前,它在 web.config 文件中针对 Windows 身份验证进行了配置。

<authentication mode="Windows" />
<authorization>
  <deny users="?" />
</authorization>
4

1 回答 1

1

直接在防火墙上处理此规则会更容易。

作为替代方案,您可以在 IIS 级别配置IP 安全性并按客户端 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());
}
于 2012-10-09T15:25:51.033 回答