Pocket ID: Accede a tus servicios mediante OIDC con Passkey

Después de tanto tiempo, vuelvo para descubriros un servicio que me ha facilitado muchísimo el acceso a mis servicios. Ha supuesto un antes y un después sin duda alguna.

Olvídate de usuarios y contraseñas, de 2FA... ¿qué hay más seguro y rápido que poder acceder mediante Passkey?

Pocket ID es un sencillo proveedor de OIDC que permite a los usuarios autenticarse con su Passkey a sus servicios. Además también es compatible con LDAP.

Gracias a Pocket ID puedo acceder de forma automática y segura a muchos de mis servicios. Todo en un Flow automatizado. En cuestión de segundos y sin perder tiempo en introducir usuario/contraseña.

Además, si no quieres empezar usando Passkeys, también puedes iniciar sesión mediante la utilización de un código de un solo uso. Todo configurable desde el panel de administración de Pocket ID.

Puedes configurarlo con cualquier servicio aunque debe ser compatible con OIDC.

Si eres ya usuario de sericios como Authelia, Authentik o TinyAuth, puedes también integrar Pocket ID para iniciar sesión mediante Passkeys.


Instalar Pocket-ID

⚠️
Si eres usuario de UnRAID, vigila las variables de la plantilla. Desde Pocket ID v.1.0 han cambiado y es posible que no la hayan actualizado todavía. Toma como referencia las variables mostradas en el siguiente Compose.
services:
  pocket-id:
    image: ghcr.io/pocket-id/pocket-id
    restart: unless-stopped
    ports:
      - 1411:1411
    volumes:
      - "./pocketid/data:/app/data"
    environment:
      - APP_URL=https://id.midominio.com
      - TRUST_PROXY=true
      - MAXMIND_LICENSE_KEY=xxxxxxxxxxxxxx
      - PUID=1000
      - PGID=100
    # Optional healthcheck
    healthcheck:
      test: "curl -f http://localhost:1411/healthz"
      interval: 1m30s
      timeout: 5s
      retries: 2
      start_period: 10s

Este Docker-Compose no podía ser más sencillo. Lo único que deberemos de modificar son las variables según las necesidades. En APP_URL especificaremos la URL mediante la cual accederemos a Pocket ID, para ello necesitaremos la creación de un Proxy Inverso.

Cómo instalar y configurar Nginx Proxy Manager en tu NAS o servidor unRAID
Guía detallada sobre cómo instalar tu Proxy Inverso en un NAS - unRAID con certificado Let’s Encrypt.
💡
La variable MAXMIND_LICENSE_KEY es totalmente opcional.

Configuración inicial

Antes de nada, para acceder a configurar la cuenta de Administrador, lo deberemos de hacer entrando en la siguiente URL: https://id.midominio.com/login/setup. Una vez ya tenemos la cuenta c reada podremos iniciar sesión y continuar con el proceso.

Lo primero que tendremos que hacer es crear un usuario el cual nos va a permitir establecer la conexión mediante OIDC y nuestro servicio. Para ello nos vamos a Settings - Users.

Después tenemos que asignar este usuario a un Grupo de usuarios, para ello creamos uno y metemos nuestro usuario dentro. Esto lo haremos en Settings - User Groups.

Añadiendo nuestro Passkey

El siguiente paso es imprescindible y es el tener que añadir nuestro Passkey a Pocket ID. Puede ser un existente o uno nuevo. Para ellos nos vamos a Settings - My Account - Passkeys. Una vez añadido, ya tendremos todo listo para empezar a integrarlo con nuestro servicios.


Añadiendo nuestro primer servicio

Para añadir un servicio es tan sencillo como dirigirnos a Settings - OIDC Clients y asignarle un nombre y la URL Callback, que ya depende de cada servicio que queramos implementar.

Seguidamente, al añadirlo, ya nos devolverá el ID de Cliente, el Secret y el resto de URL's para especificar en nuestro servicio. En la web de Pocket ID tenemos numerosos ejemplos de integración.

Todos mis servicios integrados actualmente con Pocket ID.

Una vez lo pruebes, no hay marcha atrás. Ya me lo dirás en los comentarios. Ahora ya puedes incluso deshabilitar el login clásico en los servicios que lo permitan, y así tener el flow completamente automatizado y acceder directamente al servicio.

¡A disfrutarlo y feliz #DomingoDeSelfHosted!