3 free_java

尚未进行身份认证

暂无相关简介

等级
TA的排名 1w+

spring security 5 (11)-防止异地重复登录

本篇介绍如何实现一个用户只允许同时在一个地点登录基本配置 protected void configure(HttpSecurity http) throws Exception { http.formLogin().and() .sessionManagement() .maximumSessions(1).expiredUrl("/expired");maxi...

2019-04-21 13:01:52

spring security 5 (10)-digest摘要认证

摘要认证和基本认证一样,也是由http协议定义的,对用户使用的角度来说,它们并没有区别。但是摘要认证的安全性要高出很多,并且永远不会以明文传输密码。必须先理解基本认证基本配置spring security内置了DigestAuthenticationFilter,封装了摘要认证逻辑,不需要你去构建AuthenticationManager。但是构建UserDetailsService是必不...

2019-04-14 11:29:46

spring security 5 (9)-httpBasic基本认证

httpBasic是由http协议定义的最基础的认证方式。每次请求时,在请求头Authorization参数中附带用户/密码的base64编码,参考base64。这个方式并不安全,不适合在web项目中使用。但它是一些现代主流认证的基础,而且在spring security的oauth中,内部认证默认就是用的httpBasic。httpBasic基本配置注意,这里没有配formLogin,也...

2019-04-07 10:42:11

spring security 5 (8)-密码加密BCryptPasswordEncoder

从springsecurity5开始,要求必须手动配置密码加密方式,spring官方推荐使用BCrypt加密,并明确指出sha和md5都是不安全的。本篇仅介绍BCrypt的用法。BCrypt加密与验证 BCryptPasswordEncoderencoder=newBCryptPasswordEncoder(); Stringresult=encoder.en...

2019-03-31 11:54:54

spring security 5 (7)-异常处理

springsecurity主要有两大异常,登录时认证失败异常401,及请求时没有权限异常403。AuthenticationException(401)登录不成功,如密码错误等可抛出BadCredentialsException,它是AuthenticationException的子类。if(!code.equals("123")){...

2019-03-24 09:33:35

spring security 5 (6)-认证过滤器

上一篇实现了自定义认证,但是要想彻底自定义整个认证流程,还差一个环节,即认证过滤器,它是认证的入口。本篇仍然以验证码为例,介绍自定义认证过滤器。自定义Authentication第4篇讲过,自定义过滤器的主要作用就是生成未认证Authentication,作为入参给AuthenticationManager认证。而在第5篇,根据AuthenticationProvider的support...

2019-03-17 08:34:04

spring security 5 (5)-自定义认证

第3篇讲过,用户登录时,系统会读取用户的UserDetails对其认证,认证过程是由系统自动完成的,主要是检查用户密码。而在现实中,登录方式并不一定是检查密码,也可能是验证码或其他,此时就需要自定义认证。AuthenticationProvider自定义认证逻辑在AuthenticationProvider的authenticate方法中完成,第4篇讲过,认证的入参是一个未认证Authen...

2019-03-10 09:49:44

spring security 5 (4)-认证流程

本篇介绍登录时的认证流程,及其相关的重要概念接口等,现在只需要有一个基本概念,以后将以此为基础介绍自定义配置,到时结合本篇会更加清晰。SecurityContext用户登录时,会将用户相关信息组装成一个Authentication对象,而SecurityContext的主要作用就是保存Authentication。并且 SecurityContext会通过session来维持状态,所以登录...

2019-03-02 16:00:26

spring security 5 (3)-UserDetails用户详情

用户登录时,系统会根据用户名,从存储设备查找该用户的密码及权限等,将其组装成一个UserDetails对象。并用UserDetails中的数据对用户进行认证,决定其输入的用户名/密码是否正确。从内存认证之前两篇我使用的是预置的user用户,以下则自定义一个user用户,密码123,权限是auth。user用户登录时会根据这些信息自动构建一个UserDetails,保存在内存中。 pass...

2019-02-24 19:26:03

spring security 5 (2)-Http请求权限

用户访问网站时,只能请求其有权限的网址,而不能手动去请求其权限以外的网址。基本配置以下配置了3个url请求时各需要的角色或权限,注意,这并不代表现实业务中的角色和权限,你可以根据需要自己决定。 public void configure(HttpSecurity http) throws Exception { http .authorizeRequests() //进行...

2019-02-17 08:40:54

spring security 5 (1)-formLogin表单登录和注销

表单登录即在form表单中输入用户名/密码,提交登录,在springsecurity中默认配置了formLogin来实现表单登录。pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent&l...

2019-02-10 09:16:44

web安全 (2)-base64

base64在安全领域主要用于安全文件或数据的传输及存储,如一些专业的证书、密钥、token等,它们并不遵守任何文字编码,如果你用文字工具打开看,会看到很多特殊字符(乱码)。这些乱码在网上传输的时候,可能会被多个网关接收并转发,而有的网关并不一定能识别这些乱码,从而导致你的数据被错误处理或丢失。此时就需要先将乱码转换为大家都能识别的字符,才能正常传输,这种公认的字符就是base64编码。 64...

2019-02-02 10:44:39

微信测试账号 (5)-素材管理

前面只讲了文本消息,如果要发图片或语音视频等消息,则需要先将相关文件如图片上传到微信,之后可以将其作为素材,在消息中引用它,实现图片消息。新增图片素材 @GetMapping("/addMaterial") public void addMaterial(){ String url = "https://api.weixin.qq.com/cgi-bin/material...

2019-01-26 19:08:39

centos(18)-putty/winscp实现ssh密钥登录

在第3篇,我讲过用putty/winscp输入用户名/密码,远程登录服务器,这种登录方式存在一些安全隐患。而本篇讲的密钥登录是一种安全性别更高的登录方式。关于密钥及其他本篇讲到的一些安全性知识概念,参考web安全 (1)。ssh密码登录linux远程连接是使用的ssh,和https有点类似,流程如下:1.服务器开启时默认会打开ssh服务,ssh服务会检测服务器私钥/公钥,如果不存在就自...

2019-01-20 13:24:54

微信测试账号 (4)-菜单管理

进入公众号后,最下面一排的位置可以设置菜单按钮。菜单结构这是微信官网给的一个菜单结构示例,json格式。 { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" },

2019-01-13 18:36:58

微信测试账号 (3)-微信接口权限 access_token

有许多功能,需要我们主动调用微信的接口,比如修改公众号菜单,主动给用户发消息等。此时微信会对我们的权限进行验证,这个权限就是access_token。appID和appsecret登录测试账号时有两个参数,appID是公众号的唯一标识,appsecret就是密钥。关于密钥是什么,参考web安全(1)。获取access_token用你的appID和appsecret替换以下代码x...

2019-01-06 14:54:59

微信测试账号 (2)-消息验证sha1签名

在第1篇中实现了收发微信消息,但是没有做验证,本篇将介绍微信如何使用sha签名,对消息进行认证。其中安全相关的概念,如sha1散列值、签名等,可参考web安全(1)。验证参数 @GetMapping("/handler") public String handler(@RequestParam Map<String,String> map) {回顾 第1篇的get验证...

2019-01-01 16:07:23

web安全 (1)-密钥、随机数、散列值、数字签名、证书、https

本篇对web安全中一些常见概念做个基本介绍,并最终整合为https的整个流程。本文介绍的加密方法纯属个人虚构,与现实无关。因为现实中的加密算法太过复杂,暂不讨论。这里只用最简单的方法举例,只把概念讲清楚,也不考虑破解的可能性。凯撒密码这是凯撒当年的军用密码,是最古老,也是最简单的一种密码。举个例子:明文:ok密文:rn加密方式很简单,将明文字母向右偏移三位,o就是r,k就是n。...

2018-12-22 16:09:36

spring cloud finchley(2)-eureka常用配置、保护模式

本篇将介绍eureka注册中心的一些常用配置。注册与获取服务在第1篇中,eureka注册中心启动时报错。因为默认情况下eureka自身也是注册中心的一个服务,也会向注册中心注册以及获取服务,而此时是没有注册中心的,所以报错,并且每隔一段时间会重新偿试连接注册中心。当注册中心也就是它自己启动成功以后,它重连成功,之后不再报错。而通常注册中心并不需要注册和获取服务,可作以下配置eurek...

2018-12-15 15:04:38

微信测试账号 (1)-hello world

本篇以测试号为例,介绍如何接收微信的消息,同时回复消息hello world。环境jdk1.8,spring boot2,外网域名,内网穿透。内网穿透在开发微信公众号的时候,不仅我们需要调用微信的接口,微信也需要调用我们的接口,给我们发送各种消息。所以我们的项目要部署到互联网上才能接收到微信的消息。然而,在开发调试过程中我们往往处于局域网环境,不可能每改一次代码就部署到外网上去看效...

2018-12-08 14:26:57

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!