ldap服务启动时报错
移除(或删除) /var/lib/ldap的这些文件: alock __db001 __db002 __db003 __db004 __db005 __db006
然后重启就可以启动了!
在 LDAP 的协议之中,很像硬盘目录结构或倒过来的树状结构。LDAP 的根就是全世界,第一级是属于国别 (countries) 性质的层级,之后可能会有公司 (organization) 的层级,接着是部门 (organizationalUnit),再来为个人。而就像文件,每个人都会有所谓的显名 (distinguished name, 简称 dn),dn 可能像酱子 cn=John Smith,ou=Accounts,o=My Company,c=US。
<php
// 本例使用到 connect, bind, search, interpret search
// result, close connection 等等 LDAP 的功能。
echo "<h3>LDAP 搜寻测试</h3>";
echo "连接中 ";
$ds=ldap_connect("localhost"); // 先连上有效的 LDAP 服务器
echo "连上 "$ds"<p>";
if ($ds) {
echo "Binding ";
$r=ldap_bind($ds); // 匿名的 bind,为只读属性
echo "Bind 返回 "$r"<p>";
echo "Searching for (sn=S) "; // 找寻 S 开头的姓氏
$sr=ldap_search($ds,"o=My Company, c=US", "sn=S");
echo "Search 返回 "$sr"<p>";
echo "S 开头的姓氏有 "ldap_count_entries($ds,$sr)" 个<p>";
echo "取回姓氏资料 <p>";
$info = ldap_get_entries($ds, $sr);
echo "资料返回 "$info["count"]" 笔:<p>";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn 为: " $info[$i]["dn"] "<br>";
echo "cn 为: " $info[$i]["cn"][0] "<br>";
echo "email 为: " $info[$i]["mail"][0] "<p>";
}
echo "关闭链接";
ldap_close($ds);
} else {
echo "<h4>无法连接到 LDAP 服务器</h4>";
}
>
Redmine拿着从页获取的用户名和密码去服务端认证
不通过的原因可以从两个方面着手检查
1,Redmine自身是否拿着正确的用户名和密码去LDAP服务器查询了
2,LDAP服务数据库里是否存在咱们认为的正确的用户名和密码
仅供参考:
import ldap
from auth_ldapconfig import LDAPSearch,PosixGroupType,ActiveDirectoryGroupType
AUTH_LDAP_SERVER_URI = 'ldap://gfacser020xxxxcom:389'
AUTH_LDAP_BIND_DN = 'cn=test,ou=ldpusers,dc=xxx,dc=com'
AUTH_LDAP_BIND_PASSWORD = "xxxxx"
AUTH_LDAP_USER_SEARCH = LDAPSearch('DC=xxxx,DC=com', ldapSCOPE_SUBTREE, '(sAMAccountName=%(user)s)',)
# Populate the Django user from the LDAP directory
AUTH_LDAP_USER_ATTR_MAP = {
'first_name': 'mailNickname',#mailNickname givenName
'email': 'mail',
}
# This is the default
AUTH_LDAP_ALWAYS_UPDATE_USER = False
# Cache group memberships for 5 minutes to reduce LDAP traffic
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
AUTH_LDAP_GLOBAL_OPTIONS = {
ldapOPT_X_TLS_REQUIRE_CERT: False,
ldapOPT_REFERRALS: False,
}
# Keep ModexampleBackend around for per-user permissions and maybe a local superuser
AUTHENTICATION_BACKENDS = (
'auth_ldapbackendLDAPBackend',
'djangocontribauthbackendsModelBackend',
)
0条评论