有没有人试过通过LDAP/AD(OpenLDAP/ActiveDirectory)使用身份验证机制?什么中间件可以自动化这些东西?
我的OpenLDAP中有一组用户,我希望从中获取一些信息,例如"cn"和"userPassword".
但是,当我检索这些详细信息时,密码不是纯文本,即使它在我的LDAP服务器中设置为此密码.
任何想法如何解决这个问题?
我试图使用命令在我的OpenLDAP实例中从Oracle的JNDI教程导入以下示例:
ldapadd -x -D cn=admin,dc=example,dc=com -W -f refserver.ldif
Run Code Online (Sandbox Code Playgroud)
在哪里,refserver.ldif看起来像这样:
dn: o=JNDITutorial,dc=example,dc=com
o: JNDITutorial
objectclass: top
objectclass: organization
dn: ou=All, o=JNDITutorial,dc=example,dc=com
ou: All
objectclass: top
objectclass: organizationalunit
dn: ou=People, o=JNDITutorial,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=People,o=JNDITutorial
dn: ou=People, ou=All, o=JNDITutorial,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=People,o=JNDITutorial
dn: ou=NewHires, ou=All, o=JNDITutorial,dc=example,dc=com
ou: NewHires
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=NewHires,o=JNDITutorial
Run Code Online (Sandbox Code Playgroud)
这取得了部分成功,报告了以下内容:
adding new entry "o=JNDITutorial,dc=example,dc=com"
adding new entry "ou=All, …Run Code Online (Sandbox Code Playgroud) 我尝试向ldap添加新条目,我不知道为什么它不起作用.
我有addPeople.ldif档案:
dn: ou=People,dc=example,dc=com,dc=au
ou: people
description: All people in organisation
objectClass: organizationalUnit
Run Code Online (Sandbox Code Playgroud)
我输入以下命令:
ldapadd -x -D "cn=Manager,dc=example,dc=com,dc=au" -w secret -f ~/addPeople.ldif
Run Code Online (Sandbox Code Playgroud)
结果:
adding new entry "ou=People,dc=example,dc=com,dc=au"
ldap_add: No such object (32)
Run Code Online (Sandbox Code Playgroud)
根据quickstart openldap文档命令:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
Run Code Online (Sandbox Code Playgroud)
收益:
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=example,dc=com,dc=au
# search result
search: 2
result: 0 Success
# numResponses: 2
# …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个使用 LDAP 作为身份验证方法的应用程序。我想知道LDAP协议是否有一个标准的成员资格属性来保存用户的组?到目前为止memberOf正在工作OpenLDAP,Active Direcotry但不在Apache DS. 我在 RFC 中找不到这个属性,所以我有点困惑。我应该使用该memberOf属性还是我需要采用旧时尚的方式遍历所有组以查找哪个组具有member?
在 openldap 文件中添加密码策略时,从命令行运行时会引发错误
root@openldap-server:/etc/ldap/slapd.d# ldapadd -D cn=admin,dc=zariga,dc=com -w password -f passwordpolicy.ldif
adding new entry "cn=DefaultPPolicy,ou=Policies,dc=zariga,dc=com"
ldap_add: Object class violation (65)
additional info: no structural object class provided
Run Code Online (Sandbox Code Playgroud)
这是 LDIF 文件
dn: cn=DefaultPPolicy,ou=Policies,dc=zariga,dc=com
cn: DefaultPPolicy
objectClass: pwdPolicy
objectClass: top
pwdAttribute: userPassword
pwdMaxAge: 3024000
pwdExpireWarning: 1814400
pwdInHistory: 4
pwdCheckQuality: 1
pwdMinLength: 9
pwdMaxFailure: 4
pwdLockout: TRUE
pwdLockoutDuration: 600
pwdGraceAuthNLimit: 0
pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdAllowUserChange: TRUE
pwdSafeModify: FALSE
Run Code Online (Sandbox Code Playgroud) 是他们设置用户角色和权限的任何标准方法。
选项 1:创建组并在其中分配成员。
我的人 dn 如下。
DN: uid=55e44a75e4b0f16711714165,ou=people,dc=cofinding,dc=com
Run Code Online (Sandbox Code Playgroud)
我为角色创建了组。并分配成员
DN: cn=ADMIN,ou=roles,dc=cofinding,dc=com
Run Code Online (Sandbox Code Playgroud)
并在此处添加了具有 ADMIN 角色的成员。在 ADMIn 角色中添加了近 5 万名成员。
选项 2:在人员中添加自定义值角色。例如,我将 dn 创建为 user_role
DN: uid=55e44a75e4b0f16711714165,ou=people,dc=cofinding,dc=com
Run Code Online (Sandbox Code Playgroud)
在人中我们可以添加 user_role=ADMIN,MASTER_ADMIN
是他们的任何其他选择或标准做法。由于角色在任何身份验证过程中都非常重要。
我正在将 openldap 与 phpldapadmin 一起使用,并且我正在尝试检查某个用户的组是什么。这是我的计划...
这是我尝试过的,但没有用
docker-compose exec openldap ldapsearch -x -H "ldap://openldap" -D "cn=admin,dc=openldap" -w admin -b "cn=root,ou=django,dc=openldap" '(&(objectClass=*)(member=cn=superuser,ou=groups,dc=openldap))'
Run Code Online (Sandbox Code Playgroud)
PS:我是 ldap 的新手,这是我正在使用的图像
我正在尝试通过 LDAP 服务器对我的用户(从我的 RN 应用程序)进行身份验证(我已经找到一个尝试在此处进行身份验证,并且它有效!)。每次收到用户的凭据(用户名和密码)时,我都可以使用 Firebase 创建自定义令牌,并将其保存在 Firebase 实时数据库中。
主要问题是我不知道如何将我的应用程序与 LDAP 服务器连接,我调查并发现我必须安装openLDAP或ldapjs之类的东西,但我不明白如何进行身份验证我的猜测是:
任何帮助或建议都会受到欢迎,谢谢:) 抱歉我的英语不好。
openldap ldapjs react-native firebase-authentication firebase-admin
我们目前有一个 Keycloak 领域,我们希望将所有现有用户导出到 LDAP(其密码完好无损),因此我们可以为不支持 OpenID Connect 或 SAML 但支持 LDAP 的其他位置添加登录支持。
鉴于密码凭证使用 pbkdf2-sha256 算法存储在 Keycloak MySQL 用户数据库中,我不得不使用 OpenLDAP 2.4.47 和 contrib 模块来支持 LDAP 端的这一点(我也相信我已经启用了这个模块在配置中)。
我无法使用此处描述的格式将现有的(从 Keycloak)转移到 LDAP:https : //github.com/hamano/openldap-pbkdf2
请原谅我使用 PHP,但它是我目前最熟悉的编程语言。
我已经尝试使用 HASH_ITERATIONS、SALT 和 VALUE 字段以及在 PHP 手册中 base64_encode 下的注释中提供的 base64url_encode 自定义函数来制作“改编的 Base64”字符串,并在以下情况下提供构建的字符串作为 userPassword 字段创建 LDAP 用户。用户已在 LDAP 中成功创建,但我无法使用我刚创建的用户的凭据对 LDAP 进行身份验证。
/*
This example migrates a single user, to be adapted to a loop later, if it works.
NOTE: KC_* constants are defined in an external config.php file, such …Run Code Online (Sandbox Code Playgroud)