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

带SHA512密码的Spring启动和LDAP

顾涵衍
2023-03-14

我正在编写一个小应用程序,将其用作微服务的身份验证服务器。(我们正在划分一个旧的单片应用程序)。

此应用程序必须通过LDAP服务器(受用户名和密码保护)登录。用户密码存储为SHA512哈希。但我总是会遇到“糟糕的凭证”错误

这是我的密码

网络安全配置。JAVA

@Configuration
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {


        @Override
        protected void configure(HttpSecurity http) throws Exception {

            http.authorizeRequests().anyRequest().fullyAuthenticated().and().formLogin();

        }

        @Override
        protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
            auth.authenticationProvider(ldapAuthProvider());
            auth.ldapAuthentication().passwordCompare().passwordEncoder(new LdapShaPasswordEncoder()).passwordAttribute("userPassword");
            super.configure(auth);
        }


    public LdapAuthenticationProvider ldapAuthProvider() {

        DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource("ldap://myldaphost:389/");
        contextSource.setUserDn("cn=myuser");
        contextSource.setPassword("mypassword");



        FilterBasedLdapUserSearch userSearch = new FilterBasedLdapUserSearch("", "(&(cn={0})(estado=activo))", contextSource);


        BindAuthenticator bindAuthenticator = new BindAuthenticator(contextSource);
        bindAuthenticator.setUserSearch(userSearch);


        LdapAuthenticationProvider provider = new LdapAuthenticationProvider(bindAuthenticator);

        return provider;

    }
}

波姆。xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-authenticating-ldap</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.7.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!-- tag::security[] -->
    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.ldap</groupId>
        <artifactId>spring-ldap-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-ldap</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
    <!-- end::security[] -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

HomeController.java

@RestController
public class HomeController {

    @RequestMapping("/")
    public String index() {
        return "Welcome to the home page!";
    }

}

applicationContext安全性。来自当前可用的旧应用程序的xml

<beans>


<!-- SECURITY ENABLED -->
<beans profile="security-enabled">
    <!-- Data  Data Base & LDAP-->      
    <bean id="ldapAuthProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
        <constructor-arg>
            <bean id="bindAuthenticator" class="org.springframework.security.ldap.authentication.BindAuthenticator">
                <constructor-arg ref="contextSource" />
                <property name="userSearch" ref="userSearch" />
            </bean>
        </constructor-arg>
    </bean>

    <bean id="userSearch"
        class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
        <constructor-arg index="0" value="" />
        <constructor-arg index="1" value="(&amp;(cn={0})(estado=activo))" />
        <constructor-arg index="2" ref="contextSource" />
    </bean>


    <bean id="contextSource"
        class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
        <constructor-arg value="myurl" />
        <property name="userDn" value="myuser" />
        <property name="password" value="mypassword" />
    </bean>

    <security:authentication-manager alias="authenticationManager">
        <security:authentication-provider ref="ldapAuthProvider" />
    </security:authentication-manager>
</beans>

共有1个答案

毛德华
2023-03-14

我自己解决了

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests().anyRequest().fullyAuthenticated().and().formLogin();

    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.ldapAuthentication().userSearchFilter("(cn={0})(estado=activo)").contextSource().url("ldap://myurl:389/")
                .managerDn("cn=myadmin").managerPassword("mypass");

    }

}
 类似资料:
  • 我有我的PHP应用程序,当我创建用户我运行这个。 下一步,当我试图在获取密码后登录时,我通过这个javascript p.value=hex_sha512(userPwdControl.value)散列; 然后在运行这个 以上所有代码都是通过php实现的。 现在通过我的Android我想做这个功能p.value=hex_sha512(userPwdControl.value);得到哈希,我尝试通过

  • 本文向大家介绍JavaScript SHA512加密算法详细代码,包括了JavaScript SHA512加密算法详细代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaScript SHA512加密算法,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注呐喊教程的最新内容。

  • 问题内容: 我写了一个脚本来备份我的MySQL数据库,方法是: 一个cron每天晚上启动它,并将结果发送到另一台服务器。 清晰地显示在我的脚本中,每个人都可以以适当的权限查看它。我也被告知有关/ proc问题(可以在哪里查看cmd运行)。 MySQL文档说: 在命令行上指定密码应该被认为是不安全的。请参见第7.6节“保持密码安全”。 我在任何地方都找不到这个神奇的7.6节。 处理自动mysqldu

  • 每当我启动Hadoop集群时,系统都会询问密码。 我已经在.ssh文件夹中添加了密钥。 开始-dfs.sh 19/01/22 20:38:56警告util.nativeCodeLoader:无法为您的平台加载本机Hadoop库...使用内置Java类(如果适用)在[localhost]xxxx@localhost's password上启动namenode:localhost:启动namenode

  • 问题内容: 我试图弄清楚如何使用crypto模块对nodejs中的密码进行加盐和哈希处理。我可以这样做来创建哈希密码: 但是我对以后如何验证密码感到困惑。 问题答案: 在您使用的任何持久性机制(数据库)中,您都将在哈希值和迭代次数之间存储结果哈希,这两者都是纯文本。如果每个密码使用不同的盐(您应该这样做),则还必须保存该信息。 然后,您将比较新的纯文本密码,使用相同的盐(和迭代次数)对其进行哈希处