cn=abc"and'def我在目录中有一个对象。我正在使用 Java 搜索 API:
public LDAPSearchResults search(java.lang.String base,
int scope,
java.lang.String filter,
java.lang.String[] attrs,
boolean typesOnly,
LDAPSearchConstraints cons)
throws LDAPException
Run Code Online (Sandbox Code Playgroud)
我尝试将搜索过滤器指定为abc"and'def和abc\"and\'def。两者都返回:
错误的搜索过滤器
请帮助我了解当对象名称中包含单引号或双引号时如何构建搜索过滤器。
我了解关系数据库的基础知识、SQL 和 MySql 之间的基本区别以及如何连接到 SQL 和 MySql 数据库、设置表、模式、运行查询等。
我已经开始使用一台新设备,据我所知,该设备上有一个 LDAP 数据库(准确地说是 Splicecom Maximiser 呼叫服务器)。我有 LDAP 凭据,但对 LDAP 一无所知。
是否有相当于适用于 LDAP 的 MySql Workbench 或 Microsoft SQL Server Management Studio 的工具?LDAP 数据库是关系数据库还是其他数据库模型?我能否以连接到 SQL 或 MySql 数据库并运行查询的相同方式连接到 LDAP 数据库,还是完全不同?
我听到数据库这个词,并认为我以前使用过数据库,数据库有表、模式和可用于查询的语言。如果我了解数据库的布局(哪些数据在哪些表中,我的主键是什么,我需要加入什么,索引什么以及我需要索引什么等),那么学习我可以采取什么查询语言我了解 SQL 和 MySql 并将其应用于 LDAP。
我是否走在正确的道路上?
谢谢
是否可以使 ldapjs (带有 Nodejs)使用 TLS 而不仅仅是 SSL ?
如果是,我该如何设置?
如果没有,他们是否有其他支持 TLS 的 Nodejs LDAP 库?
我能找到的唯一信息是 ldaps:// ,后者将通过 SSL 连接(请注意,这不会使用 LDAP TLS 扩展操作,而是实际上使用到端口 636 的 SSL 连接,如 LDAP v2 中一样)。
并且在主页上写着不支持 TLS 扩展操作(说真的,只使用 SSL)
如果我需要使用 TLS 连接到 ldap 服务器,有什么解决方案建议吗?
ldap_search 未返回超过 1000 个用户。我还将 sizelimit 设置为 0。让我知道解决方案。
我正在尝试在 Linux 系统上使用 lmdb 后端配置 openldap-2.4.43 。到目前为止还没有成功。
slapd.conf:
include /opt/openldap/etc/schema/core.schema
include /opt/openldap/etc/schema/cosine.schema
include /opt/openldap/etc/schema/inetorgperson.schema
allow bind_v2
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
database config
rootdn "cn=Manager,cn=config"
rootpw {SSHA}sMXtPWSAL9yEgDslsXMZiM+qgLJZW9VO
database mdb
suffix "dc=mydomain,dc=com"
rootdn "cn=Manager,dc=mydomain,dc=com"
rootpw {SSHA}sMXtPWSAL9yEgDslsXMZiM+qgLJZW9VO
directory /var/openldap/data/main/
maxsize 10485760
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
Run Code Online (Sandbox Code Playgroud)
straced slaptest (/opt/openldap/sbin/slaptest -f slapd.conf -F ./slapd.d/) 结果(最后部分):
stat("/var/openldap/data/main/", {st_mode=S_IFDIR|0700, st_size=40, ...}) = 0
getpid() = 2440
brk(0x828a000) = 0x828a000
open("/var/openldap/data/main//data.mdb", O_RDONLY) = -1 ENOENT (No such file or directory)
time(NULL) = 1453993047
write(2, "56aa2c57 mdb_db_open: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Go 中的 ldap 重置 MS Active Directory 密码属性。AD 不能很好地发挥作用,ldap.PasswordModifyRequest所以我正在使用ldap.NewModifyRequest. (使用 gopkg.in/ldap.v2)
AD 将接受用引号引起来的密码和 utf16le 编码,在 Python 中我可以使用
unicode_pass = unicode("\"secret\"", "iso-8859-1")
password_value = unicode_pass.encode("utf-16-le")
mod_attrs = [(ldap.MOD_REPLACE, "unicodePwd", [password_value])]
l.modify_s(user_dn, mod_attrs)
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 Go 中做到这一点?使用ldap.NewModifyRequest和Replace我可以更改其他属性,但我需要传递Request []string更新的值,这需要是我的编码密码,并且当我玩...时遇到类型不匹配的utf16.Encode问题
modify := ldap.NewModifyRequest(dn)
modify.Replace("unicodePwd", []string{"encodedsecret"})
Run Code Online (Sandbox Code Playgroud)
谢谢。
我正在将身份验证过程转换为支持异步,VS 2015 IDE 警告我以下消息: 异步方法缺少“等待”运算符并将同步运行...等等...
不管怎样,代码连接到 LDAP 存储并验证用户的帐户等等...我已经尝试过使用 wait 进行各种操作,但我只是在这里遗漏了一些东西。我将代码恢复到之前的状态。我将不胜感激任何有关使其正确支持异步的指导...
这是代码:
public async Task<User> GetAsyncADUser(PrincipalContextParameter param)
{
try
{
if (UseLDAPForIdentityServer3)
{
using (var pc = new PrincipalContext(ContextType.Domain, param.ADDomain, param.ADServerContainer, param.ADServerUser, param.ADServerUserPwd))
{
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(pc, param.UserNameToValidate);
if (userPrincipal != null)
{
bool isvalid = pc.ValidateCredentials(userPrincipal.DistinguishedName, param.UserPasswordToValidate, ContextOptions.SimpleBind);
if (isvalid)
{
User user = new User { ad_guid = userPrincipal.Guid.ToString(), Username = param.UserNameToValidate, Password = param.UserPasswordToValidate };
return user;
}
}
}
}
}
catch (Exception ex)
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用端口 636 连接到 LDAP,但出现错误“服务器无法运行”,但如果我尝试连接到端口 389,则它可以正常连接并获取数据
这是我正在使用的代码
DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com:636/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);
Run Code Online (Sandbox Code Playgroud)
有了这个,如果我尝试连接,我会收到错误“服务器无法运行”
但是如果我把代码改成这个
DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com:389/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);
Run Code Online (Sandbox Code Playgroud)
或者甚至删除端口(默认情况下我认为使用 389 端口)
DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);
Run Code Online (Sandbox Code Playgroud)
然后它正常连接并获取数据。
任何人都可以帮我通过 636 端口连接 LDAP,因为在测试服务器环境中我需要通过 636 连接不能使用 389。
我是 LDAP 新手。
到目前为止,我已经成功地使用 LDAP 配置了 rabbitMQ 并对其进行了身份验证,如果它是针对单个 AD 的。我正在使用以下配置:
RabbitMQ 配置文件,
auth_backends,[{rabbit_auth_backend_ldap, rabbit_auth_backend_internal},rabbit_auth_backend_internal]
Run Code Online (Sandbox Code Playgroud)
在 RabbitMQ 管理中,我手动创建了一个没有设置密码的用户名(它有效)
但是,让我们说
我有一个 AD 组(称为“Rabbit 用户组”),里面有 3 个用户(User1、User2、User3)。
“Rabbit User Group”的位置在:sample.companyname.com > City Name (OU) > Groups (OU) > IT Groups (OU) > “Rabbit User Group”(安全组)。
我可以知道我应该如何在 RabbitMQ 管理和配置文件中配置它,以便一旦我更新特定组,组内的所有成员都将进行身份验证并具有相同的权限(例如,只有该组具有管理员权限) )?而且我不需要在rabbitMQ管理中手动创建每个单独的用户进行身份验证?。
我已将以下内容添加到我的 rabbitmq 配置文件中
{
tag_queries, [
{administrator,{in_group,'CN="Rabbit User Group",OU="City Name", OU=Groups, OU="IT Group",DC=sample,DC=companyname,DC=com',"uniqueMember"}},
{management, {constant, true}}
]
}
Run Code Online (Sandbox Code Playgroud)
并尝试在没有密码的情况下在rabbitMQ管理中创建一个名为“Rabbit User Group”的用户名。但是当我尝试以“User1”身份登录时,却无法登录。
我尝试了几种方法,但我不确定我遗漏了哪一部分,而且它们似乎都不起作用。
这是我的整体配置文件。
[
{
rabbit,
[
{
auth_backends,[{rabbit_auth_backend_ldap, rabbit_auth_backend_internal},rabbit_auth_backend_internal]
}
]
},
{ …Run Code Online (Sandbox Code Playgroud) 我是 Kubernetes 和 Helm 的新手,尝试使用我自己的 LDAP自定义 stable/grafana Helm 图表(https://github.com/helm/charts/tree/master/stable/grafana)。图表文件的auth.ldap一部分grafana.ini和ldap部分有什么区别values.yaml?如何配置 LDAP 主机地址和凭据?