令牌的设计与实现

令牌内容的构成

令牌内容的第一、二、三、五部分内容长度是固定的,第四部分内容可根据应用的实际需要进行扩充,除了存储用户信息之外,还可以存储其他与应用相关的信息,具有较强的可扩充性,避免了因固定长度带来令牌可扩充性的限制。

令牌内容的加密和解密

  为了保证令牌在传递过程中的安全,必须对原始令牌的内容进行加密,本文对令牌中的校验信息使用不可逆加密算法,防止校验令牌在传输过程中被截 取并篡改;用户信息使用对称加密算法,以便其他系统的解密。目前采用了AES、SHA-1、Base64等三种加/解密算法,通过这三种加/解密算法保证 数据的安全。

  AES加密算法用于加密用户信息及生成的令牌;SHA-1算法用于计算用户密码和令牌的校验和;Base64将AES加密后的令牌编/解码。

加密流程

  令牌加密流程首先按令牌内容结构填充内容,计算内容的校验和后填充到校验和内容区。加密流程图如图2。

1. 将版本号、当前用户登录时间、会话失效时间和用户登录信息按照令牌各部分所属位置进行填充。

2. 系统A中的用户密码在注册时已经将用 户登录密码使用MD5加密,就不再使用AES加密算法对用户登录密码加密,直接使用SHA-1计算出用户登录密码的校验和(记为D1),填充到令牌数组的 最后20位里。

3. 由于直接将密码的校验和发送给客户端将带来安全性的问题,本应用中将使用SHA-1再次计算整个令牌数组的校验和(记为D2),得到 一个新的20位数组,并填充到原令牌数组里的最后20位里,用校验和D2验证令牌在传递过程中是否被篡改,如同电子指纹的作用。

4. 使用AES加密算法 对令牌数组进行加密,再使用Base64算法进行编码得到令牌,在系统之间传输的即是此令牌。

解密流程

  令牌解密流程较加密流程复杂一些,过程与令牌加密流程相反,增加了令牌内容校验和与接收的校验和比较,以比较结果作为令牌是否被篡改的依据。解密流程图如图3。

1. 使用Base64算法解码,再使用AES解密算法对解码后的数组进行解密。
2. 取出解密令牌数组的最后20位(记为D1)。同时获取 系统B中存储的经MD5加密的用户密码,使用SHA-1计算校验和,填充到解密令牌数组的最后20位里,再次使用SHA-1计算整个令牌数组的校验和(记 为D2)。
3. 比较D1和D2是否一致,如果不一致则说明令牌在传递过程中被篡改,跳转到系统B的登录页面重新登录;如果一致则完成后续的登录校验,跳 转到系统B的应用界面。

令牌的集成应用

用户首先从系统A登录,后台验证无误后按照加密流程生成当前用户的SSO令牌。用户从系统A切换到系统B时,提交到系统B的登录模块中的信息中包含由系统A生成的SSO令牌,系统B按照解密流程对SSO令牌解密,验证无误后由系统B完成登录并跳转到系统B的应用界面。

转载于:https://my.oschina.net/u/3683692/blog/3027064

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值