cas de sesión único de aprendizaje (II) de base de datos de la sal de cifrado md5 cifrado autenticación

cas de sesión único de aprendizaje (II) autentica la base de datos

Descripción cas web oficial

archivo POM

Agregue el paquete de base de datos de autenticación necesarios
estoy usando MySQL, MySQL por lo que añadir el paquete de controladores

    <dependencies>
<!--        cas database 认证支持-->
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jdbc</artifactId>
            <version>${cas.version}</version>
        </dependency>
<!--mysql driver-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>
    </dependencies>

yaml

#SSL配置 证书
server:
ssl:
 enabled: true
 key-store: classpath:thekeystore
 key-store-password: changeit
 key-password: changeit

cas:
authn:
 jdbc:
   query:
      #数据库连接
     - url: jdbc:mysql://127.0.0.1:3306/blog_cas?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL
        =false
       # 用户名
       user: blog-cas
       # 密码
       password: blog-cas
       # 方言
       dialect: org.hibernate.dialect.MySQLDialect
       # 数据库驱动
       driverClass: com.mysql.jdbc.Driver
       #        idleTimeout: 5000
       #查询账号密码SQL,必须包含密码字段
       sql: select  username,password from user where username=?
       # 指定密码字段
       fieldPassword: password

Crear una tabla en la base de datos de usuario
Aquí Insertar imagen Descripción
reenvasado después de su lanzamiento, puede utilizar el usuario a / 1 de sesión

encriptación MD5

md5 se puede calcular como una longitud de texto claro contraseña fija (32) de la cadena, la irreversible

cas:
  authn:
    jdbc:
      query:
      	-   passwordEncoder:
            type: DEFAULT
            encodingAlgorithm: MD5

md5 valor de la consulta mysql de 1, la copia en la tabla de usuarios

seleccionar md5 ( '1')

sal cifrado MD5

cas web oficial explicó base de datos Codificar autenticación
cifrado valor MD5 MD5 no es particularmente seguro, dos contraseñas en texto plano idénticos son la misma solución, el cifrado de sal a este problema, incluso con la misma contraseña en texto plano, puede tener diferente valor de la contraseña, se puede lograr una persona una contraseña .
Después de sales de adición de contraseña cifrada a las sales privadas y públicas sales MD5 valor calculado, de modo que una persona para lograr una contraseña

YML

# 盐加密
cas:
  authn:
    jdbc:
      encode:
        # jdbc
        -   url: jdbc:mysql://127.0.0.1:3306/blog_cas?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
            # 驱动
            driverClass: com.mysql.jdbc.Driver
            # 方言
            dialect: org.hibernate.dialect.MySQL5Dialect
            # 数据库用户名
            user: blog-cas
            # 数据库密码
            password: blog-cas
            # 加密方式
            algorithmName: MD5
            # 加密迭代次数
            numberOfIterations: 2
            # 密码字段
            passwordFieldName: password
            # 动态盐值
            saltFieldName: username
            # 静态盐值
            staticSalt: 123
            sql: SELECT username,password FROM user WHERE username =?

Generar el valor sal
paquete requerido

	        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.0</version>
<!--            <scope>test</scope>-->
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    package jsong;

    import org.apache.shiro.crypto.hash.ConfigurableHashService;
    import org.apache.shiro.crypto.hash.DefaultHashService;
    import org.apache.shiro.crypto.hash.HashRequest;
    import org.apache.shiro.util.ByteSource;
    import org.junit.Test;

    public class CreateSaltPassword {
        // 静态盐值
        private String staticSalt = "123";
        // 加密算法
        private String algorithmName = "MD5";
        // 密码
        private String encodedPassword = "1";
        // 用户名 动态盐值
        private String dynaSalt = "test";
        // 加密迭代次数
        private int numberOfIterations = 2;

        @Test
        public void test() throws Exception {
            ConfigurableHashService hashService = new DefaultHashService();
            hashService.setPrivateSalt(ByteSource.Util.bytes(this.staticSalt));
            hashService.setHashAlgorithmName(this.algorithmName);
            hashService.setHashIterations(this.numberOfIterations);
            HashRequest request = new HashRequest.Builder()
                    .setSalt(dynaSalt)
                    .setSource(encodedPassword)
                    .build();
            String res = hashService.computeHash(request).toHex();
            System.out.println(res);
        }
    }

La existencia de la base de datos y el valor de sal generada prueba de nombre de usuario, porque el nombre de usuario, la contraseña, incluso si los mismos, diferentes usuarios tendrán diferentes sales valores
utilizando la prueba / 1 usuario puede iniciar sesión
Aquí Insertar imagen Descripción

Artículo de referencia

Publicado 83 artículos originales · ganado elogios 21 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/JsongNeu/article/details/104227262
Recomendado
Clasificación