PHPackages                             kuantaz/sitio-confianza-mdsf - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. kuantaz/sitio-confianza-mdsf

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

kuantaz/sitio-confianza-mdsf
============================

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

1.0.3(5mo ago)076MITPHPPHP &gt;=8.2

Since Jan 20Pushed 5mo agoCompare

[ Source](https://github.com/Kuantaz/sitio-confianza-mdsf)[ Packagist](https://packagist.org/packages/kuantaz/sitio-confianza-mdsf)[ RSS](/packages/kuantaz-sitio-confianza-mdsf/feed)WikiDiscussions main Synced today

READMEChangelog (2)Dependencies (2)Versions (6)Used By (0)

SitioConfianzaMDSF
------------------

[](#sitioconfianzamdsf)

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

[](#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

[](#instalación-vía-composer)

1. Agregar el paquete al proyecto:

```
composer require kuantaz/sitio-confianza-mdsf
```

2. Composer registrará automáticamente el autoload PSR-4 del namespace:

```
Kuantaz\SitioConfianzaMDSF\

```

3. 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.
4. 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

[](#conceptos-principales)

#### Configuración

[](#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

[](#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

[](#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)

[](#integración-típica-con-laravel-ejemplo-simplificado)

#### StateStore con sesión

[](#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

[](#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

[](#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

[](#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

[](#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

[](#licencia)

MIT.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance73

Regular maintenance activity

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 54.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

4

Last Release

150d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/8976618?v=4)[jfuenzalida](/maintainers/jfuenzalida)[@JFuenzalida](https://github.com/JFuenzalida)

---

Top Contributors

[![JhonFuenzalida](https://avatars.githubusercontent.com/u/97454241?v=4)](https://github.com/JhonFuenzalida "JhonFuenzalida (6 commits)")[![DarayaKuantaz](https://avatars.githubusercontent.com/u/182722751?v=4)](https://github.com/DarayaKuantaz "DarayaKuantaz (5 commits)")

### Embed Badge

![Health badge](/badges/kuantaz-sitio-confianza-mdsf/health.svg)

```
[![Health](https://phpackages.com/badges/kuantaz-sitio-confianza-mdsf/health.svg)](https://phpackages.com/packages/kuantaz-sitio-confianza-mdsf)
```

###  Alternatives

[google/auth

Google Auth Library for PHP

1.4k294.2M220](/packages/google-auth)[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k108.5M886](/packages/laravel-socialite)[ellaisys/aws-cognito

Laravel Authentication using AWS Cognito (Web and API)

123256.9k1](/packages/ellaisys-aws-cognito)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k43](/packages/civicrm-civicrm-core)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[neuron-core/neuron-ai

The PHP Agentic Framework.

2.0k656.1k39](/packages/neuron-core-neuron-ai)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
