当前位置: 首页 > 知识库问答 >
问题:

Spring安全返回52e

卫沈义
2023-03-14

我正在尝试通过Spring Security进行LDAP身份验证。但它返回一个错误:

错误代码49-80090308:LDAPPER:DSID-0C090D9,注释:AcceptSecurityContext错误,数据52e,v2580]

我的代码:

auth.ldapAuthentication()
            .contextSource().url("ldap://server:389/dc=main,dc=domain,dc=ru")
            .managerDn("uid=user,ou=Domain Users,dc=mydomain,dc=ru").managerPassword("password")
            .and()
            .userSearchBase("ou=student")
            .userSearchFilter("(cn={0})");
}

可以是什么样的错误(不包括错误的凭据)?

共有1个答案

端木野
2023-03-14

这是工作。。。也许任何人都能帮上忙。authenticationProvider(ldapAuthenticationProvider());授权。擦除凭据(true);

@Bean
public DefaultSpringSecurityContextSource contextSource(){

DefaultSpringSecurityContextSource contextSource =
        new DefaultSpringSecurityContextSource(Arrays.asList("ldap://url:389/"),"dc=ttu,dc=ru");
contextSource.setUserDn(userDn);
contextSource.setPassword(passwordForLDAP);
contextSource.setReferral("follow");
return contextSource;
}

@Bean
public LdapAuthenticationProvider ldapAuthenticationProvider(){
return new 
LdapAuthenticationProvider(ldapAuthenticator(),ldapAuthoritiesPopulator());
}

@Bean
public LdapAuthenticator ldapAuthenticator(){
BindAuthenticator authenticator = new BindAuthenticator(contextSource());
authenticator.setUserSearch(userSearch());
return authenticator;
}

@Bean
public DefaultLdapAuthoritiesPopulator ldapAuthoritiesPopulator(){
 DefaultLdapAuthoritiesPopulator ldapAuthoritiesPopulator =
        new DefaultLdapAuthoritiesPopulator(contextSource(),"ou=TTU");
ldapAuthoritiesPopulator.setSearchSubtree(true);
ldapAuthoritiesPopulator.setIgnorePartialResultException(true);
//ldapAuthoritiesPopulator.setGroupSearchFilter("member={0}");
ldapAuthoritiesPopulator.setRolePrefix("ROLE_");
ldapAuthoritiesPopulator.setConvertToUpperCase(true);
return ldapAuthoritiesPopulator;
}

@Bean
public FilterBasedLdapUserSearch userSearch(){
FilterBasedLdapUserSearch filterBasedLdapUserSearch =
        new FilterBasedLdapUserSearch("","(sAMAccountName={0})",contextSource());
filterBasedLdapUserSearch.setSearchSubtree(true);
return filterBasedLdapUserSearch;
}
 类似资料:
  • 从Spring Boot 1.3.3应用程序中使用Spring Security 4.0.3。 该应用程序有两种类型的HTTP内容:“API”是REST API,“UI”是基于web的二手界面(Thymeleaf Spring web MVC)。 应用程序的REST API的大多数endpoint都是安全的,使用的是Basic,但有些endpoint不是,并且应该始终可用。 简化的配置如下所示:

  • 在这个留档Spring Security MVC Test中描述了如何使用Spring Security测试安全的ressource。我遵循了提供的所有步骤,但访问受保护的ressource仍然会返回错误代码401(未经授权)。 这是我的测试课 我的资源服务器配置: 如果你想看看整个项目,你可以在这里找到。我已经尝试了不同的测试运行程序和教程中描述的所有内容,但我找不到一个解决方案,如何在测试期间

  • 我正在使用Spring进行MVC测试 这是我的测试课 这里是MVC配置 这是安全配置 当我运行测试时,测试失败,并显示以下消息: 我知道它失败是因为url受到Spring Security性的保护,但当我运行应用程序时,即使没有经过身份验证,我也可以访问该url。 我做错什么了吗?

  • 我有这个功能 我用它来表示,我知道T现在不是空的,所以给我它的非空的形式。 我对函数不满意,有更好的方法吗?我觉得我错过了一些基本的东西

  • 问题内容: 我在我们的应用程序中使用Spring安全性,并希望使用存储在数据库中的更改密码选项的密码来验证用户输入。 密码如下存储在DB中。 在此,用户输入的密码使用上述逻辑进行编码并存储在DB中。现在,我只是想从用户那里获取更改密码的密码。从用户那里获得密码后,我使用上述逻辑进行编码,然后尝试与数据库进行比较。即使我使用相同的逻辑进行编码,编码后的值似乎也有所不同。 我的配置来自: 我不确定比较