标签: openldap

什么是ldap中的别名

什么是ldap中的别名(例如,这里引用了php.net/ldap)它们是否指向系统中的其他对象而不是直接位于找到别名的对象下?

.net php java ldap openldap

5
推荐指数
1
解决办法
2501
查看次数

C#如何向具有多个对象类的LDAP添加条目

我正在尝试使用对象类personuidObject在OpenLDAP中创建一个新的用户记录.问题似乎是使用System.DirectoryServices.DirectoryEntry我发现只有一种方法可以添加一个具有一个对象类的新条目,但不能添加多个对象类.

这个C#代码

DirectoryEntry nRoot = new DirectoryEntry(path);
nRoot.AuthenticationType = AuthenticationTypes.None;
nRoot.Username = username;
nRoot.Password = pwd;

try
{
    DirectoryEntry newUser = nRoot.Children.Add("CN=" + "test", "person");
    newUser.Properties["cn"].Add("test");
    newUser.Properties["sn"].Add("test");
    newUser.Properties["objectClass"].Add("uidObject"); // this doesnt't make a difference
    newUser.Properties["uid"].Add("testlogin"); // this causes trouble
    newUser.CommitChanges();
}
catch (COMException ex)
{
    Console.WriteLine(ex.ErrorCode + "\t" + ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

...导致错误:

-2147016684请求的操作不满足与对象类关联的一个或多个约束.(HRESULT异常:0x80072014)

c# ldap openldap

5
推荐指数
1
解决办法
6072
查看次数

迁移到非弃用的ldap函数时出错

我正在将已弃用的ldap函数更改为不推荐使用的函数.但我遇到了问题ldap_sasl_bind_s. It returns error code 49,这意味着无效的凭据.但我确信凭证有效.否则我补充说

TLS_REQCERT never

TLSVerifyClient never  
Run Code Online (Sandbox Code Playgroud)

/etc/openldap/ldap.conf.我仍然得到错误.

ldap_simple_bind_s(q->ld, binddn, creds.bv_val);  //works well

ldap_sasl_bind_s(q->ld, binddn, LDAP_SASL_SIMPLE , &creds, NULL, NULL, NULL); //returns ldap error code 49 but continues working
Run Code Online (Sandbox Code Playgroud)

主要的问题是:当我使用ldap_sasl_bind_s时,它不会绑定我的ldap架构中的所有attrbiutes.此外,当我搜索现有属性时,它返回NOSUCH错误.

任何帮助,将不胜感激.

c openldap

5
推荐指数
1
解决办法
629
查看次数

使用键值数据库作为具有持久索引的集合

因为下面有点长:这是tl; dr; version:快速键值查找是否存在现有键/值最佳实践,类似于具有持久索引的基于哈希的集合?

我对键值数据库的世界感兴趣,到目前为止还没有弄清楚如何有效地实现以下用例:

假设我们想要序列化一些数据,并通过持久的唯一整数索引在其他地方引用它们.例如:Key = unsigned int,Value = MyData.

数据库应具有快速键查找并确保MyData是唯一的.

现在,当我向数据库插入一个新值时,我可以为它分配一个新的索引键,例如数据库的当前大小,或者为了防止在删除项目后发生冲突,我可以在外部保留一些计数器.

但是,我如何确保不将相同的MyData值插入数据库?到目前为止,它看起来好像这对于键值数据库来说无法有效实现 - 这是正确的吗?即我希望遍历整个数据库只是为了确保MyData的价值并不在那里已经...

那么实施这个的最佳实践是什么?

对于背景:我在KDevelop上工作,我们使用上面的代码分析缓存.我们实际上有一个上述用例1的自定义实现.如果您对内部感兴趣,请搜索Bucket和ItemRepository,并参阅2以了解ItemRepository的示例用法.

但你可能会同意,这段代码很难理解,因而难以维护.我想将其性能与可能导致更简单代码的替代解决方案进行比较 - 但前提是它不会导致严重的性能损失.考虑到围绕OpenLDAP MDB,Kyoto Cabinet和LevelDB等键值存储性能的炒作,这是我想要开始的地方.

我们在KDevelop中所拥有的 - 据我所知 - 基本上是一种混合磁盘/内存中的哈希映射,它会定期保存到磁盘上(当然,在崩溃的情况下会导致严重的数据损坏等). ).项目基于它们的散列值存储在一个位置,当然,只要散列函数很快,它们也允许相对快速的值查找.增加的扭曲是您还获得某种持久性数据库索引,可用于非常有效地查找项目.

所以 - 长话短说 - 如何用一个关键/价值数据库如LevelDB,Kyoto Cabinet,OpenLDAP MDB来做到这一点 - 你说出来了吗?

indexing key-value openldap kyotocabinet leveldb

5
推荐指数
1
解决办法
1093
查看次数

LDAP用户不会自动放入jira中的LDAP组

我在本地安装了Jira 5.x和带有用户和组的OpenLDAP服务器.Jira中的Syncronisation可以完美地覆盖所有用户和组,但用户不属于任何组.我已设置默认组以使LDAP用户能够登录Jira.

我究竟做错了什么?

这是LDAP Schema:

dn: uid=demo.user@domain.com,ou=intern,ou=people,dc=company,dc=local
objectClass: posixAccount
objectClass: account
objectClass: ldapPublicKey
homeDirectory: /home/demouser
loginShell: /bin/bash
cn: Demo User
uidNumber: 10001
gidNumber: 10001
userPassword: {SSHA}xxxxxxxxxxx
uid: demo.user@domain.com


dn: cn=groupname,ou=project,ou=group,dc=company,dc=local
objectClass: posixGroup
description: a funny group for a project
gidNumber: 10018
cn: groupname
memberUid: demo.user@domain.com
memberUid: xyz
memberUid: ...
Run Code Online (Sandbox Code Playgroud)

如果我在Jira中运行测试,我收到以下错误消息:

测试获取用户的成员资格,检索0组.:失败

这些是Jira中的设置: Jira设置

settings ldap jira openldap

5
推荐指数
1
解决办法
5221
查看次数

我的数据(目录)在ubuntu上由slapd(OpenLDAP)存储在哪里?

Ubuntu的12.04机器上安装的slapd后ldapadd,ldapsearch我可以看到它得到了我的数据.

问题是目录在哪里?它在这里是空的:

/var/lib/ldap/
/usr/lib/ldap/
Run Code Online (Sandbox Code Playgroud)

slapd配置目录/etc/ldap/仅包含根设置.

我的数据在哪里?或者如何检查/列出我的后端?

我做了以下初始化:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f db.ldif
Run Code Online (Sandbox Code Playgroud)

db.ldif是:

# Load modules for database type
dn: cn=module,cn=config
objectclass: olcModuleList
cn: module
olcModuleLoad: back_bdb.la
# Create directory database
dn: olcDatabase=bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: bdb
# Domain name (e.g. home.local)
olcSuffix: dc=home,dc=local
# Location on system where database is stored
olcDbDirectory: /var/lib/ldap
# Manager of the database
olcRootDN: cn=admin,dc=home,dc=local
olcRootPW: admin
# Indices in database to …
Run Code Online (Sandbox Code Playgroud)

ubuntu openldap

5
推荐指数
1
解决办法
2万
查看次数

openLDAP的单点登录

首先,我几乎是这个领域的初学者。我应该为我们在公司内部使用的多个网站(使用共享的openLDAP用户和pw数据)找到一个真正的单一登录解决方案。含义:您一次登录并连接到所有假定的站点,而不必一次又一次地重新输入登录凭据。

我对这些内容有所了解,找到了有关SSO,不同解决方案以及与openLDAP结合的大量信息。我读过的大部分内容都倾向于->将openLDAP与Kerberos结合使用。但是我为此找到的所有东西都是相当高级的东西,有点像一个怪物项目。

因此,我的实际问题是:将openLDAP与Kerberos结合以实现SSO是最好的解决方案吗?还有其他值得一提的解决方案吗?当然:我从哪里开始?

kerberos ldap openldap single-sign-on

5
推荐指数
1
解决办法
1719
查看次数

向OpenLDAP添加条目

我刚刚在Ubuntu Server 12.10上安装了OpenLDAP,并使用slapadd -c -l init.ldif以下方法添加了一个ldif文件:

dn:dc=tpw,dc=uca,dc=ma
dc: tpw
objectClass: dcObject
objectClass: top
objectClass: domain

dn: ou=people,dc=tpw,dc=uca,dc=ma
ou: people
objectClass: organizationalUnit
objectClass: top

dn: ou=groupes,dc=tpw,dc=uca,dc=ma
ou: groupes
objectClass: organizationalUnit
objectClass: top

dn: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
uid: admin
sn: Admin
cn: Admin
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
userPassword:: e1NIQX0wRFBpS3VOSXJyVm1EOElVQ3V3MWhReE5xWmM9
mail: admin@uca.ma
givenName: admin

dn: cn=GI,ou=groupes,dc=tpw,dc=uca,dc=ma
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
cn: GI
objectClass: groupOfUniqueNames
objectClass: top

dn: cn=GP,ou=groupes,dc=tpw,dc=uca,dc=ma
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
cn: GP
objectClass: groupOfUniqueNames
objectClass: top

dn: cn=GT,ou=groupes,dc=tpw,dc=uca,dc=ma
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
cn: …
Run Code Online (Sandbox Code Playgroud)

ldap openldap

5
推荐指数
1
解决办法
6822
查看次数

ldap_bind()挂起/冻结

所以我把我的问题简化为一个简单的PHP脚本

test.php

<?php 
  ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); //for logging
  if($con = ldap_connect( 'ldaps:domain.com', 636 )){
    $bind_return = ldap_bind($con, 'username', 'super_secret_password');
  }
?>
Run Code Online (Sandbox Code Playgroud)

当我去的时候localhost\test.php,浏览器指示它正在等待响应,并且只会挂在那里....永远(更准确地说,直到我停止它,有时一小时后,但你明白了).使用xdebug,我能够确定挂断ldap_bind()电话.当我尝试跳过或进入ldap_bind()代码行时,我的xdebug挂起并变得无响应.

记录的输出ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);是:

ldap_create
ldap_url_parse_ext(domain.com)
ldap_bind_s
ldap_simple_bind_s
ldap_sasl_bind_s
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP domain.com:636
ldap_new_socket: 15
ldap_prepare_socket: 15
ldap_connect_to_host: Trying domain.com:636
ldap_pvt_connect: fd: 15 tm: -1 async: 0
Run Code Online (Sandbox Code Playgroud)

之后什么都没有.我不知道该怎么做,谷歌也不善良.

ldap_connect()是成功的,回报是这样的(resource) resource id='2' type='ldap link'. max_execution_time不会中断脚本的执行.如果我while(true){}在有问题的代码行之前放了一些东西,那么max_execution_time会触发,我会看到一个错误.所以ldap_bind()甚至以某种方式阻止PHP环境超时.将代码包装在try/catch块中无助于缓解挂起.

我试过了:

1)多次重启服务器

2)重新安装php5,php-ldap,libapache2-mod-php5和apache2 …

php openldap

5
推荐指数
1
解决办法
1656
查看次数

使用passport-ldapauth npm进行LDAP身份验证

我正在尝试使用passport-ldapauth npm验证openLDAP用户名和密码.执行以下代码时,我总是收到错误 { message: 'Missing credentials' }.请帮助我解决我的代码有什么问题.

var connect = require('connect'),
    app = connect(),
    passport = require('passport'),
    LdapStrategy = require('passport-ldapauth');

// Credentials from the free LDAP test server by forumsys
// More info at: http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/
var OPTS = {
    server: {
        url: 'ldap://<ip>',
        bindDn: '<admin username>',
        bindCredentials: '<admin password>',
        usernameField: "<passing actual username>",
        passwordField: "<password>"
    }
};

passport.use(new LdapStrategy(OPTS));

app.use(passport.initialize());


app.use(connectRoute(function (router) {
        router.post('/login', function (req, res, next) {
            passport.authenticate('ldapauth', {session: false}, function (err, user, info) {
                console.log(info);
                if …
Run Code Online (Sandbox Code Playgroud)

ldap openldap node.js passport.js

5
推荐指数
1
解决办法
2万
查看次数