【发布时间】:2017-09-22 23:22:53
【问题描述】:
我正在尝试创建一个安全模块,该模块将根据 LDAP 检查用户凭据(登录时),并在成功登录时生成 JWT 以进一步请求服务器。
目前我的模块是这样工作的: 我有 3 个其他 API 端点来提供不受保护的身份验证(登录、验证 JWT、注销),因为任何人都必须能够访问这些端点, 以及 1 个通过 JWTAuthenticationProvider 受弹簧安全保护的 userUpdate 端点
所有与 JWT 相关的东西都准备好了,现在我只需要创建一个方法来检查 LDAP 是否用户和密码正确。但我在理解我应该怎么做时遇到了一些麻烦
我已经拥有主用户并传递给 ldap,但是我发现的关于 ldap 身份验证的大多数示例都使用 spring 安全性,我认为在这种情况下不是这样做的方法,因为我需要验证匹配us/pass 仅在登录时(而不是安全地保护我的端点)。
谁能告诉我我应该如何进行验证?有什么我不清楚的吗?请提问、评论和回答。
谢谢
哦,一个编辑:
@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 进行身份验证,并且仅检查用户和密码是否正确,我将使用其他数据库管理角色和权限
另一个编辑:我有一些基本的 ldap 结构,用于使用 spring 安全性的 ldap 身份验证,但我总是得到错误的凭据
再次编辑:我设法使它与 spring security 一起工作,但是(如预期的那样)我的团队告诉我们,我们需要在没有 spring security 的情况下实现该身份验证,以与我们的自定义角色加载器和令牌创建集成
【问题讨论】:
-
嗨,费尔南多,您找到解决问题的方法了吗?如果是这样,请与我们分享。最好的。
标签: java authentication spring-security ldap jwt