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

LDAP

充阳秋
2023-03-14

我正在尝试创建一个安全模块,该模块将根据LDAP检查用户凭据(登录时),并在成功登录时生成JWT,以便进一步请求服务器。

目前我的模块工作如下:我有3个rest APIendpoint来提供身份验证(登录、验证JWT、注销),这些endpoint不受保护,因为任何人都必须能够访问这些endpoint,还有1个userUpdateendpoint通过JWTAuthenticationProvider受Spring Security保护

我已经有了主用户并传递给 LDAP 连接,但我找到的大多数关于 LDAP 身份验证的示例都是使用 Spring 安全性的,我认为在这种情况下这不是这样做的方法,因为我需要在登录时验证匹配的 us/pass(而不是用安全性保护我的endpoint)。

谁能告诉我我应该如何进行验证?有什么我不清楚的吗?请问,评论和回答。

谢谢

哦一个编辑:

@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进行身份验证,并且只检查用户和密码是否正确,我将使用其他数据库管理角色和权限

另一个编辑:我有一些使用Spring Security的ldap身份验证的基本ldap结构,但我总是得到糟糕的凭据

再次编辑:我设法使其与 Spring 安全性一起使用,但是(正如预期的那样)我的团队告诉我,我们需要在没有 Spring 安全性的情况下实现该身份验证,以与我们的html" target="_blank">自定义角色加载器和令牌创建集成

共有1个答案

柯天宇
2023-03-14

使用 http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/ldap/authentication/LdapAuthenticationProvider.html 从 LDAP 进行身份验证和获取角色,应该使用 Spring 安全性来完成,我可能错过了 smth,但你能解释一下为什么你不想使用它,因为它是安全标准

 类似资料:
  • 问题内容: 对于Spring Boot应用程序,我使用 批注 成功配置了Spring ,其中包括application.properties中带有s 的依赖项。(糟糕!我找不到示例,所以也许这会对其他人有所帮助。) 片段(如下所示)设置了上下文源,将其注入,然后自动将其连接到我的DirectoryService中。 有没有更好/更干净的方法来在Spring Boot应用中进行设置? applica

  • 问题内容: 以下代码可以正常工作: 如果我取消注释以下行: 启用S​​SL连接并使用此URL: 则程序失败,并且错误与证书有关。 那么,我该怎么解决这个问题呢? 问题答案: 引起原因:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderExcept

  • 问题内容: 我试图让我的自定义Java应用程序使用我们的Active Directory服务器进行身份验证,但由于某种原因我无法使其正常工作。谁能看到为什么呢?这是我的方法如下: 结果: 问题答案: 你尝试过这种方式吗? 也更换 与

  • 问题内容: 我确实有一个Web应用程序,用户必须在其中登录。密码存储在LDAP服务器中。有关LDAP服务器的所有信息都作为外部jndi资源存储在应用程序服务器(glassfish)中。因此,我的应用程序对LDAP服务器一无所知,只得到了如下LdapContext: 在这种情况下,很容易更改或读取为用户存储的信息,但是我如何检查他们的密码?通常我只是做一个新的连接来检查用户密码。像这样: 但是由于我

  • 问题内容: 我可以通过JNDI读取LDAP中存储的密码。但是结果是一些乱码。那么我该如何解密呢? 下面是我的代码: 有什么建议吗?? 提前谢谢了 凯文 问题答案: 您所看到的([B @ 1cd8669)是Java所说的“这是一个字节数组”。 存储的“密码”很可能是真实密码的哈希值或加密版本。顾名思义,密码散列是不可逆的,因此,如果LDAP存储散列,则您将无法查看用户的密码。 如果它是加密的,那么如

  • 问题内容: 我需要通过带有SSL的spring-ldap与LDAP服务器进行通信,并且另一端拥有一个自签名证书。 有什么好心请给我一些指导来进行设置吗? 问题答案: 查看Spring LDAP文档以通过HTTP(S)连接到LDAP服务器: 就自签名证书而言,您可以将证书链导入信任库并设置以下VM参数: 或在运行时覆盖信任库,例如: 请记住,这两个选项都将覆盖默认的JVM信任库。因此,如果您使用不同

  • 问题内容: 我正在玩LDAP和Java搜索。这是我的一个简单组织的LDIF导出 如何运行Java代码段以从LDAP服务器获取所有用户?我的Apache DS目录服务器上没有身份验证设置。 问题答案:

  • 问题内容: 我正在尝试使用LDAP和Java(1.4)在Active Directory中启用用户。但是我一直收到以下错误: com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDir Context.java:255)处com.sun.jndi.toolkit.ctx.ComponentDirConte