nishuihanlong/ltpatoken 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nishuihanlong/ltpatoken

最新稳定版本:v1.0.1

Composer 安装命令:

composer require nishuihanlong/ltpatoken

包简介

domino sso,generate or parse ltpatoken.

README 文档

README

介绍

主要是解析或生成ltpatoken,php8.1版本验证通过

LtpaToken组成原理

通过了解LtpaToken的组成原理,我们就可以自己编码生成和解析LtpaToken了。首先一个LtpaToken的合成公式如下:

[token] = BASE64([header][creation time][expiration time][username][SHA-1 hash])

解释:

Header: LtpaToken 版本(长度4),Domino的固定为[0x00][0x01][0x02][0x03]

Creation time: 创建时间戳(长度8),格式为Unix time比如[2010-03-12 00:21:49]为4B99189D

expiration time:过期时间戳(长度8) 同上

username: 用户名(长度不定)

SHA-1 hash:SHA-1校验和(长度20)

如下图:

SHA1校验和

上面的SHA-1校验和,又是由前面所说的密钥和其余的Token资料合并而成,合成公式如下:

[SHA-1 hash] = SHA-1([header][creation time][expiration time][username][shared secret])

解释:
shared secret: 共享密钥,使用时需要先经过Base64解码,再参与计算。

校验和的计算规则如下图:
Token

所以,如果有人篡改了Token,那校验和就与修改后的Token匹配不上了,这样Token一旦生成,有人想要修改它的信息,比如改成别的用户名,是不可能的。

注意

1.token是否被篡改
2.token是否已经过期
3.从token中获取用户登录名

用法

use Nishuihanlong\Ltpatoken;

$ltpatoken = new Ltpatoken();
//$secretKey为密钥
$token = $ltpatoken->genToken($secretKey);
//$cookie为获取到的cookie
$userName = $ltpatoken->parseToken($cookie);

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-05-05