meta-tech / pws-auth
PwsAuth 是一种通过 http 头部设计的认证协议,用于 Web 服务
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-17 12:26:14 UTC
README
PwsAuth 是一种通过 http 头部设计的认证协议,用于 Web 服务
请求头
请求头必须按照以下方式定义
Pws-Authorization : $type $token
Pws-Ident : $userkey
$token 可以是 loginToken
或 sessionToken
$token 分为四个部分
- 使用
Authenticator::DATE_FORMAT
格式的日期时间 - 由日期、常见盐和第三个 token 的部分构建的混淆部分 's token
- 代表特定日期的用户登录令牌
loginToken
或代表会话 ID 的会话 token - 需要移除的噪声数据
只有当混淆部分可以被重建时,完整的 token 才是有效的
这种简单的机制确保 sessionId 是有效的并且可以安全地加载
Authenticator 的配置包含 hash.session.index
和 hash.noise.length
值,这些值可以被重新定义以将会话 token 部分移动到完整的 token 中
<< hash.session.index >> << hash.noise.length >>
|-----------------------------------------------------------<<-^->>---------------------------------------------<<-^->>--------|
|- type ||-- date ---|------------ obfuscate token ---------<<-^->>-------------- session token ----------------<<-^->> noise -|
| || 1 | 2 | 3 | 4 |
PwsAuth2 242003031711e1a6104135f04c6c01e6cd5952ecafbb53c928603b0gb64tqo609qse6ovd7lhdvk4fnaqk7cdl26e4d4qh7jb41eu5f1zb5y79m8pgu3
要求
PHP >= 5.4
安装
可以使用 Composer 安装此包。
composer require meta-tech/pws-auth
或者将包添加到您的 composer.json
文件中。
"require": {
"meta-tech/pws-auth" : "^2.1"
}
Authenticator 实例化
<?php require_once(__dir__ . '/vendor/autoload.php'); use Symfony\Component\Yaml\Yaml; use MetaTech\PwsAuth\Authenticator; $config = Yaml::parse(file_get_contents(__dir__ . '/config/pwsauth.yml')); $authenticator = new Authenticator($config);
客户端
可以通过 generateHeader($login, $key, $sessid=null)
方法生成请求头。
第三个参数确定将生成哪种类型的 token
对于客户端使用,请参阅 MetaTech\Ws\Client
服务器端
可以通过 getToken
方法检索 Token
loginToken
通过 check(Token $token = null, $login)
方法进行验证
loginToken
必须与公共 URL 匹配,方法为 POST
,并带有登录/密码组合
登录成功后,必须将会话 ID 传输给客户端。
sessionToken
仅在会话可以实际加载且用户密钥与给定的 Pws-Ident
值匹配时有效
对于服务器使用,请参阅 MetaTech\Silex\Ws\Authentication 和 meta-tech/pws-server .
配置
服务器和客户端上的配置必须相同
哈希定义是混淆 token 的便捷方式
config/pwsauth.yml
type : PwsAuth2 header : auth : Pws-Authorization ident : Pws-Ident salt : common : jK5#p9Mh5.Zv} # used for generating user specific salt user.index : 10 user.length : 12 hash : sep : / algo : sha256 # effective token length size. out of bound data is simply noise length : 52 # session index (or obfuscate length) session.index : 58 # ending noise data length) noise.length : 12
注意
单独有效的 $userkey
是无用的
单独有效的 $sessionId
是无用的
许可
该项目根据 MIT 许可证发布,请参阅 LICENSE 文件。