siu-toba/jwt-session

此包的最新版本(v1.0.2)没有提供许可证信息。

一个小型库,用于生成 JSON Web Tokens (JWT)

v1.0.2 2023-04-17 20:35 UTC

This package is auto-updated.

Last update: 2024-09-17 23:48:33 UTC


README

此库允许通过 REST 服务进行用户认证并生成 JWT 类型令牌(https://jwt.net.cn/)。它允许使用对称和/或非对称密钥生成和验证令牌。

当前需要 siu-toba/jwt-util 库来操作令牌和 siu-toba/rest 来通过 REST 生成认证。

安装

使用 composer 管理依赖并下载 jwt-util

composer require siu-toba/jwt-session

此外,在独立项目中,安装和配置 siu-toba/rest。在 SIU-Toba 项目中,它已经集成。

在 SIU-Toba 应用中集成

对于使用 SIU-Toba 框架的项目,在 php/extension_toba/<proyecto>_contexto_ejecucion.php 类中添加以下方法

function conf__rest(SIUToba\rest\rest $rest)
{
        // obtener el toba_modelo_proyecto
        $catalogo = toba_modelo_catalogo::instanciacion();
        $id_instancia = toba::instancia()->get_id();
        $id_proyecto = toba::proyecto()->get_id();
        $modelo_proyecto = $catalogo->get_proyecto($id_instancia, $id_proyecto);

        // leer la config de JWT, desde servidor.ini
        $ini = toba_modelo_rest::get_ini_server($modelo_proyecto);

        $settings = [
            'tipo' => $ini->get('jwt', 'tipo', null, true),
            'algoritmo' => $ini->get('jwt', 'algoritmo', null, true),
            'usuario_id' => $ini->get('jwt', 'usuario_id', null, true),
            'key_encoder' => $ini->get('jwt', 'key_encoder', null, true)
            'exp' => $ini->get('jwt', 'expiracion', null, true)
        ];

        // obtener una instancia del generador de sesiones JWT
        $session = SIU\JWT\Session::getInstance();

        // configurar la librería para generar tokens JWT
        $session->setConfigJWT($settings);

        // configurar un callback para validar el usuario/clave
        $session->setCallbackAutenticador(array(new toba_autenticacion_basica(), 'autenticar'));

        // decir a toba donde encontrar el recurso REST /session de la librería
        $rest->add_path_controlador(SIU\JWT\Session::getPathControlador());
}

一旦在执行上下文中配置了库,还需要配置 REST 服务的参数(通过 servidor.ini 文件)。它应该具有类似的结构

[jwt]
tipo=simetrico
algoritmo=HS512
usuario_id=uid
key_encoder=test
key_decoder=test
expiracion=+1 Day

属性的可能值

  • tipo 指示是否需要应用对称加密。可能的值:simetricoasimetrico
  • algoritmo 指示所使用的加密算法。有关支持加密算法的配置详细信息,请参阅 siu-toba/jwt-util 中的选项。
  • usuario_id 指定存储用户信息的字段名称,以便之后检索。
  • key_encoder 指定令牌加密的密钥。如果类型是 asimetrico,则是私钥的路径。
  • key_decoder 指定令牌解密的密钥。如果类型是 asimetrico,则是公钥的路径。
  • expiracion 定义生成的令牌在多长时间后过期。格式是 PHP 函数 strtotime 支持的格式。

可以在 setConfigJWT 方法中添加额外的属性,根据与 siu-toba/jwt-util 库一起支持的属性进行。

如何使用

一旦集成并配置了参数,要生成 JWT 令牌,需要消费在 http://url-aplicacion/rest/session 可用的资源,并且它将通过 POST 接受 usuarioclave