You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IIS 10中通过重写将Windows用户名存入请求头?

实现IIS 10中通过URL重写将Windows验证用户名存入请求头

完全可以简便实现,借助IIS的URL重写模块即可完成,无需额外开发。具体操作如下:

前提准备

确保你的IIS已安装URL重写模块(若未安装,可通过「服务器管理器」-「添加角色和功能」-「Web服务器(IIS)」-「Web服务器」-「性能」下勾选安装)。

方法一:通过IIS图形界面配置

  • 打开IIS管理器,选中目标站点,双击「URL重写」功能。
  • 右侧操作栏点击「添加规则」,选择「空白规则」。
  • 规则名称:填写便于识别的名称,比如「注入Windows用户名到请求头」。
  • 匹配URL:模式设置为.*,应用范围选择「所有请求」。
  • 条件:点击「添加」,条件输入选择{LOGON_USER},检查输入字符串选「匹配模式」,模式填写.+(确保仅当存在已验证的用户名时触发规则)。
  • 操作:操作类型选「重写」,重写URL填写{R:0}(保持原请求路径不变);切换到「服务器变量」标签,点击「添加」,变量名填HTTP_X_WINDOWS_USERNAME(自定义请求头需以HTTP_为前缀,IIS会自动转换为标准请求头格式),变量值填{LOGON_USER},勾选「替换服务器变量的值」。
  • 点击「应用」保存规则。

方法二:直接修改web.config配置

如果偏好手动配置配置文件,可在站点根目录的web.config中添加以下规则(若已有<rewrite>节点,直接合并规则即可):

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Inject Windows Username to Request Header" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{LOGON_USER}" pattern=".+" />
          </conditions>
          <serverVariables>
            <set name="HTTP_X_WINDOWS_USERNAME" value="{LOGON_USER}" />
          </serverVariables>
          <action type="Rewrite" url="{R:0}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

关键说明

  • {LOGON_USER}是IIS内置服务器变量,存储的正是已通过Windows身份验证的用户名,和你日志中看到的内容一致。
  • 自定义请求头名称可按需修改,但必须遵循IIS规则:以HTTP_开头,最终后端读取时会自动转换为短横线分隔的格式(比如HTTP_X_WINDOWS_USERNAME对应请求头X-Windows-Username)。
  • 测试时可在后端代码中读取该请求头,例如ASP.NET中用Request.Headers["X-Windows-Username"],其他语言框架同理。

内容的提问来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:05:23