当安装Drupal 7模块http://drupal.org/project/ldap时,我收到错误.
没有为PHP加载LDAP扩展,因此LDAP将无法正常工作.(目前使用LDAP Extension Loaded Failed)
这是否意味着我必须为PHP安装ldap扩展?如果是这样,我如何在Ubuntu上执行此操作?
我正在尝试使用 Apache Directory 的 LDAP API 从 Activiti 连接到 Active Directory。我想我已经设法对我的用户进行身份验证,但对用户的后续查询一无所获。
这是我的Java代码:
package com.abc.activiti.ldap;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.identity.User;
import org.activiti.engine.impl.Page;
import org.activiti.engine.impl.UserQueryImpl;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import org.activiti.engine.impl.persistence.entity.UserManager;
import org.apache.directory.ldap.client.api.LdapConnection;
import org.apache.directory.ldap.client.api.exception.LdapException;
import org.apache.directory.ldap.client.api.message.BindResponse;
import org.apache.directory.ldap.client.api.message.SearchResponse;
import org.apache.directory.ldap.client.api.message.SearchResultEntry;
import org.apache.directory.shared.ldap.cursor.Cursor;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
import org.apache.directory.shared.ldap.filter.SearchScope;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.mina.core.session.IoSession;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class LDAPUserManager extends UserManager {
private final static Logger logger = LoggerFactory.getLogger(LDAPUserManager.class);
private LDAPConnectionParams ldapConnectionParams;
public LDAPUserManager(LDAPConnectionParams ldapConnectionParams) {
this.ldapConnectionParams = ldapConnectionParams;
} …Run Code Online (Sandbox Code Playgroud) 我们的组织需要 SSL 才能访问我们的 ldap 服务器。当我在 Mac OS X 的联系人应用程序中设置我们的 LDAP 服务器时,我能够很好地搜索我们组织中的人员。但是,使用命令行应用程序 ldapsearch 似乎不起作用。
问题是我们的组织在使用 SSL 时不需要用户名或密码。我似乎无法让 ldapsearch 不需要密码。
这是我正在使用的命令:
ldapsearch -H ldaps://ldap.example.com -b "" -s base "objectclass=*"
SASL/DIGEST-MD5 authentication started
Please enter your password:
Run Code Online (Sandbox Code Playgroud)
这是我的 /etc/openldap/ldap.conf 的内容
HOST ldap.example.com
PORT 636
TLS_REQCERT never
Run Code Online (Sandbox Code Playgroud)
以下是适用于 Mac OS X 的通讯录应用程序的设置,不需要用户名或密码:

用于此服务器的正确 ldapsearch 混合物是什么?
我更改密码或更新用户信息时遇到此错误.我尝试了很多彼此相似的代码,但我仍然遇到了错误.这个问题可能是一个糟糕的CN定义,但在我的情况下应该是正确的,我真的很难过,因为我无法面对这个问题.
这是一个简单的代码,我尝试更新用户的信息(描述),但没有成功.用户"蝙蝠侠"显然存在于AD中.
public class ADConnection {
DirContext ctx = null;
String baseName = ",OU=SoftwareV3,OU=SOFTWARE,DC=SOFTWAREDEV,DC=LOCAL";
String serverIP = "192.168.10.45";
boolean ssl = true;
public ADConnection() {
try {
Hashtable ldapEnv = new Hashtable();
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
if(ssl==true)
{
ldapEnv.put(Context.PROVIDER_URL, "ldaps://192.168.10.45:636/dc=softwaredev,dc=local");
ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
}
else
{
ldapEnv.put(Context.PROVIDER_URL, "ldap://192.168.10.45:389/dc=softwaredev,dc=local");
}
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
ldapEnv.put(Context.SECURITY_PRINCIPAL, new String("softwaredev" + "\\" + "superadmin"));
ldapEnv.put(Context.SECURITY_CREDENTIALS, "passw0rd");
ctx = new InitialDirContext(ldapEnv);
}
catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我知道答案可能是否定的,但是,我想在放弃之前我不妨问问。
假设我的 LDAP 中有 3 个属性……全名、sn 和给定名……无论出于何种原因,管理员或正在输入的人都会输入一个人的“全名”作为姓氏、名字(sn、givenname),但是,我想搜索 firstname lastname (givenname sn)。
是否可以创建这样的过滤器:
(&((givenname sn)=Bob Smith))
Run Code Online (Sandbox Code Playgroud)
我已经试过了,它显然不起作用。这是我的应用程序的新要求,我无权更改全名在 LDAP 中的存储方式。
谢谢。
我在 Ubuntu 14.04 上安装了 openLDAP 服务器并在安装过程中设置了管理员密码。但是现在我无法使用此密码进行连接。cn=admin 存在是因为当我以匿名用户身份登录时我可以看到它。我能做什么?
我需要获取包含目录中所有用户信息的列表。我正在尝试通过以下代码获取:
DirContext ctx = new InitialDirContext(env);
boolean ignoreCase = true;
Attributes matchAttrs = new BasicAttributes(ignoreCase);
matchAttrs.put( new BasicAttribute("") );
//LDAP_Attributes : Attributes of every user e.g. name, phone# etc.
NamingEnumeration answer = ctx.search( "ou=People", matchAttrs, LDAPUser.LDAP_ATTRIBUTES );
Run Code Online (Sandbox Code Playgroud)
由于安全限制,我无法访问 LDAP 服务器,因此无法对其进行测试。请建议上述方法是否正确。谢谢!
我正在尝试使用“搜索”方法在 ldapjs 中进行搜索,但它对我不起作用。
这是来自终端的回应:
> Result is: SearchResponse {
messageID: 2,
protocolOp: 101,
controls: [],
log:
Logger {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
_isSimpleChild: true,
_level: 30,
streams: [ [Object] ],
serializers:
{ req: [Function: req],
res: [Function: res],
err: [Function: err] },
src: false,
fields:
{ name: 'ldapjs',
component: 'client',
hostname: 'nichita-Lenovo-ideapad-500-15ISK',
pid: 29307,
clazz: 'Client' } },
status: 0,
matchedDN: '',
errorMessage: '',
referrals: [],
connection:
TLSSocket {
_tlsOptions:
{ pipe: undefined,
secureContext: [Object],
isServer: …Run Code Online (Sandbox Code Playgroud) 我试图让 Laravel 5.4 使用 LDAP 而不是传统的数据库方法对用户进行身份验证。
已经有一个库,Adldap2/Adldap2-Laravel。问题是这个库:
这在我的情况下不起作用,因为 LDAP 服务器中没有管理员,我 ?w?a?n?t? 必须连接到;只允许使用该应用程序的用户名,没有角色。
如已存在的问题所示,我LoginController使用以下代码修改了该类(出于测试目的,我试图连接到此网页中提供的服务器:在线 LDAP 测试服务器)。
protected function attemptLogin(Request $request) {
$conn_settings = config('adldap.connections')[config('adldap_auth.connection')]['connection_settings'];
$credentials = $request->only(config('adldap_auth.usernames.eloquent'), 'password');
$user_format = env('ADLDAP_USER_FORMAT', 'uid=%s,' . $conn_settings['base_dn']);
$userdn = sprintf($user_format, $credentials[config('adldap_auth.usernames.eloquent')]);
$pass = $credentials['password'];
if(Adldap::auth()->attempt($userdn, $pass, $bindAsUser = true)) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是,一旦使用正确的凭据登录,我就会被送回登录表单。当凭据错误时,我会收到相应的错误消息。
我的配置文件,以防万一:
.env:
ADLDAP_CONTROLLERS=ldap.forumsys.com
ADLDAP_BASEDN=dc=example,dc=com
ADLDAP_USER_FORMAT=uid=%s,dc=example,dc=com
Run Code Online (Sandbox Code Playgroud)
adldap_auth.php:
[
'connection' => env('ADLDAP_CONNECTION', …Run Code Online (Sandbox Code Playgroud) 我正在使用 C# Core 2,使用 Active Directory 作为Novell的身份验证方法- 我已经根据密码部分的工作验证用户,如果 AD 中的用户名和密码正确,则对其进行身份验证。
我想以同样的方式获取登录用户的用户组,以增加进一步的安全性[Authorize(roles="*")]。
下面的代码是我到目前为止所拥有的,我知道连接是正确的,但是我无法在 SearchResults 中得到任何结果,它总是以 0 的计数返回。
我哪里错了?以前没有任何 Active Directory 暴露。
搜索功能:
int searchScope = LdapConnection.SCOPE_BASE;
string searchFilter = "(CN = " + username + ")";
string searchBase = "OU=Users,OU=TOD,OU=Departments,DC=domain,DC=com";
// folder structure Users/TOD/Departments/List of people
// reading members of dynamic group could take long so set timeout to 10 seconds
LdapSearchConstraints constraints = new LdapSearchConstraints();
constraints.TimeLimit = 10000;
#region connection
string host = "mydomain.com";
string un …Run Code Online (Sandbox Code Playgroud)