定制 kuantaz/sitio-confianza-mdsf 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

kuantaz/sitio-confianza-mdsf

最新稳定版本:1.0.3

Composer 安装命令:

composer require kuantaz/sitio-confianza-mdsf

包简介

Librería de integración de Sitio de Confianza con MDSFID/VUS (flujo de identidad).

README 文档

README

Librería PHP para integrar aplicaciones con MDSFID/VUS mediante un flujo de “sitio de confianza”.
Separa la lógica de comunicación con MDSFID y el manejo de id_token de la lógica de autenticación propia de cada aplicativo (Laravel u otro framework).

Características

  • Cliente HTTP para MDSFID (MdsfidClient) con HTTP client y generación de JWT internos.
  • Orquestador de flujo de autenticación con sistemas externos (ExternalAuthFlow).
  • DTO de identidad (VuIdentityDTO) que normaliza los datos devueltos.
  • Contratos para integrar con cualquier aplicación:
    • LoginHandlerInterface
    • PostLoginRedirectInterface
    • StateStoreInterface
  • Soporta múltiples integraciones en una misma app mediante instancias configurables (MdsfidConfig, ExternalConfig).

Instalación vía Composer

  1. Agregar el paquete al proyecto:
composer require kuantaz/sitio-confianza-mdsf
  1. Composer registrará automáticamente el autoload PSR-4 del namespace:
Kuantaz\SitioConfianzaMDSF\
  1. A partir de ahí podrás usar las clases de la librería directamente en tu aplicación (Laravel u otra) sin configuración adicional de autoload.

  2. Configurar las variables de entorno necesarias:

API_PROCESS_MDSFID_JWT_SECRET=tu_secret_aqui
API_PROCESS_MDSFID_JWT_KEY=tu_key_aqui
# Opcional: si el secret está codificado en Base64, usar true (por defecto: false)
MDSFID_SECRET_IS_BASE64=false

Conceptos principales

Configuración

  • Kuantaz\SitioConfianzaMDSF\Config\MdsfidConfig
new MdsfidConfig(
    baseUrl: 'https://api-centro.mdsf.cl',
    crearIdentidadPath: '/process/v1/mdsfid/crearidentidad',
    validarIdentidadPath: '/process/v1/mdsfid/validaridentidad',
    timeoutSeconds: 10,
    jwtExpirationSeconds: 300,
    secretIsBase64: filter_var(env('MDSFID_SECRET_IS_BASE64', false), FILTER_VALIDATE_BOOLEAN),
);
  • Kuantaz\SitioConfianzaMDSF\Config\ExternalConfig
new ExternalConfig(
    baseUrl: 'https://vus.mdsf.cl',
    authPath: '/mdsfid/auth',
    clientId: 'CLIENT_ID_ENTREGADO_POR_VUS',
    allowedRedirectHosts: ['cav.mideplan.cl'],
);

Cliente MDSFID

  • Kuantaz\SitioConfianzaMDSF\MdsfidClient

El cliente maneja internamente la comunicación HTTP (usando Guzzle) y la generación de tokens JWT.

Requiere:

  • MdsfidConfig
  • string $secret - Secret para la generación del JWT (usar API_PROCESS_MDSFID_JWT_SECRET)
  • string $key - Key ID para el JWT (usar API_PROCESS_MDSFID_JWT_KEY)

Ejemplo de uso:

$mdsfidClient = new MdsfidClient(
    config: $mdsfidConfig,
    secret: env('API_PROCESS_MDSFID_JWT_SECRET', 'Kdt682W+'),
    key: env('API_PROCESS_MDSFID_JWT_KEY', 'mdsfid-dev'),
);

$idToken = $mdsfidClient->crearIdentidad($idUserJson, $clientId, $redirectUri);

$payload = $mdsfidClient->validarIdentidad($idToken); // array

Flujo de Autenticación Externa

  • Kuantaz\SitioConfianzaMDSF\ExternalAuthFlow

Requiere:

  • ExternalConfig
  • MdsfidClient
  • StateStoreInterface (para guardar/recuperar el state)

Métodos principales:

// 1. Inicio de login: construir URL del sistema externo
$authUrl = $externalAuthFlow->startLogin($redirectUri); // redirigir a esta URL

// 2. Validar state a la vuelta
$isValid = $externalAuthFlow->validateState($receivedState);

// 3. Obtener identidad a partir de id_token
$identityDto = $externalAuthFlow->obtenerIdentidadDesdeToken($idToken); // VuIdentityDTO

Integración típica con Laravel (ejemplo simplificado)

StateStore con sesión

use Kuantaz\SitioConfianzaMDSF\Contracts\StateStoreInterface;

class LaravelSessionStateStore implements StateStoreInterface
{
    public function put(string $key, string $value): void
    {
        session()->put($key, $value);
    }

    public function pull(string $key): ?string
    {
        return session()->pull($key);
    }
}

LoginHandler

use Kuantaz\SitioConfianzaMDSF\Contracts\LoginHandlerInterface;
use Kuantaz\SitioConfianzaMDSF\DTO\VuIdentityDTO;
use App\Models\User;
use Illuminate\Support\Facades\Auth;

class LaravelVuLoginHandler implements LoginHandlerInterface
{
    public function login(VuIdentityDTO $identity): mixed
    {
        $user = User::where('run', $identity->runCiudadano)->first();

        if (! $user) {
            return null; // o lanzar excepción / resultado específico
        }

        Auth::login($user);

        return $user;
    }
}

Uso en un controlador

public function start()
{
    $redirectUri = route('vu.confirmar');

    $authUrl = $this->externalAuthFlow->startLogin($redirectUri);

    return redirect()->away($authUrl);
}

public function confirm(Request $request)
{
    $state = $request->input('state');
    $idToken = $request->input('id_token');

    if (! $this->externalAuthFlow->validateState($state)) {
        // manejar error de CSRF / state inválido
    }

    $identity = $this->externalAuthFlow->obtenerIdentidadDesdeToken($idToken);

    $user = $this->loginHandler->login($identity);

    // redirigir según el resultado de login...
}

Multi-integración

Puedes crear tantas instancias de MdsfidClient y ExternalAuthFlow como necesites, cada una con su propio par MdsfidConfig / ExternalConfig, permitiendo manejar más de una integración VUS/MDSFID en la misma aplicación.

Variables de Entorno Requeridas

La librería requiere las siguientes variables de entorno para funcionar correctamente:

  • API_PROCESS_MDSFID_JWT_SECRET: Secret utilizado para la generación de tokens JWT
  • API_PROCESS_MDSFID_JWT_KEY: Key ID utilizado en la generación de tokens JWT
  • MDSFID_SECRET_IS_BASE64: Si el secret está codificado en Base64, usar true. Por defecto false (el secret se usa tal cual).

Estas variables deben estar configuradas en tu aplicación antes de instanciar MdsfidClient.

Licencia

MIT.

统计信息

  • 总下载量: 58
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-20

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固