meta-tech/pws-auth

PwsAuth 是一种通过 http 头部设计的认证协议,用于 Web 服务

2.1.7 2024-05-28 11:08 UTC

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 可以是 loginTokensessionToken

$token 分为四个部分

  • 使用 Authenticator::DATE_FORMAT 格式的日期时间
  • 由日期、常见盐和第三个 token 的部分构建的混淆部分 's token
  • 代表特定日期的用户登录令牌 loginToken 或代表会话 ID 的会话 token
  • 需要移除的噪声数据

只有当混淆部分可以被重建时,完整的 token 才是有效的
这种简单的机制确保 sessionId 是有效的并且可以安全地加载

Authenticator 的配置包含 hash.session.indexhash.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 文件。