JAVA博客

。。。

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

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

2019-04-21 13:01:52

阅读数 42

评论数 0

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

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

2019-04-14 11:29:46

阅读数 161

评论数 0

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

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

2019-04-07 10:42:11

阅读数 54

评论数 0

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

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

2019-03-31 11:54:54

阅读数 77

评论数 0

spring security 5 (7)-异常处理

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

2019-03-24 09:33:35

阅读数 57

评论数 0

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

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

2019-03-17 08:34:04

阅读数 63

评论数 0

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

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

2019-03-10 09:49:44

阅读数 256

评论数 0

spring security 5 (4)-认证流程

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

2019-03-02 16:00:26

阅读数 106

评论数 0

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

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

2019-02-24 19:26:03

阅读数 379

评论数 0

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

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

2019-02-17 08:40:54

阅读数 138

评论数 0

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

表单登录即在form表单中输入用户名/密码,提交登录,在spring security中默认配置了formLogin来实现表单登录。 pom.xml <parent> <groupId>org.sp...

2019-02-10 09:16:44

阅读数 934

评论数 2

web安全 (2)-base64

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

2019-02-02 10:44:39

阅读数 70

评论数 0

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

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

2019-01-26 19:08:39

阅读数 79

评论数 0

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

在第3篇,我讲过用putty/winscp输入用户名/密码,远程登录服务器,这种登录方式存在一些安全隐患。而本篇讲的密钥登录是一种安全性别更高的登录方式。关于密钥及其他本篇讲到的一些安全性知识概念,参考web安全 (1)。 ssh密码登录 linux远程连接是使用的ssh,和https有点类似...

2019-01-20 13:24:54

阅读数 130

评论数 0

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

进入公众号后,最下面一排的位置可以设置菜单按钮。 菜单结构 这是微信官网给的一个菜单结构示例,json格式。 { "button":[ { "type":&qu...

2019-01-13 18:36:58

阅读数 138

评论数 0

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

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

2019-01-06 14:54:59

阅读数 328

评论数 0

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

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

2019-01-01 16:07:23

阅读数 359

评论数 0

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

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

2018-12-22 16:09:36

阅读数 1062

评论数 0

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

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

2018-12-15 15:04:38

阅读数 137

评论数 0

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

本篇以测试号为例,介绍如何接收微信的消息,同时回复消息hello world。 环境 jdk1.8,spring boot2,外网域名,内网穿透。 内网穿透 在开发微信公众号的时候,不仅我们需要调用微信的接口,微信也需要调用我们的接口,给我们发送各种消息。所以我们的项目要部署到互联网上才能...

2018-12-08 14:26:57

阅读数 169

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭