标签: spring-ldap

无法在Spring Security中使用Spring LDAP

我想根据我们的AD验证用户,所以我知道我需要spring security和spring ldap.

这是我的POM中的内容:

<groupId>org.springframework.security</groupId>
<artifactId>org.springframework.security.core</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
...
<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap</artifactId>
    <version>1.3.0.RELEASE</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

以下是我的secruity-context中的相应条目:

<ldap-authentication-provider user-dn-pattern="CN=0},OU=CAN,OU=NOT,OU=TELL,OU=YOU"/>
    ..  
<!-- LDAP Security Configuration -->
<ldap-server url="ldap://10.9.1.1:389/DC=TELL,DC=YOU"/>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的应用程序使用:

mvn jetty:run
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

If you are using LDAP with Spring Security, please ensure that you include the spring-ldap jar file in your application; nested exception is java.lang.ClassNotFoundException: org.springframework.ldap.core.support.BaseLdapPathContextSource:
java.lang.ClassNotFoundException: org.springframework.ldap.core.support.BaseLdapPathContextSource
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
    at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
    at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
    at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:375)
    at …
Run Code Online (Sandbox Code Playgroud)

java spring maven-2 spring-security spring-ldap

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

每次使用时为新连接动态设置 spring ldap 基础

这个问题是关于最佳实践以及如果可能的话。

我需要知道是否可以在代码中动态更改 ldap 上下文源的基础?

我的 ldap bean 连接了以下内容

<ldap:context-source
    url="ldap://<url>"
    base="dc=example,dc=local"
    username="<user>@example.local"
    password="<pass>"
/>
Run Code Online (Sandbox Code Playgroud)

我可以在代码中根据给定的动态变化参数将上下文源更改为另一个基础吗?

例如,如果我想将基数更改为 dc=example2,dc=local 。

如果我以编程方式设置 LdapContextSource 这将没有问题。

spring-ldap

4
推荐指数
1
解决办法
4972
查看次数

Spring Security LDAP配置

我正在使用Spring Security,并希望使用注释了解Spring Active Directory LDAP的配置.我需要将我的项目与我的工作场所的LDAP服务器连接起来.

security spring ldap active-directory spring-ldap

4
推荐指数
1
解决办法
1108
查看次数

Spring的LdapTemplate搜索:PartialResultException:未处理的Continuation Reference(s); 剩余名称'/'

我通过LDAP为特定应用程序添加用户,使用spring制作.

虽然这适用于大多数情况,但在某些情况下,它不起作用......

检索我使用的用户:

public class LdapUserServiceImpl implements ILdapUserService {

    @Override
    public List<LdapUserVO> getUserNamesByQuery(String query) {
        return ldapTemplate.search(
            query().countLimit(15)
                    .where("objectClass").is("user")
                    .and("sAMAccountName").isPresent()
                    .and(query()
                            .where("sAMAccountName").like("*" + query + "*")
                            .or("sAMAccountName").is(query)
                            .or("displayName").like("*" + query + "*")
                            .or("displayName").is(query))
            ,
            new AttributesMapper<LdapUserVO>() {
                public LdapUserVO mapFromAttributes(Attributes attrs) throws NamingException {
                    LdapUserVO ldapUser = new LdapUserVO();
                    Attribute attr = attrs.get(ldapUserSearch);
                    if (attr != null && attr.get() != null) {
                        ldapUser.setUserName(attr.get().toString());
                    }
                    attr = attrs.get("displayName");
                    if (attr != null && attr.get() != null) {
                        ldapUser.setDisplayName(attr.get().toString());
                    }
                    return ldapUser; …
Run Code Online (Sandbox Code Playgroud)

spring ldap ldap-query spring-ldap ldap-client

4
推荐指数
1
解决办法
7111
查看次数

如何让LdapContextSource指向UnboundID InMemoryDirectoryServer?

我有一组基于 Spring LDAP 框架的旧自动化测试用例。它们连接到外部 LDAP 服务器。我正在考虑用嵌入式服务器替换外部服务器。UnboundID InMemoryDirectoryServer 看起来很有吸引力,特别是如果有一种方法允许基于 Spring LDAP 的客户端连接基于 UnboundID 的嵌入式服务器。问题是:怎么做?我是 LDAP 新手,请帮忙。

spring-ldap unboundid-ldap-sdk

3
推荐指数
1
解决办法
1859
查看次数

如何从ldap DirContextOperations获取memberOf属性

我想获得用户所属的组列表,目前我可以获得如下的大多数属性

CustomLdapUserDetails.Essence essence = new CustomLdapUserDetails.Essence();
essence.setDn(dn);
Object passwordValue = ctx.getObjectAttribute(passwordAttributeName);
String givennameValue = (String)ctx.getObjectAttribute("givenname");
String snValue = (String)ctx.getObjectAttribute("sn");
String titleValue = (String)ctx.getObjectAttribute("title");
essence.setFirstname(givennameValue);
essence.setLastname(snValue);
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何获取memberOf属性.如果我将整个DirContextOperations输出为String,我会得到以下内容

org.springframework.ldap.core.DirContextAdapter: dn=uid=emp123 {rdn=uid=emp123,
whenCreated=20110816063203.0Z,
objectCategory=CN=fompanyPerson,CN=Schema,CN=Configuration,CN={9F17F445-56C4-42D9-
B7C6-B630FFEA7F07}, badPwdCount=0, otherTelephone=123-456789, businessUnit=IREIRE BU, 
ntAccount=DMN1\emp123, managerID=emp987, objectGUID=5?
?e6A??????/, mail=emp123@somewhere.com, uid=emp123, companyWorkRelationship=EMP, 
memberOf[0]=CN=ABC IREIRE,OU=AutoGroups,DC=entdir,DC=gtn,DC=com, 
memberOf[1]=CN=azgEntJazzUsers,OU=AutoGroups,DC=entdir,DC=gtn,DC=com, companySite=DBL, 
companyCostCenter=91827, companyBusinessGroup=IREIRE BG, ntDomain=DMN1, instanceType=4, 
corpID=emp123, objectSid=  I???&?C?k?J???????, st=XX, badPasswordTime=0, vdejoindn=P-
ENTDIRXXX-1:uid=emp123,DC=entdirXXX,DC=gtn,DC=com, companySourceSystem=C-WORKSYSTEM, 
objectClass[0]=top, objectClass[1]=person, objectClass[2]=organizationalPerson, 
objectClass[3]=user, objectClass[4]=inetOrgPerson, objectClass[5]=fompanyPerson, 
company=ABC DEV, name=emp123, sn=Smith, exchangeAlias=emp123, telephoneNumber=1-987-6543, 
ntDomainRelative=DMN1, uSNChanged=999111, physicalDeliveryOfficeName=DXI, 
ntAccountRelative=DMN1\emp123, cn=Smith, John, exchangeServer=someServer, 
documentumUserName=Smith …
Run Code Online (Sandbox Code Playgroud)

java spring ldap spring-ldap

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

如何使用 Spring 和 Java 从 LDAP 获取 userPassword 属性

我想在 java 中使用 spring 从 ldap 获取 userPassword 属性。

当然这不起作用:

context.getStringAttribute("userPassword");
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

context.getObjectAttribute("userPassword");
Run Code Online (Sandbox Code Playgroud)

我可以得到这个属性..但是现在从对象我怎么能得到哈希密码?

java spring ldap spring-ldap

3
推荐指数
1
解决办法
5749
查看次数

如何在LDIF文件中添加属性?

我想使用 LDIF 文件通过 Spring 测试 LDAP。

我不使用xml。

我实现了从 LDIF 文件读取所有基本属性。

如何添加一些自定义属性?

到目前为止我使用了这个语法

dn: cn=name,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
cn: name
sn: name
uid: name
mail: name@gmail.com
givenName: name
userPassword: namespassword
changetype: modify
add: telephonenumber
telephonenumber: 555-2468
Run Code Online (Sandbox Code Playgroud)

...但是它无法读取该文件,因为它无法识别“changeType”属性。

编辑问题

我有这个文件:

dn: dc=springframework,dc=org
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: springframework

dn: ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: groups

dn: ou=subgroups,ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: subgroups

dn: ou=people,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: people

dn: ou=space cadets,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit …
Run Code Online (Sandbox Code Playgroud)

java ldap spring-ldap ldif

3
推荐指数
1
解决办法
3327
查看次数

spring-ldap NameNotFoundException 没有这样的对象

当我遇到此异常时,我正在使用 spring-ldap:

????????[LDAP: error code 32 - No Such Object]; 
nested exception is javax.naming.NameNotFoundException: 
[LDAP: error code 32 - No Such Object]; remaining name 'uid=lyh,ou=Users,dc=xinsight,dc=com'
Run Code Online (Sandbox Code Playgroud)

1.我的配置

<bean id="ldapTemplate"  class="org.springframework.ldap.core.LdapTemplate">
    <constructor-arg ref="contextSource"/>
</bean>

<bean id="contextSource"
      class="org.springframework.ldap.core.support.LdapContextSource">
    <property name="url" value="ldap://168.2.8.77:389" />
    <property name="base" value="dc=xinsight,dc=com" />
    <property name="userDn" value="cn=Manager,dc=xinsight,dc=com" />
    <property name="password" value="psw" />
    <!--<property name="referral" value="follow"/>-->
</bean>
Run Code Online (Sandbox Code Playgroud)

2.我的代码

public void create() {
    User user = new User();
    user.setFdUsername("lyhtest");
    user.setFdTenantName("root");
    user.setFdLdapPassword("ldappsw");
    user.setFdUserid(Long.valueOf(10));

    Name dn = buildDn(user);
    ldapTemplate.bind(dn, null, buildAttributes(user));
}

/**
 * ????DN …
Run Code Online (Sandbox Code Playgroud)

spring-ldap

3
推荐指数
1
解决办法
3511
查看次数

Spring Boot/Spring LDAP获取用户成员列表

我想通过从如下结构的LDAP存储库查询其ID来获取用户属性的列表

dn: uid=E000001 ,ou=People,o=Company,o=Internal
cn: BOB DOLE
statusid: active
memberof: cn=foo_group, cn=Foos, ou=Groups, o=Company,o=Internal
memberof: cn=bar_group, cn=Foos, ou=Groups, o=Company,o=Internal

dn: uid=E000002 ,ou=People,o=Company,o=Internal
cn: MARK TEST
statusid: active
memberof: cn=foo_group, cn=Foos, ou=Groups, o=Company,o=Internal
memberof: cn=bar_group, cn=Foos, ou=Groups, o=Company,o=Internal
Run Code Online (Sandbox Code Playgroud)

例如,我查询用户ID"E00001".我想要归还这个

["cn=foo_group, cn=Foos, ou=Groups, o=Company,o=Internal", "cn=bar_group, cn=Foos, ou=Groups, o=Company,o=Internal"
Run Code Online (Sandbox Code Playgroud)

java spring spring-ldap spring-boot

3
推荐指数
1
解决办法
7606
查看次数