设为首页 收藏本站
查看: 2136|回复: 0

[经验分享] 用LDAP实现Apache的授权与认证

[复制链接]

尚未签到

发表于 2018-11-22 11:23:42 | 显示全部楼层 |阅读模式
试验了一天,网上各种文档操作(基本上都是一样的。。。),然后偶得一份英文的文档,上手做了下,我了个擦,竟然都调通了。但是最后的调试还是不能做好(调试和部署)
本人openldap文档首页
下面是一条典型的LDAP用户信息(ldif格式):
PS:该实验环境为yum所装。
                        
# yanzong chen,People, shuyun.com
dn: cn=yanzongchen,ou=People,dc=shuyun,dc=com
objectClass:posixAccount
objectClass: inetOrgPerson
objectClass:organizationalPerson
objectClass: person
homeDirectory:/home/yanzong.chen
loginShell: /bin/bash
uid: yanzong.chen
cn: yanzong chen
uidNumber: 10000
gidNumber: 10001
userPassword:: e1NTSEF9ampCT0JTc0d3d2llN1lySVdzMHZQZUlIREV4SU5sQTU=
sn: chen
givenName: yanzong




你可以使用一些命令行工具(ldapsearch)来查询LDAP数据,但是如果你和我一样,刚入行,那么可能你需要抽出点时间学习下LDAP搜索语法!

配置Apache 2.2


Apache 对于LDAP的相关模块在1.3的时候已经出现。这里用的是2.2版本的Apache
DSC0000.jpg



这里我使用的Apacheyum安装的(包括ldap),所以默认的模块安装、加载的都比较全,这里就不在演示如何加载ldap模块,你可以查看httpd.conf file 来确认他们是否被加载:



LoadModuleldap_module /path/to/mod_ldap.so
LoadModuleauthnz_ldap_module /path/to/mod_authnz_ldap.so


当模块被加载,你可以通过ldap验证来访问特定的目录。 AuthLDAPUrl 指向LDAP服务器,它一般是这样来写的:


AuthLDAPUrl ldap://ldap.shuyun.com/ou=People,dc=shuyun,dc=com?uid


他定义了LDAP服务器的地址,其他的不在着了说,复杂的定义策略、搜索策略可以通过理解LDAP树形结构来定义。。。

接下来的几节如何配置各种APACHE的访问策略(通过ldap),这些配置文件为Apache.conf,放在你习惯放的位置。




允许任何有效用户


这个配置首先会去查找是否为ldap的有效用户,如果通过则可访问。当你访问的时候,Apache会要求用户输入用户名、密码,然后去检验。如果你熟悉Apache的基本身份验证,这里很容易看懂。Or 你不太懂Apache的身份验证语法,sorryGoogle 可以帮助人(不要怕,其实我写这个的时候,我也不太懂)。

Order deny,allow
Deny from All
AuthName "Welcometo shuyun ldap . Use your info to pass in !"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPUrlldap://ldap.shuyun.com/ou=People,dc=shuyun,dc=com?uid
Require valid-user
Satisfy any




AuthBasicProvider ldap 是必须滴,以便让Apache种地查询的是其他地址的LDAP服务器,而不是本地的。
AuthzLDAPAuthoritative off 必须在此处配置出来,因为这玩意儿默认是“开”。如果你要求验证的用户必须为LDAP用户,就设置此项为“ON”。例如:Require ldap-user, 需要设置为 "on." 设置为 off 则可以使用混合用户验证。
Satisfy any off时,2套验证机制)这个指令不在此处使用。


用户列表(认证用户)


Require ldap-user 这个指令作用是:ldap-user列表中的用户可以通过此认证




Order deny,allow
Deny from All
AuthName " Welcometo shuyun ldap . Use your info to pass in !"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPUrlldap://ldap.shuyun.com/ou=People,dc=shuyun,dc=com?uid
Require ldap-user yanzong.chen
Satisfy any





AuthzLDAPAuthoritative on 默认为”ON”,这里写出来是为了更清晰。
注意: AuthLDAPUrl 没有更改,和前边例子一样,他在目录中搜索匹配到的UID


组成员


通过 Require ldap-group 来按照组划分认证.
组配置可能是由目录的架构设计(从NIS转换(as mine was)),然后参照最开始yanzonglidf记录来配置相关(如下)。 gidNumber    memberUid 请仔细看


dn: cn=SysOps,ou=group,dc=shuyun,dc=com
objectClass:posixGroup
gidNumber: 10001
cn: SysOps
memberUid: yanzong.chen
memberUid: …
memberUid: …
...

我们进行另一个测试, Require ldap-attribute, 去匹配组中的用户下面是Apache配置:


Order deny,allow
Deny from All
AuthName " Welcometo shuyun ldap . Use your info to pass in !"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPUrlldap://ldap.shuyun.com/ou=People,dc=shuyun,dc=com?uid
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=SysOps,ou=Group,dc=company,dc=com
Require ldap-attribute gidNumber=10001
Satisfy any



AuthzLDAPAuthoritative on 默认为”ON”,这里写出来是为了更清晰。
AuthLDAPGroupAttribute memberUid 表示LDAP组记录有哪些属性,以配合UID。在这种情况下,一个memberUid 包含其组中每一个成员。
AuthLDAPGroupAttributeIsDN off 告诉Apache验证用户时,使用客户端的distinguished name标示名比如:cn=yanzong.chen,ou=SysOps,dc=shuyun,dc=com)。否则,用户名会被使用。在我的LDAP目录中,用户名来自NIS,所以需要关闭(默认为ON)。LDAP目录中可以存储整个转有名称,因此你可以根据你的需求更改此选项。
Require ldap-group 授予获得”SysOps”的组成员,对于多个组,添加一个额外的命令”each(也可能是for each
Require ldap-attribute gidNumber=10001 处理(ID10001)”SysOps”组,如果没有此选项,用户访问将被拒绝。对于多个组,添加额外命令“each”。
Satisfy any 这个指令是必须的。因为我们正在测试多个条件,并希望任何条件授予访问权限都能成功。
用户和组的结合
例子如下,各种选项你都能看懂的应该是,所以你看看吧然后测试测试。
Order deny,allow
Deny from All
AuthName " Welcometo shuyun ldap . Use your info to pass in !"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPUrl ldap://ldap.shuyun.com/ou=People,dc=shuyun,dc=com?uid
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=SysOps,ou=Group,dc=company,dc=com
Require ldap-attribute gidNumber=10001
Require ldap-user yanzong.chen
Satisfy any



调试和部署
Testing LDAP authentication from a Web browser can be frustrating, becausethe only thing you know is whether access was granted or not. You don't get anykind of feedback on why something did not work. For verbose information on eachstep in the process, set theLogLeveldebug option inApache. With debugging active, Apache will record the connection status to theLDAP server, what attributes and values were requested, what was returned, andwhy conditions were met or not met. This information can be invaluable infine-tuning LDAP access controls.
我保留了这段话,因为这段话我虽然看懂了,但是实话是不知道咋操作。因为我的LDAP目前为止除了终端启动模式,我并不知道如何输出日志到文件(我系统的原因貌似。)我猜想可能是要将apache日志的loglevel调整下,然后观察Apache的日志吧。这个大家可以试一下。也可以留言给我。
PS:源英文地址:http://www.opendigest.org/article.php/490  下面文档已做适当修改
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638178-1-1.html 上篇帖子: apache2.X的性能优化 下篇帖子: IO错误 IOErrorEventtype IIS以及Apache/Nginx PHP上传报错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表