
Spring Security
文章平均质量分 94
single_cong
凡此过往,皆为序章
展开
-
浅谈权限设计(从接口权限到数据权限)
太久没写了,今天补一篇,本篇无实际代码,主要是设计思路。关于JWT:在我所开发的系统中用户Token都是有意义的,都会携带部分数据,不过多用于userId个人的权限系统使用历程:基于Security(不加表、角色放在Token中)注解验证(乱七八糟)使用Spring Security框架,将用户角色ROLE_USER写在account表中,UserDetailsService的实现方法中封装UserDetails返回,然后在接口上添加注解进行权限校验好处是简单,但是权限写在逻辑里面了。改权限就原创 2021-09-03 00:12:45 · 8728 阅读 · 0 评论 -
微信小程序登录
微信各接口定义(残缺版):package com.cong.security.core.properties;public class WXConstant { /** 获取access_token. */ public static String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; /**原创 2020-08-10 20:40:11 · 435 阅读 · 0 评论 -
Apple登录
目前的APP在苹果上如果要使用第三方登录就必须实现apple登录,本文在Spring Security的基础上整合apple登录。苹果文档没有例子,没有代码,是真的烦。注意:使用苹果登录时尽量不要在登录后要求用户绑定手机号,尽量实现隐式注册的效果,否则也可能会被驳回。代码maven依赖<dependency> <groupId>com.auth0</groupId> <artifactId>jwks-rsa</artifactId>原创 2020-07-27 19:19:57 · 950 阅读 · 1 评论 -
Java接口防刷策略(自定义注解实现)
目的短信发送及短信验证码校验接口防刷一方面防止用户循环调用刷短信验证码另一方面防止用户循环调用测短信验证码(一般短信验证码为6位纯数字,一秒钟上百次调用,如果不做限制很快就能试出来了)很多接口需要防止前端重复调用误操作多次点击,不属于攻击类型,正常用户经常会触发的,例如信息发布可能前端限制未做好,误点击了多次,这种情况实际上应该只记录第一次的,后续的不应该继续操作数据库。极端的情况可能很多接口一天或者很长时间只能调用一次(类似签到?个人想法是尽量不让数据到了数据库层再抛异常)解决措施利原创 2020-06-01 17:48:33 · 7026 阅读 · 5 评论 -
SpringSecurity之授权鉴权
一般系统中区分账号角色即可,除了后台管理这类对权限要求比较复杂的。权限表达式:使用一般在类上或者方法上添加注解使用(不需要对每一个接口配置权限,一般小项目用不到,只要数据库是逻辑删除可恢复这种简单的就可以使用)在启动类上添加注解:@EnableGlobalMethodSecurity(securedEnabled = true, jsr250Enabled = true, p...原创 2020-02-09 20:38:08 · 2089 阅读 · 0 评论 -
SpringSecurity之令牌配置
基于Oauth2发放token,在请求头中携带token作为用户身份鉴定Token参数配置定义可发放令牌的应用信息package com.cong.security.core.properties;import lombok.Data;@Datapublic class OAuth2ClientProperties { //应用id private String clientI...原创 2020-02-08 22:50:54 · 2280 阅读 · 0 评论 -
SpringSecurity升级之后token刷新接口401
在自定义的认证服务器配置类中添加如下内容@Override@SuppressWarnings("deprecation")public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { security.tokenKeyAccess("permitAll()"); ...原创 2020-02-08 22:48:49 · 1837 阅读 · 0 评论 -
SpringSecurity重构登录逻辑
将前面写的用户名密码登录、短信登录、第三方账户登录整合成OAuth2协议生成token的模式AuthenticationSuccessHandler调用AuthorizationServerTokenServices返回令牌,AuthenticationSuccessHandler中含有Authentication信息,缺少OAuth2Request信息,组装OAuth2Request信息需要...原创 2020-02-08 19:53:23 · 2230 阅读 · 0 评论 -
SpringSecurity之OAuth2
简介### 标准的Oauth服务提供商login模块切换至APP依赖部分配置切换BrowserSecurityConfig中注入的passwordEncoder转至security-core项目,否则会报错bean找不到(在配置项中注入即可,本文转移至SecurityPropertiesConfig配置项config中)将成功失败处理器拷贝至APP项目中(处理模式不一样,无法抽象...原创 2020-02-07 23:28:18 · 1323 阅读 · 0 评论 -
SpringSocial之微信登录
编写顺序同SpringSecurity之QQ登录创建用户信息类WeiXinUserInfo:package com.cong.security.core.social.weixin.api;import lombok.Data;/** * 微信用户信息 */@Datapublic class WeixinUserInfo { //普通用户的标识,对当前开发者帐号唯一 pri...原创 2020-02-06 18:58:25 · 1597 阅读 · 0 评论 -
SpringSocial之QQ登录
编写顺序为:Api获取用户信息Oauth2Operations代表用户与服务提供者进行Oauth认证ServiceProvider服务提供商ApiAdapter连接统一的{@link Connection}模型和特定的提供者API模型的适配器ConnectionFactory构造服务提供者{@link Connection}实例的工厂的基本抽象。创建Connection保...原创 2020-01-19 20:18:53 · 1282 阅读 · 3 评论 -
SpringSecurity之SpringSocial认知
原理SpringSocial将以上流程分装进入SocialAuthenticationFilter过滤器中,将该过滤器加入到spring security的过滤器链里面,如下图:1-6步行为(服务提供商)ServiceProvider(AbstractOAuth2ServiceProvider)服务提供商OAuth2Operations(OAuth2Template)帮助完成流程...原创 2020-01-14 01:49:59 · 696 阅读 · 0 评论 -
SpringSecurity之短信验证码
短信验证码流程大致与图形验证码一致,在图形验证码笔记中已经记录了短信验证码相关配置,此处不再记录。验证码生成短信验证码生成接口已经完成,编写短信验证码发送接口SmsCodeSender:/*** 发送短信验证码接口 * * @param type * 短信类别 * @param mobile * 手机号 * @param code...原创 2020-01-12 22:09:41 · 944 阅读 · 0 评论 -
SpringSecurity之RememberMe
浏览器开发记住我功能因为我已经实现过Oauth认证,在那种情况下已经实现记住我功能(token有效期),所以这里只是简单记录一下,功能实现即可(用户登录的token一般存储在Redis中)。原理:配置BrowserSecurityConfig:package com.cong.security.browser;import com.cong.security.core.code.Va...原创 2020-01-11 14:52:12 · 483 阅读 · 0 评论 -
SpringSecurity之图形验证码
图形验证码使用:用户名密码登录防止用户重复输入用户名密码强行破解登录短信发送某些时候短信API的限量是无效的,此时需要在短信发送接口前进行图形验证码校验,防止短信盗刷(APP模块开发)类似于12306,利用图形验证码限流此处图形验证码按照视频教程做,笔记不完整,因为后面开发到APP模块之后会对图形验证码进行重构(不使用session,图形验证码放入Redis缓存,APP场景适用于当...原创 2020-01-10 23:52:25 · 806 阅读 · 0 评论 -
SpringSecurity之个性化认证
自定义登录页面以及返回值确定默认登录页面login.html:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录页面</title></head><body><h3>...原创 2020-01-10 17:07:23 · 512 阅读 · 0 评论 -
SpringSecurity之用户名密码登录
开始进行实际的Security的代码编写。Security官方文档过滤器链:目前已有的,后面再加也是加在绿色的过滤器链位置。建表(用户表,用于登录)CREATE TABLE `account` ( `id` varchar(32) NOT NULL COMMENT '主键,UUID编码', `user_name` varchar(11) DEFAULT NULL COMMENT...原创 2020-01-07 20:45:56 · 2478 阅读 · 0 评论 -
Spring Security初识
前端时间学习了Spring Security,最近重学一次,同时整理一套笔记,方便后面遇错处理。跟着慕课网视频学习的,加了点自己的思路以及解决方式,不喜勿喷。项目依赖:security-core安全配置核心security-appAPP安全配置security-browser浏览器安全配置核心security-login登录注册模块demo项目提供API接口依赖关系:...原创 2020-01-07 01:27:30 · 331 阅读 · 0 评论