如何重写 X 转发组.Windows Server 2016 上的



>Apache 2.4 作为带有模块 mod_authnz_sspi 的反向代理。
必须设置一些 RequestHeaders,以下是 httpd.conf 的相关部分:

<Location />
    AuthBasicAuthoritative Off
    AuthLDAPBindAuthoritative On
    AuthBasicProvider ldap
    LDAPReferrals Off
    AuthLDAPMaxSubGroupDepth 2
    AuthLDAPRemoteUserAttribute sAMAccountName
    AuthLDAPURL "ldap://lan.domain.de:389/DC=lan,DC=domain,DC=de?sAMAccountName,memberOf,mail,displayName"

    AuthLDAPBindDN someuser
    AuthLDAPBindPassword somepasswd
    #Require ldap-group CN=Users,DC=lan,DC=domain,DC=de
    Require ldap-attribute ObjectClass="person"
    AuthLDAPGroupAttributeIsDN off
    AuthType SSPI
    AuthName "Sonar"
    SSPIAuth On
    SSPIOfferSSPI On
    SSPIAuthoritative On
    SSPIDomain LAN
    SSPIOmitDomain On
    SSPIPackage Negotiate
    Require valid-sspi-user
</Location> 
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "E:/Apache/conf/ssl/server.cer"
SSLCertificateKeyFile "E:/Apache/conf/ssl/server.key"
SSLCACertificateFile "E:/Apache/conf/ssl/ca-bundle.crt"
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Login %{AUTHORIZE_sAMAccountName}e
RequestHeader set X-Forwarded-Groups %{AUTHORIZE_memberof}e
RequestHeader set X-Forwarded-Email %{AUTHORIZE_mail}e
RequestHeader set X-Forwarded-Name %{AUTHORIZE_displayName}e
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1
ServerName  SomeServer

问题是,这些组以";"分隔的DN的形式出现,不知道另一种方法可以将用户的组作为"成员">

CN=Group1,OU=someou,OU=someotherou,DC=lan,DC=domain,DC=de;CN=Group2,OU=someou,OU=someotherou,DC=lan,DC=domain,DC=de;...

但是应用程序需要那些组中的CN以","分隔,在该示例中将是组1,组2 - 如何实现?

在 ldap URL 中使用过滤器或子表达式是否有任何可能性?
是否可以相应地重写 X 转发组?

找到了mod_headers的解决方案,并将其发布给遇到相同问题的其他用户。

httpd.conf

LoadModule headers_module modules/mod_headers.so
[...]
RequestHeader set X-Forwarded-Groups %{AUTHORIZE_memberof}e
RequestHeader edit* X-Forwarded-Groups CN=([^,]+),[^;]+ $1
RequestHeader edit* X-Forwarded-Groups ; ,

edit* 与正则表达式和 $1 表示 CN=... 的所有匹配项;应替换为 CN 的值。
在第二次编辑*中,分隔符";"替换为",">

现在就像一个魅力。

最新更新