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

Apache mod_ssl环境变量修改:剥离UPN的@域名后缀问题

剥离SSL_CLIENT_SAN_OTHER_msUPN_0中的@域名部分

你可以通过两种方式实现只保留UPN中@符号前的部分,以下是修正后的配置方案:

方案一:使用mod_rewrite(修正你的原有思路)

你的原有mod_rewrite配置存在正则逻辑错误和语法问题,修正后的配置如下:

# 匹配UPN格式,捕获@前的用户名部分
RewriteCond %{SSL_CLIENT_SAN_OTHER_msUPN_0} ^([^@]+)@.*$
# 不修改URL,仅将捕获的内容存入环境变量USER_NAME
RewriteRule ^ - [E=USER_NAME:%1]

# 设置请求头为提取出的用户名,注意末尾的e表示引用环境变量
RequestHeader set X-Client-Subject-CN %{USER_NAME}e

关键修正点:

  • RewriteCond的正则^([^@]+)@.*$精准匹配xxx@xxx格式的UPN,([^@]+)捕获所有@前的字符作为用户名。
  • RewriteRule使用^ -表示不对URL做重写,仅执行设置环境变量的操作;%1引用RewriteCond中捕获的第一个分组内容。
  • RequestHeader中必须用%{USER_NAME}e格式引用环境变量,缺失e会导致无法正确解析变量。

方案二:使用mod_headers的expr模式(更简洁)

无需依赖mod_rewrite,直接通过mod_headers的表达式功能提取内容:

RequestHeader set X-Client-Subject-CN "expr=%{SSL_CLIENT_SAN_OTHER_msUPN_0} =~ /^([^@]+)@/ && $1"

这个配置通过正则匹配UPN,若匹配成功则返回@前的分组内容,直接赋值给请求头,步骤更精简。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:57:08