JWT介绍+MySQL资料库安装(Day4)

我:同学你房间里有这麽多好东西,都不怕被人拿走喔?
同学:拿走? 怎麽可能被拿走,防护措施我都设定好了!!
我: 什麽防护措施? 这麽有自信不怕被我破解?
同学: 我看你是完全不懂喔! 过来我跟你介绍一下


全名为 JSON Web Token

1.里面的资讯已经包含使用者资讯(包括姓名、ID、权限),所以不需重新请求资料库取得资料。
2.更符合设计 RESTful API 时「Stateless 无状态」原则:意味着每一次从客户端向服务器端发出的请求都是独立的,使用者经验证後,在服务器端不会将用户验证状态透过 Session 储存起来,因此每次客户端发出的请求都将带有服务器端需要的所有资讯
3.因为有透过签证产生,因此只要payload一被窜改验证就会发现。

JWT的组成

1.header: 含 Token 的种类及产生签章(signature)要使用的杂凑演算法
2.payload: 携带用户资讯
3.signature: 编译後的 Header、Payload 与密钥透过杂凑演算法所产生

在我们要开始实作前,我们要先确定步骤和顺序

1.Authentication: 使用者验证,告诉API 你是谁。
2.Authorization: API会根据储存的资料告诉你,你可以做什麽事情。
3.请求API网址取得资料。

Spring Security的架构图,可以看出Security的底层其实是由很多Filter组成的

https://ithelp.ithome.com.tw/upload/images/20210919/20138857CbqCBX7Lt8.png

客制化Spring Security的验证

AuthenticationProvider: 是Spring Boot 提供的验证介面,他提供了两个功能
authenticate: 对请求设置验证方式
support: 确认验证方式是否适合验证传入的对象
UserDetailService: 是security取得使用者资讯的介面,里面会实作一个方法是loadByUserName
透过username取得使用者资讯(security取得的资讯类别需要继承UserDetails这个类别)
也可以在UserDetails里面设置权限。

最後,让我们先安装mySQL资料库,以便之後实作可储存资料

下载连结 : https://dev.mysql.com/downloads/mysql/
安装教程:https://clay-atlas.com/blog/2019/11/16/mysql-mysqlworkbench-tutorial-download-install-steps/

引用至
五倍红宝石:
https://5xruby.tw/posts/what-is-jwt
JWT机制
https://medium.com/麦克的半路出家笔记/笔记-透过-jwt-实作验证机制-2e64d72594f8


<<:  RISC V::关於基本暂存器

>>:  追求JS小姊姊系列 Day4 -- 我知道很怪,但你不好奇字串姐变身会怎样吗(下)

Day14-D3 的 Force 原力

本篇大纲:Force 原理、引力与斥力、五种作用力、Force的 API 们、六种应用范例 今天要...

【图解演算法教学】还在用古老的二元搜寻法?是时候跟上「Hash Search」的车尾灯了!

Youtube连结:https://bit.ly/2Uv2sBf 在我们还没学资料结构前,通常都用...

[进阶指南] Portal( Day26 )

Portal 提供一个优秀方法来让 children 可以 render 到 parent com...

资安学习路上-Linux基础与Web基础1

决定好学习方向後(台科大资安研究社社课为主),发现他的课程有连续性,直接一口气买了110年上下两个学...

番外篇 - NestJs - Guard

NestJs - Guard 验证分为两种,登入权限验证以及角色验证 举例说明:我们将 API 分为...