基于JWT Token 验证

因项目要前后端彻底分离,故采用JWT 进行验证


JWT 链接地址:https://github.com/auth0/java-jwt



maven  配置:

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.2.0</version>
</dependency>

生成key:


Algorithm algorithmHS = Algorithm.HMAC256("secret");


生成基于RSA的key


//RSA
RSAPublicKey publicKey = //Get the key instance
RSAPrivateKey privateKey = //Get the key instance
Algorithm algorithmRS = Algorithm.RSA256(publicKey, privateKey);


    • iss(Issuser):代表这个JWT的签发主体;
    • sub(Subject):代表这个JWT的主体,即它的所有人;
    • aud(Audience):代表这个JWT的接收对象;
    • exp(Expiration time):是一个时间戳,代表这个JWT的过期时间;
    • nbf(Not Before):是一个时间戳,代表这个JWT生效的开始时间,意味着在这个时间之前验证JWT是会失败的;
    • iat(Issued at):是一个时间戳,代表这个JWT的签发时间;
    • jti(JWT ID):是JWT的唯一标识。




### 取消或移除JWT Token验证 对于基于JWT的身份验证机制,取消或移除其验证通常涉及多个方面。这不仅限于客户端停止发送Token,还涉及到服务端不再接受特定的Token或是完全关闭对某些API路径的JWT验证逻辑。 #### 修改应用程序配置以禁用JWT中间件 在许多Web框架中,如Go中的Gin框架,可以通过调整路由设置来控制哪些请求需要经过JWT验证。例如,在不需要JWT保护的情况下,可以从受保护的组中删除相应的路由或将这些路由移动到未受到保护的手柄之外[^3]: ```go package main import ( "github.com/gin-gonic/gin" jwt "github.com/appleboy/gin-jwt/v2" ) func main() { router := gin.Default() authMiddleware, _ := jwt.New(&jwt.GinJWTMiddleware{ // 配置项... }) publicRoutes := router.Group("/public") { publicRoutes.GET("/", unprotectedHandler) } protectedRoutes := router.Group("/protected", authMiddleware.MiddlewareFunc()) { protectedRoutes.GET("/", protectedHandler) } } ``` 在这个例子中,`/public`下的所有接口都不再被JWT所保护,而`/protected`则继续保留原有的保护措施。 #### 将现有Token加入黑名单 另一种方式是在不改变整体架构的前提下,使某个具体的Token失效。这种方法适用于想要立即终止某次会话的情况。可以在数据库或其他持久化存储中维护一个黑名单列表,当接收到带有已列入黑名单的Token时,则认为该Token无效并返回错误响应给客户端[^1]。 ```python def verify_token(token): if token in blacklist_store: raise Exception('Invalid or expired token') # 继续正常的解码流程... ``` #### 更新API文档说明变更 无论采取哪种方法,都应该及时更新相关的API文档,告知开发者们新的认证策略以及可能影响他们使用的任何变化。这对于保持系统的透明度非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值