ldap认证,ldap认证对象不存在
LDAP/AD认证
检查测试ldap配置
如果从LDAP服务器中删除了用户,则该用户也会在GitLab中被阻止。用户将立即被阻止登录。但是,LDAP检查缓存时间为一小时(请参阅注释),这意味着已经登录或通过SSH使用Git的用户仍然可以访问GitLab最多一个小时。在GitLab管理区域中手动阻止用户以立即阻止所有访问。
在集成AD后,为了兼容前期Gitlab创建的用户账号,在创建AD用户账号时只需保证 sAMAccountName,email 属性与Gitlab用户的 Username、电子邮箱 的值一致即可(密码可以不同),使用这种方式创建的AD账户登录Gitlab时Gitlab不会创建新用户。
Nginx Proxy Manager 是一个基于MIT协议的开源项目,这个项目实现了通过web界面管理控制一些Nignx常用的功能,比如重定向、反向代理、404、甚至提供了免费的SSL,Nginx-proxy-ldap-manager在Nginx Proxy Manager的基础上添加了nginx-auth-ldap认证模块。
docker-compose
管理界面端口: 81
默认管理员密码:
使用AD认证时才配置Advanced,auth_ldap_servers值与nginx.conf文件中的ldap_server值对应
【1】 How to configure LDAP with GitLab CE
【2】 General LDAP Setup
【3】 nginx-auth-ldap
【4】 LDAP 认证
【5】 nginx-proxy-ldap-manager
metersphere集成LDAP实现统一身份认证
勾选“启用LDAP认证”,由于我配置的用户名就是uid,使用手机号登录。
配置保存后,测试连接,并且测试登录。
比较简单,主要就对LDAP集成完毕。
ldap的用户属性和Metersphere本地用户的属性对应关系:
{"name": "description","email": "mail", "username":"uid"}
Jenkins上集成多个LDAP服务器认证
1. 安装LDAP插件
[ ]
2. 添加一个Jenkins LDAP配置
Server :这里填写LDAP server的地址即可
root DN : 这里填写你需要的base路径, 如果这里不填则勾选 Allow blank rootDN ,但是user search base和group search base则不能为空,否则会报找不到object的错误
User search base :可以不填,则会查找改root DN下的所有用户
User search filter :一般包含三种, uid={0}; cn={0}; sAMAccountName={0}, 如果不确定LDAP Server怎样设置的,则可以依次尝试
Group search base : 可以不填,则会查找改root DN下的所有组
Manager DN :认证查询该LDAP服务器的用户DN,包括该用户的完整CN, OU, DC
Manager Password : 上述用户的密码
其他可以保持默认配置
3. 添加另外一个LDAP Server 的配置
点击 Add Server , 可以按照上述配置继续配置,这两个可以是不同的配置
配置多个ldap时建议勾选上 Ignore if unavailable ,这样如果其中一个ldap server不可用,会尝试使用下一些个ldap server。
4. 配置过程中遇到的问题
4.1 错误日志:
User lookup: failed for user "your_username" LdapCallback;null; nested exception is javax.naming.PartialResultException [Root exception is javax.naming.CommunicationException: dc1.dc2.dc3:389 [Root exception is java.net.UnknownHostException: dc1.dc2.dc3]] LDAP Group lookup: could not verify.
其中your_username是你试图登陆的一个AD用户; dc1.dc2.dc3是你设置的DC=dc1, DC=dc2, DC=dc3,我这里出现了该问题是因为LDAP server我提供的是一个IP地址
原因:该问题是找不到 dc1.dc2.dc3该域名,请在AD上配置域名解析 your_LDAP_IP 到dc1.dc2.dc3或者临时在系统的/etc/hosts文件中添加该域名解析
4.2 错误日志:
LdapCallback;LDAP response read timed out, timeout used:60000ms.; nested exception is javax.naming.NamingException: LDAP response read timed out, timeout used:60000ms.; remaining name ''
这个问题是因为connection pool的连接有问题,解决方案是在Jenkins的LDAP配置中添加一个环境变量 com.sun.jndi.ldap.connect.pool 设为 false , 具体可参考:[ ]
4.3 我使用的是docker 容器跑的Jenkins,有一些有用的命令
docker logs --following container_name/ID 查看日志
docker exec --user root -it container_name/ID /bin/bash 以root用户登陆该容器
4.4 如果登陆速度较慢,可以enable cache来减少查询LDAP server的负载
openVPN使用ldap认证
注意:客户端也可以使用证书和用户名密码双认证,证书我们可以所有用户使用统一的client证书,用户名使用ldap认证
如果不想每次登陆openVPN都是用用户名密码,请查看我前面所写的文章
Deepin系统基于LDAP统一认证
本人近期参与团队做Deepin相关的项目时,需要如同微软AD一样对各终端进行统一认证管理,则本想着通过搜索网上相关资料和官方相关文档一步一步操作很快搞定,却发现网络上Deepin的这块指导文档几乎没有。通过本人对Linux系统的理解摸索和查看Deepin dde-session-ui源码资源,经反复的测验,最终走通了整个流程。为表示支持一下国产开源系统DeepinOS,决定整理分享一下相关指南以方便大家更快的使用DeepinOS深度性的功能,并集成应用到工作环境中去。
注:文档不会对LDAP Server部署与配置操作进行说明,请查找网上相关资源,这方面比较多。另外本人应用的Deepin系统环境为V20社区版本。
默认此处安装时有Console UI可以配置LDAP client,可以忽略或按流程进行连接LDAP Server端设置,如果选择忽略则进行下面第二步操作。
这两个为主要的LDAP客户端认证配置文件,如果在第一步通过UI界面配置了应该会自动生成相关的配置,则不需要手动修改配置。
可以参看一下本人环境配置实例,注意"X"需要根据自己实际的LDAP服务器信息选择协议与地址等配置(这方面配置可参照debian ldap客户端安装指南)。
/etc/pam.d/common-auth
/etc/pam.d/common-account
/etc/pam.d/common-password
/etc/pam.d/common-session-noninteractive
可参考一下本人环境的相关配置
配置文件位置
/usr/share/dde-session-ui/dde-session-ui.conf
1)首先检验保障LDAP SERVER正常性(这块有ldapsearch工具等)
2)开启Deepin系统SSH服务,先通过SSH来验证LDAP用户与认证是否正常
3)tail -f /var/log/auth.log 测试时实时查看日志信息,如果出错可以日志反馈信息排查问题点(本人遇到几次LDAP服务器连接问题,日志上可以明显提示出来并可查看是哪个进程报错,如是libnss还是pam_ldap相关的信息等)
希望本文对各位有帮助,同时望有更多的技术爱好者用行动去支持国产化系统的发展。