登录认证1.1 .用户注册前台需要传递用户名、密码、手机号码、手机验证码。 验证从用户前台传来的数据是否符合规范,并验证使用Hibernate Validator框架实现的服务器端表单。 SMS认证码大于我们采用的蚂蚁SMS接口,我们单独构建SMS微服务,发送的SMS请求通过MQ消息由SMS微服务消费,发送SMS。 密码使用Spring提供的BCryptPasswordEncoder加密算法,分为加密和验证两个过程。
加密:算法对明文密码使用UUID随机生成salt,并使用salt与密码组合进行加密,得到最终的密文。
密码验证:需要获取加密密码和要验证的密码,根据加密密码推测salt,使用相同的算法和salt对认证码密码进行加密,并与加密密码进行比较。
SMS认证码的有效期为30分钟,为了验证SMS认证码的时效性而保存在redis中。 手机号码为key,认证码为value,将有效期设定为30分钟。 另外,为了防止恶意攻击,限制手机号码1分钟内只能发送一次验证码。 这也是通过redis实现的。 手机号码拼接’ _yes ‘为key,验证码为value,有效期设定为1分钟。 为了防止机器恶意调用认证码接口,我们利用图形认证码进行了限制。
1.2 .用户登录采用JWT RSA加密技术实现了无状态登录。 我们单独构建验证微服务器进行验证,验证用户名和密码需要通过feign组件调用用户魏服务器进行查询。 它还使用JWT RSA加密生成token并将其返回到前台,然后写入cookie。
1.3 .验证登录在页面created生命周期函数中调用验证登录界面。 的主要逻辑如下。
去redis验证token是否存在于redis中,如果有说明,则该token失效,返回401,获取cookie的token信息,利用公钥进行解密操作,获取用户信息并回复的前2个步骤是正确的,但是tte
1.4 .通过注销操作将JWT注册到黑名单是将token放入redis,设置有效期限token的有效剩馀时间),删除客户端cookie
1.5 )网关登录控制1 )获取用户登录证书jwt2)解析jwt,获取用户身份解析失败时,证明未登录,返回401解析成功时,进入下一步3 )根据用户身份
2 .什么是jwt的3W1H 2.1 . JWT,全名为JSON Web Token,具有Json风格的轻量级许可证和认证规格,提供无状态、分布式的web APP应用许可证。 JWT包含三个部分的数据。 头标:声明是jwt和可选的签名算法; payLoad :负载是有效的数据,保存着jwt的id、用户信息、有效期限Signature :签名是整个数据的认证信息。 一般是在前两个阶段的数据的基础上,再加上服务的密钥secret ),通过加密算法产生。 用于验证整个数据的完整性和可靠性。
2.2 .为什么why )? 我们使用的springCloud构建的微服务器架构,想使用JWT进行无状态登录。 使用JWT RSA加密算法生成token,客户端保存token信息,服务器端不再保存用户的登录状态。
2.3 .在哪里使用? 一般用于许可证和认证。
2.4 .怎么用how )?
依赖于maven部署创建JWT的工具类使用私钥加密token公钥解密token,获取token的User信息,然后获取token的加载信息3.RSA的3W1H 3.1 .是什么? 1977年,三位数学家Rivest、Shamir、Adleman设计了实现不对称加密的算法。 这个算法使用了RSA这三个人的名字。 一种非对称加密算法。
3.2 .为什么? 加密技术是对信息进行编码和解码的技术,编码是将原始可读信息也称为明文)翻译成代码形式也称为密文),其逆过程是解码解密),加密技术的要点是加密算法RSA的目的是加密数据,防止信息泄露。
3.3 .在哪里使用? 用于对不能进行明文传输或明文保存的信息进行加密、解密。
3.4 .怎么用? 基本原理:同时生成私钥和公钥两个密钥。 私钥被保密,公钥可以分发给受信任的客户端
私钥加密,不持有私钥或公钥就不能解密公钥加密,持有私钥则4.cookie无效的解决方案一.在URL后面手动拼接sessionid
一种常用的技术是URL重写。 将session id直接附加在URL路径之后。 还有一种叫做表单隐藏字段的技术。 添加隐藏字段,以便服务器可以自动修改表单,并在提交表单时将session id发送回服务器。
二.使用响应对象HttpServletRequest中的encodeURLString path)方法实现jsessionid的自动拼接
5 .如何求解
决cookie被盗用问题?
答:cookie被盗用的可能性主要包括下面几种:
XSS攻击:这个可以再前端页面渲染时对 数据做安全处理即可,而且我们的cookie使用了Httponly为true,可以防止JS脚本的攻击。CSRF攻击: 我们严格遵循了Rest风格,CSRF只能发起Get请求,不会对服务端造成损失,可以有效防止CSRF攻击利用Referer头,防盗链 抓包,获取用户cookie:我们采用了HTTPS协议通信,无法获取请求的任何数据请求重放攻击:对于普通用户的请求没有对请求重放做防御,而是对部分业务做好了幂等处理。运行管理系统中会对token添加随机码,认证token一次有效,来预防请求重放攻击。
我们采用了HTTPS协议通信,无法获取请求的任何数据请求重放攻击:对于普通用户的请求没有对请求重放做防御,而是对部分业务做好了幂等处理。运行管理系统中会对token添加随机码,认证token一次有效,来预防请求重放攻击。用户电脑中毒:这个无法防范。控制自己