squid basic_ldap_auth从用户名中剥离域名

时间:2015-09-16 14:20:12

标签: linux authentication active-directory ldap squid

我需要从基于Windows的代理迁移到Linux代理。 在旧服务器中,Squid使用mswin_auth.exe根据Active Directory域对用户进行身份验证。因此,我的用户现在在浏览器弹出窗口中输入ntdomain \ username以进行代理身份验证。

在linux Centos服务器中,Squid将使用basic_ldap_auth,在这种情况下,用户不得输入ntdomain。我的用户改变旧习惯会很烦人。有没有办法从输入的用户名中自动删除ntdomain?

在squid.conf中我有

    auth_param basic program /usr/lib64/squid/basic_ldap_auth -R -b "dc=ntdomain,dc=parentd,dc=it" -D "CN=squid,OU=Squid,OU=Sede,DC=ntdomain,DC=parentd,DC=it" -W /etc/squid/squid.adpwd -f sAMAccountName=%s -h vfdc1.ntdomain.parentd.it
        ...
    external_acl_type ldap_group %LOGIN /usr/lib64/squid/ext_ldap_group_acl -R -b "dc=ntdomain,dc=parentd,dc=it" -D "CN=squid,OU=Squid,OU=Sede,DC=ntdomain,DC=parentd,DC=it" -W /etc/squid/squid.adpwd -f "(&(objectclass=person) (sAMAccountname=%u)(memberof:1.2.840.113556.1.4.1941:=cn=%g,OU=Squid,OU=Sede,DC=ntdomain,DC=parentd,DC=it))" -h vfdc1.ntdomain.parentd.it -S

提前致谢

2 个答案:

答案 0 :(得分:0)

在请求中使用-K选项(从用户名中删除Kerberos域):

external_acl_type ldap_group %LOGIN /usr/lib64/squid/ext_ldap_group_acl -R -K -b "dc=ntdomain,dc=parentd,dc=it" -D "CN=squid,OU=Squid,OU=Sede,DC=ntdomain,DC=parentd,DC=it" -W /etc/squid/squid.adpwd -f "(&(objectclass=person) (sAMAccountname=%u)(memberof:1.2.840.113556.1.4.1941:=cn=%g,OU=Squid,OU=Sede,DC=ntdomain,DC=parentd,DC=it))" -h vfdc1.ntdomain.parentd.it
一切都很好。

答案 1 :(得分:-1)

这是我的解决方案:我创建了基于sed的小bash脚本来剥离域并在其中使用squid.conf

auth_param basic program /usr/local/bin/squid_auth

文件/ usr / local / bin / squid_auth是

#!/bin/bash
/usr/bin/sed -u "s/^ve[\\]//i"|/usr/bin/sed -u "s/^ve%5c//i"|/usr/lib64/squid/basic_ldap_auth  -R -b "dc=ve,dc=dipvvf,dc=it" -D "CN=squid,OU=Squid,OU=Sede,DC=ve,DC=dipvvf,DC=it" -W /etc/squid/squid.adpwd -f sAMAccountName=%s -h vfdc1.ve.dipvvf.it

域名 ve