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

LDAPUserDetailSimple.HashCode中的LDAP Spring Security性NullPointer

冯宏浚
2023-03-14

配置-

@Bean
public DefaultSpringSecurityContextSource ldapContext() {
    DefaultSpringSecurityContextSource context = new DefaultSpringSecurityContextSource(
            config.get("ldap.context", "ldap://x.x.x.x/dc=company,dc=com"));
    context.afterPropertiesSet();
    return context;
}

/**
 * LDAP Bind Authenticator
 * 
 * @return
 */
@Bean
public BindAuthenticator bindAuthenticator() {
    BindAuthenticator authenticator = new BindAuthenticator(ldapContext());
    String[] dnPatterns = { config.get("ldap.dnPattern", "uid={0},ou=People") };
    authenticator.setUserDnPatterns(dnPatterns);
    return authenticator;
}

/**
 * LDAP authorities populator
 * 
 * @return
 */
@Bean
public DefaultLdapAuthoritiesPopulator ldapAuthoritiesPopulator() {
    DefaultLdapAuthoritiesPopulator ldapAuthoritiesPopulator = new DefaultLdapAuthoritiesPopulator(ldapContext(),
            config.get("ldap.group.search.base", "ou=Group"));
    ldapAuthoritiesPopulator.setGroupRoleAttribute(config.get("ldap.group.role.attribute", "cn"));
    ldapAuthoritiesPopulator.setGroupSearchFilter(config.get("ldap.group.search.filter", "(memberUid={0})"));
    ldapAuthoritiesPopulator.setIgnorePartialResultException(true);
    ldapAuthoritiesPopulator.setRolePrefix(config.get("ldap.user.role.prefix", "ROLE_"));
    ldapAuthoritiesPopulator.setSearchSubtree(true);
    ldapAuthoritiesPopulator.setConvertToUpperCase(true);
    return ldapAuthoritiesPopulator;
}

@Bean
public LdapAuthenticationProvider ldapAuthenticationProvider() {
    LdapAuthenticationProvider authProvider = new LdapAuthenticationProvider(bindAuthenticator(),
            ldapAuthoritiesPopulator());
    authProvider.setUseAuthenticationRequestCredentials(true);
    authProvider.setHideUserNotFoundExceptions(false);
    authProvider.setUserDetailsContextMapper(ldapContextMapper());
    return authProvider;
}

@Bean
public LdapUserDetailsContextMapper ldapContextMapper() {
    return new LdapUserDetailsContextMapper();
}

@Configuration@EnableRedisHttpSession(redisNamespace=“CMS”,maxInactiveIntervalInSeconds=14400)@ImportResource(“classpath:application-context.xml”)公共类SessionRepositoryConfig扩展了AbstractHttpSessionApplicationInitializer{

@Autowired
Configuration config;

@Bean
public JedisConnectionFactory connectionFactory() {
    List<String> clusterNodes = Arrays.asList(config.get("redis.cluster.session"));
    return new JedisConnectionFactory(new RedisClusterConfiguration(clusterNodes));
}

共有1个答案

丁灿
2023-03-14

做了很多挖掘。令人惊讶的是,日志配置导致了这个问题。一旦为实例正确配置了日志xml,问题就消失了。

不确定logback与此有何关系。但上面的解决方案工作得很好。

谢谢

 类似资料:
  • 我正在尝试构建一个包含JComboBoxs作为渲染器和编辑器组件的表。这大部分工作正常,但是有两件事我似乎无法解决。 单元格之间的制表应该使JComboBox处于活动状态 单击下拉箭头应立即打开选项列表 关于1,可编辑组合应该将焦点放在嵌入的文本字段中,固定组合应该允许向下箭头打开选项列表。 关于2,我发现这有时取决于其他单元格当前的活动状态,但有时我必须双击。我无法使这种行为保持一致。 为了方便

  • 我有以下测试: 属性位于中,看起来如下: 但是,我一直得到第25行,这正是具有初始化的行: Java.lang.NullPointerException位于com.example.estrans.esjavaapitests.(esjavaapitests.Java:25)位于sun.reflect.nativeConstructorAccessorImpl.newInstance0(原生方法)位

  • 问题内容: 我已经看到过这种表示法使用了很多东西,我想知道,这两种表示法之间有什么显着区别吗? 和 我一直都在使用,因为我觉得它看上去更干净,但是我不太确定浏览器的解释是否不同于。 有谁知道哪个更好或更正确? 问题答案: 当单位为时,虽然单位是可选的,但我倾向于将其保留,因为然后我可以使用Chrome的开发者工具通过点击值并按向上/向下箭头键来调整值。没有单位,这实际上是不可能的。 此外,CSS缩

  • 问题内容: 您将如何在Swift中实现以下模式? 所述类被初始化,其中包含的词典JSON数组。这些字典用于初始化类。但是,当访问或属性时,对象的初始化会延迟进行。 问题答案: 看来这个问题已经得到了很大的回答,但是回过头来看原始帖子,这是(IMHO)Swift中相对简洁的翻译。关键是您可以链接惰性属性。请注意,我同时使用了类函数和闭包- 两者都很好。

  • 问题内容: hibernate中的property标签的lazy属性允许按照以下链接延迟加载属性:http : //docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/mapping.html#mapping- declaration -属性 lazy(可选-默认为false):指定在首次访问实例变量时应延迟获取此属性。它需要构建时字节码检测

  • 问题内容: 我为该标题表示歉意。我找不到更好的方法来解释这种情况。 我使用URL http://www.exampledepot.com/egs/java.util/Props.html中所述的Property类加载属性文件。 我的问题是我可以在该属性文件中使用属性吗? 例: test.properties 其他语法有可能吗? 谢谢 问题答案: 以前从未见过。您当然 可以 制作自己的预处理器。只要