博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
token的三点注意项
阅读量:4641 次
发布时间:2019-06-09

本文共 990 字,大约阅读时间需要 3 分钟。

token的安全是极度重要的

1:token的唯一性,

它代表着来自某应用系统用户的一次成功登录。我们可以利用java util包工具直接生成一个32位唯一字符串来实现。

String token = UUID.randomUUID().toString();

同时,我们定义一个javabean, TokenInfo 来承载token所表示的具体内容,即某个应用系统来的某个用户本次通过了认证中心

public class TokenInfo { private int userId; //用户唯一标识ID private String username; //用户登录名 private String ssoClient; //来自登录请求的某应用系统标识 private String globalId; //本次登录成功的全局会话sessionId ... }

token和tokenInfo形成了一个<key,value>形式的键值对,后续应用系统向认证中心验证token时还会用到。

2:

token存在的有效期间不能过长,这是出于安全的角度,例如token生存最大时长为60秒。

我们可以直接利用redis特性来实现这一功能。redis本质就是<key,value>键值对形式的内存数据库,并且这个键值对可以设置有效时长。

3

token只能使用一次,用完即作废,不能重复使用。这也是保证系统安全性。

我们可以定义一个TokenUtil工具类,来实现<token,tokenInfo>键值对在redis中的操作,主要接口如下:

public class TokenUtil { ... // 存储临时令牌到redis中,存活期60秒 public static void setToken(String tokenId, TokenInfo tokenInfo){ ... } //根据token键取TokenInfo public static TokenInfo getToken(String tokenId){ ... } //删除某个 token键值 public static void delToken(String tokenId){ ... } }

 

转载于:https://www.cnblogs.com/siyan/p/8421145.html

你可能感兴趣的文章
NSInteger到底是什么数据类型
查看>>
jQuery/javascript 替换空格、回车、换行
查看>>
javascript语言基础知识
查看>>
十二条Linux运维面试必备经典笔试/面试题
查看>>
SocketAsyncEventArgs里的AcceptSocket能独立存在吗?
查看>>
c# 汉字换英文,英文转汉字
查看>>
HDU 4812 D Tree 树分治
查看>>
Odoo QWeb
查看>>
libjingle主线程的消息响应
查看>>
CSS之float样式
查看>>
08test
查看>>
测试用例方法总结
查看>>
基数---SQL Server 2008 Bible
查看>>
第一个JSP程序
查看>>
数组常用的API——splice()截取
查看>>
sbt教程
查看>>
djang1.7 复制粘贴小项目(generic View的使用)
查看>>
Oracle 查看表空间的大小及使用情况sql语句
查看>>
Python For Delphi---更好地协同(续)
查看>>
Java的内存泄漏
查看>>