早期用的Md5或是SHA

原文和密文是绝对对等的,一对一的键值对,如果想让它变得足够安全,需要往里面加盐,只不过这个盐是你自己制定的规则,例如,用户输入了一个密码123456,我们公司之前规则是把收尾调换,中间加入公司名称!

有个不好的地方就是如果别人知道了你的加盐规则,可以反过来破解。。。

spring security

使用BCrypt密码加密,这个加盐规则是随机的!!!每次动态变化!!

不过这个加盐位置是固定的,但是每一次位置也不是固定的,也就是说,它只把指定位置上的盐进行扣掉,

至于那一位是什么东西它不管。因为它也不知道,它每次都是随机加载进去的

 

微服务鉴权JWT

token

认证和授权

认证就是登陆,就是告诉系统你是谁!!!

授权是让系统根据你当前登陆的角色,给与相应的权限

任何安全性的工作都要分两步,一步是认证,一步是授权,必须先认证才能进行授权

如果你不认证(即登陆),系统不知道你是谁?如果授权?

 


import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
* 安全配置类
*/
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception {
/**
* authorizeRequests所有security全注解配置实现的开端,表示开始说明需要的权限
* 需要权限部分分向部分:第一部分是拦截的路径,第二部分是访问该路径需要的权限。
* antMatchers表示拦截什么路径,/**表示所有,permitAll表示任何权限都可以访问。
* anyRequest表示任何的请求,authenticated认证后才能访问
* .and().csrf().disable();固定写法,表示使csrf拦截失效。
* csrf是一种网络攻击技术,也就是springsecurity安全级别设置的有点偏高,使用这个后,
* springsecurity会认为除了所有我自己内部请求外,都被认为是在攻击我
*/
http
.authorizeRequests()
.antMatchers("/**").permitAll()
.anyRequest().authenticated()
.and().csrf().disable();
}
}