2017-04-25 43 views
0

我正在尝试创建一个安全模块,用于检查用户凭证(登录时)以及成功登录时是否生成JWT,以便向服务器发出进一步请求。没有弹簧安全性的ldap&JWT认证

目前我模块的工作原理是这样的: 我有3个休息API端点提供认证(登录,验证JWT,注销)没有被保护,任何人都必须能够访问这些端点, 也是1个userUpdate端点保护通过JWTAuthenticationProvider提供弹簧安全性

所有与JWT有关的东西已准备就绪,现在我只需创建一个方法来检查LDAP中的用户名和密码是否正确。但我有一些麻烦理解我应该怎么做ldap users

我已经有主用户,并通过conect到ldap,但我发现大多数关于ldap身份验证的例子是与春季安全,我不认为多数民众赞成在这种情况下做到这一点,因为我需要验证匹配我们/通过登录(而不是保护我的端点安全)。

任何人都可以告诉我我应该怎么做验证?任何我不清楚的东西?请询问并评论和回答。

感谢


哦一个编辑:

@Override 
public AuthenticationResponse login(AuthenticationRequest authenticationRequest) { 
    checkNotNull(authenticationRequest, "The authenticationRequest is a required argument!"); 

    AuthenticationResponse authenticationResponse = AuthenticationResponse.builder().build(); 

    //currently a pseudo authentication, here is where i should authenticate against LDAP 
    Optional<Usuario> optionalUsuario = service.findByNombreUsuario(authenticationRequest); 

    if (optionalUsuario.isPresent()) { 
     Usuario usuario = optionalUsuario.get(); 

     String token = JwtTokenUtil.generateToken(authenticationRequest); 
     authenticationResponse.setAuthenticationToken(token); 

     repository.saveToken(UserToken.builder() 
       .nombreUsuario(usuario.getNombreUsuario()) 
       .roles(usuario.getRoles()) 
       .build(), token); 

,你可以看到我的意图,以使对LDAP认证只在登录时,只检查用户和传球都是正确的,我将管理使用其他数据库的角色和权限


另一个编辑:我有一些bas为LDAP身份验证IC LDAP结构中使用Spring Security的,但我总是再次变得糟糕凭据


编辑:我设法使之与春季安全工作,但(如预期),是由我的团队说,我们需要实现没有弹簧安全性的身份验证,以便与我们的自定义角色加载器和令牌创建集成

回答

0

使用http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/ldap/authentication/LdapAuthenticationProvider.html从LDAP进行身份验证和获取角色,应该使用spring安全性,我可能错过了smth, t要使用它,因为它是安全标准的

+0

因为我已经有一个authenticat (JWT之一)来保护我的api的用户端点 –

+0

首先您可以配置多个auth提供程序,secondary可以使用RememberMeAuthenticationFilter进行jwt令牌处理,希望这是有道理的 – NikSa

+0

嗯没有多少有一个auth提供商。在那个笔记上我将如何配置安全性?我的意思是 '@Override protected void configure(AuthenticationManagerBuilder身份验证)抛出异常{auth.authenticationProvider(provider); } '做基于提供者的配置。我可以有多个这些配置吗? –