IIS上ARR配置方案:实现内网Windows认证、外网用户免认证访问
解决方案
核心思路
你的问题根源是内网业务IIS默认对所有来源的请求强制触发Windows认证,包括DMZ区ARR反向代理转发过来的公网请求。我们可以通过请求来源IP区分认证策略实现需求:内网IP访问走Windows认证,ARR代理IP访问走匿名认证。
具体配置步骤
- 先在内网业务IIS的目标站点下,同时开启 Windows Authentication 和 Anonymous Authentication 两个身份验证选项
- 进入站点的「IP地址和域限制」配置页:
- 添加允许规则,IP填写DMZ区ARR服务器的固定IP,优先级设为最高
- 添加允许规则,IP段填写你司内网用户的网段(如
192.168.0.0/16、10.0.0.0/8,按实际网络配置填写) - 新增拒绝规则,匹配所有未在上述允许列表内的IP,避免未授权访问
- 进入站点的「身份验证」配置页,右键点击 Anonymous Authentication 选择「编辑」,将匿名身份的运行上下文从默认的
IUSR特定用户改为「应用程序池标识」,避免匿名访问时出现文件权限报错 - (可选)在DMZ的ARR服务器的反向代理规则中添加配置,转发请求时携带真实客户端IP,方便内网应用统计公网访问数据,对应web.config配置如下:
<serverVariables> <set name="HTTP_X_FORWARDED_FOR" value="{REMOTE_ADDR}" /> </serverVariables> - 配置完成后重启两台IIS的站点生效:
- 内网用户直接访问内网IIS地址会自动触发Windows认证,用域账号可正常登录
- 公网用户通过DMZ入口访问,请求被识别为ARR代理来源,走匿名认证不会弹出Windows登录框
可选扩展方案
如果公网用户也需要身份校验但不需要域账号,可以在内网IIS部署自定义身份验证模块,按请求来源路由认证逻辑:内网走Windows认证,公网走表单/短信/OAuth等认证方式,该方案需要少量应用代码适配,适合有二次开发能力的场景。
注意事项
- 配置前确认DMZ的ARR服务器防火墙仅开放80/443等必要业务端口到公网,关闭ARR管理端口的公网访问权限
- 内网业务IIS的防火墙仅放行ARR服务器IP和内网网段的访问请求,禁止公网直接连通内网IIS
内容的提问来源于stack exchange,提问作者Aju
相关产品推荐
相关产品推荐

