JHipster / LDAP-首次连接时在JHipster BDD中创建新用户

时间:2018-11-27 11:27:07

标签: spring ldap

我是JHipster的新手,并从官方来源(JHipster LDAP)配置了LDAP。

现在可以进行LDAP身份验证并且可以正常工作。

现在,我想在JHipster数据库中的第一次连接上创建新用户。

名称/邮件/ ...的用户信息在LDAP上。

创建必须在从LDAP成功认证之后进行。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好,我找到了答案。

实现Jhipster LDAP连接后,您需要通过将mapUserFromContext方法替换为以下代码来修改CustomAuthenticationManager:authenticate类:

@Override
        public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> clctn) {
            Optional<User> isUser = userRepository.findOneWithAuthoritiesByLogin(username);
            if(!isUser.isPresent()){
                UserDTO newUser = new UserDTO();
                newUser.setLogin(authentication.getName());
                newUser.setFirstName(ctx.getStringAttribute("givenName"));
                newUser.setLastName(ctx.getStringAttribute("sn"));
                newUser.setEmail(ctx.getStringAttribute("mail"));
                newUser.setLangKey("fr");
                newUser.setImageUrl("youimageurl");
                userService.registerUser(newUser, "1");
            }
            isUser = userRepository.findOneWithAuthoritiesByLogin(username);
            final User user = isUser.get();
            Set<Authority> userAuthorities = user.getAuthorities();
            Collection<GrantedAuthority> grantedAuthorities = new ArrayList<>();
            for(Authority a: userAuthorities){
                GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(
                    a.getName());
                grantedAuthorities.add(grantedAuthority);
            }
            return new org.springframework.security.core.userdetails.User(
                username, "" , grantedAuthorities);
        }

如果在JHipster数据库中未知登录用户(在LDAP身份验证成功后发生),则会创建一个新用户(newUser)。

使用ctx.getStringAttribute(“ ldapProperty”)从LDAP获取信息。