siu-toba / jwt-session
此包的最新版本(v1.0.2)没有提供许可证信息。
一个小型库,用于生成 JSON Web Tokens (JWT)
v1.0.2
2023-04-17 20:35 UTC
Requires
- php: >=7.1.0
- siu-toba/jwt-util: ~1.0.0
- siu-toba/rest: ~1.1|~2.0|~3.0
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
指示是否需要应用对称加密。可能的值:simetrico
、asimetrico
。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 接受 usuario
和 clave
。