verzth/tcx-client

TCX 客户端 - 客户端-服务器事务(单向-双向)认证模块插件

1.1.0 2019-08-16 03:17 UTC

This package is auto-updated.

Last update: 2024-09-16 14:46:23 UTC


README

TCX 是用于确保 API 服务器安全的认证模块。

它采用 OAuth2 方案,但使用更简单的方案,无需定义作用域即可为客户端-服务器提供认证。

  1. 认证类型,TCX 支持三种认证类型

    • 单向事务代码 (OWTC):客户端只需使用 app_idapp_public 访问服务器 API。
    • 双向事务代码 (TWTC):客户端必须使用 app_idapp_public 获取访问令牌,然后可以使用它来访问 API。
    • 免费事务代码 (FTC):客户端使用主令牌访问 API,无需对每个请求请求令牌。您需要手动生成主令牌。

    客户端需要在每次 API 请求中发送 X-TCX-TYPE 标头来指定类型。

  2. 如何生成凭证

    • app_passX-TCX-APP-PASS,它可以通过将令牌的明文(参数、时间或无)与应用程序公钥和客户端动态令牌进行 SHA1 哈希来生成。客户端需要将给定的动态令牌附加到哈希结果,并用冒号(:)分隔,然后使用 base64 加密。
      • 参数基数

        示例参数

        abc=123
        _xyz=789
        foo=bar
        def=456
        bar=ghi
        

        预期令牌

        _xyz=789&abc=123&bar=ghi&def=456&foo=bar
        
      • 时间基数

        tcx_datetime=YYYYMMDDHHmmss
        

        示例

        tcx_datetime=20181230235959 // For 23:59:59, 30 December 2018
        
      • 无,只需使用应用程序密码和客户端动态令牌。

    • tokenX-TCX-TOKEN,它在客户端授权给服务器时提供,但您需要使用 base64 进行加密。
  3. 认证头。

    • 类型 OWTC
      • 'X-TCX-TYPE': 'OWTC'.
      • 'X-TCX-APP-ID': 客户端 ID。
      • 'X-TCX-APP-PASS': 客户端密码。
    • 类型 TWTC
      • 'X-TCX-TYPE': 'TWTC'.
      • 'X-TCX-APP-ID': 客户端 ID。
      • 'X-TCX-APP-PASS': 客户端密码。
      • 'X-TCX-TOKEN': 通过授权获得的访问令牌。
    • 类型 FTC
      • 'X-TCX-TYPE': 'FTC'.
      • 'X-TCX-APP-ID': 客户端 ID。
      • 'X-TCX-APP-PASS': 客户端密码。
      • 'X-TCX-TOKEN': 主访问令牌。
  4. 可用功能。

    • getID() - 获取应用程序 ID。
    • getSecret() - 获取应用程序密钥。
    • getPublic() - 获取应用程序公钥。
    • getTokenType() - 获取令牌授权类型模式。
    • isDebug() - 检查调试状态。
    • getTCXPass(&$params) - 获取应用程序密码。
    • getTCXMasterKey($encrypt=false) - 获取主令牌密钥。
    • getTCXAccess($pass, $datetime=false, $encrypt=false) - 获取访问令牌密钥。
  5. 响应状态。

    示例响应

    {
        "status": 0,
        "status_code": "TCXREQ",
        "status_number": "705000",
        "status_message": "TCX Authentication Required"
    }