我正在尝试创建一个安全模块,用于检查用户凭证(登录时)以及成功登录时是否生成JWT,以便向服务器发出进一步请求。没有弹簧安全性的ldap&JWT认证
目前我模块的工作原理是这样的: 我有3个休息API端点提供认证(登录,验证JWT,注销)没有被保护,任何人都必须能够访问这些端点, 也是1个userUpdate端点保护通过JWTAuthenticationProvider提供弹簧安全性
所有与JWT有关的东西已准备就绪,现在我只需创建一个方法来检查LDAP中的用户名和密码是否正确。但我有一些麻烦理解我应该怎么做
我已经有主用户,并通过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的,但我总是再次变得糟糕凭据
编辑:我设法使之与春季安全工作,但(如预期),是由我的团队说,我们需要实现没有弹簧安全性的身份验证,以便与我们的自定义角色加载器和令牌创建集成
因为我已经有一个authenticat (JWT之一)来保护我的api的用户端点 –
首先您可以配置多个auth提供程序,secondary可以使用RememberMeAuthenticationFilter进行jwt令牌处理,希望这是有道理的 – NikSa
嗯没有多少有一个auth提供商。在那个笔记上我将如何配置安全性?我的意思是 '@Override protected void configure(AuthenticationManagerBuilder身份验证)抛出异常{auth.authenticationProvider(provider); } '做基于提供者的配置。我可以有多个这些配置吗? –