Skip to content

IDP: modelo de datos ​

Base de datos del backend auth-backend. Guarda las identidades, la autenticación, los clientes y tokens OAuth 2.0 / OIDC, y los servicios centralizados de aprobación de documentos y notificaciones que usan los demás sistemas.

iam_core ​

Identidades de usuario y todo lo que permite autenticarlas: identificadores de acceso, credenciales (contraseña y TOTP), proveedores externos (Ciudadanía Digital), atributos personalizados (claims) y los intentos con código de verificación (registro, verificación de email, restablecimiento de contraseña, vinculación TOTP).

17 modelos.

Diagrama de iam_core

  • IdentityUser: Identidad de una persona en el IDP (interna o externa), con su public_id que los sistemas cliente reciben como sub.
  • LoginIdentifier: Identificador con el que se inicia sesión (usuario o email) y si el email está verificado.
    Se relaciona con: IdentityUser.
  • UserCredential: Credencial habilitada de un usuario (contraseña o TOTP) y su vigencia.
    Se relaciona con: IdentityUser.
  • PasswordCredential: Hash de la contraseña y algoritmo usado.
    Se relaciona con: UserCredential.
  • TotpCredential: Secreto cifrado del autenticador TOTP.
    Se relaciona con: UserCredential.
  • IdentityProvider: Proveedor de identidad externo (Ciudadanía Digital) con sus endpoints OIDC.
  • AuthenticationSession: Sesión iniciada en el IDP: cómo se autenticó, desde dónde, expiración y última actividad.
    Se relaciona con: IdentityProvider, IdentityUser.
  • IdentityProviderRequestedScope: Scopes que se piden al proveedor externo.
    Se relaciona con: IdentityProvider.
  • FederatedIdentity: Vínculo entre una identidad local y su cuenta en el proveedor externo.
    Se relaciona con: IdentityProvider, IdentityUser.
  • CustomClaimDefinition: Claim personalizado fuera del estándar OIDC (carnet, tipo de documento, fecha de nacimiento, celular).
  • PredefinedClaimValue: Valores permitidos para un claim personalizado.
    Se relaciona con: CustomClaimDefinition.
  • CustomIdentityAttribute: Valor de un claim personalizado para un usuario y si está verificado.
    Se relaciona con: CustomClaimDefinition, IdentityUser.
  • RegistrationAttempt: Registro externo pendiente de confirmar con el código enviado al email.
  • EmailVerificationAttempt: Verificación del email de un identificador existente.
    Se relaciona con: LoginIdentifier.
  • PasswordResetAttempt: Restablecimiento de contraseña sin sesión, con código por email.
    Se relaciona con: LoginIdentifier.
  • TotpLinkingAttempt: Vinculación de un autenticador TOTP pendiente de confirmar.
    Se relaciona con: IdentityUser.
  • PasswordChangeFailedAttempt: Intento fallido de cambio de contraseña (para limitar reintentos).
    Se relaciona con: IdentityUser.

oauth2_eje ​

Servidor de autorización OAuth 2.0: clientes registrados (los portales y servicios que usan el IDP), sus URIs, scopes, llaves de firma y los artefactos emitidos (códigos de autorización, tokens de acceso, refresh e ID tokens).

13 modelos.

Diagrama de oauth2_eje

  • Oauth2Client: Aplicación registrada en el IDP (portal o servicio) y su tipo.
  • Oauth2ClientCredential: Secreto del cliente confidencial y su vigencia.
    Se relaciona con: Oauth2Client.
  • PostLogoutRedirectUri: URI a la que se vuelve después de cerrar sesión.
    Se relaciona con: Oauth2Client.
  • BackChannelLogoutUri: URI que el IDP llama para cerrar la sesión del cliente desde el servidor.
    Se relaciona con: Oauth2Client.
  • Oauth2RedirectUri: URI de retorno permitida tras autorizar.
    Se relaciona con: Oauth2Client.
  • Oauth2SigningKey: Par de llaves para firmar tokens (kid, estado y rotación). Tabla: oauth2_eje_signingkey.
  • Oauth2Scope: Scope disponible en el IDP.
  • Oauth2ClientScope: Scopes que un cliente puede pedir.
    Se relaciona con: Oauth2Client, Oauth2Scope.
  • AuthorizationCode: Código de autorización (flujo PKCE) emitido y si ya se consumió.
    Se relaciona con: AuthenticationSession (iam_core), IdentityUser (iam_core), Oauth2Client, Oauth2Scope.
  • Consent: Consentimiento del usuario para que un cliente acceda a ciertos scopes.
    Se relaciona con: IdentityUser (iam_core), Oauth2Client, Oauth2Scope.
  • AccessToken: Token de acceso emitido (por jti) y su revocación.
    Se relaciona con: IdentityUser (iam_core), AuthorizationCode, Oauth2Client, Oauth2Scope, Oauth2SigningKey.
  • RefreshToken: Token de refresco, su familia para detectar reutilización y su consumo.
    Se relaciona con: IdentityUser (iam_core), AccessToken, Oauth2Client.
  • OIDCIdToken: ID token emitido junto al token de acceso.
    Se relaciona con: AccessToken, Oauth2SigningKey.

authentication ​

Estado temporal de los flujos de inicio de sesión: cada intento de login y cada intento de vincular una identidad federada mientras el usuario completa los pasos.

2 modelos.

Diagrama de authentication

  • LoginAttempt: Intento de inicio de sesión en curso con los parámetros de la solicitud OAuth.
    Se relaciona con: IdentityProvider (iam_core), IdentityUser (iam_core), Oauth2Client (oauth2_eje).
  • LinkFederatedIdentityAttempt: Intento de vincular la cuenta con un proveedor externo.
    Se relaciona con: IdentityProvider (iam_core), IdentityUser (iam_core).

oidc ​

Relación entre los scopes OIDC y los claims personalizados que cada scope entrega.

1 modelo.

Diagrama de oidc

  • ScopeClaimDefinition: Claims personalizados que entrega cada scope.
    Se relaciona con: CustomClaimDefinition (iam_core), Oauth2Scope (oauth2_eje).

aprobacion_documentos ​

Servicio centralizado de aprobación de documentos oficiales por Ciudadanía Digital o firma digital: la configuración, el documento, la solicitud, su resultado y los datos de la firma o aprobación obtenida.

8 modelos.

Diagrama de aprobacion_documentos

  • ConfigAprobaciones: Configuración de los servicios de aprobación (Ciudadanía Digital y validación de firma digital).
  • DocumentoOficial: Documento a aprobar, con su código y hashes, y el cliente que lo envió.
    Se relaciona con: Oauth2Client (oauth2_eje).
  • SolicitudAprobacion: Solicitud de aprobación de un usuario: mecanismo, estado y trámite en Ciudadanía Digital.
    Se relaciona con: DocumentoOficial, IdentityUser (iam_core), Oauth2Client (oauth2_eje).
  • AprobacionSolicitadaDocumentoOficial: Documento incluido en una solicitud y su versión firmada.
    Se relaciona con: DocumentoOficial, SolicitudAprobacion.
  • ResultadoAprobacion: Resultado de la aprobación de un documento.
    Se relaciona con: DocumentoOficial, SolicitudAprobacion.
  • DatosAprobacionFirmaDigital: Datos del certificado y del firmante cuando se aprobó con firma digital.
    Se relaciona con: ResultadoAprobacion.
  • DatosAprobacionCiudadaniaDigital: Datos de la aprobación por Ciudadanía Digital (operación y registro en blockchain).
    Se relaciona con: ResultadoAprobacion.
  • AprobacionSolicitadaDocumentoOficialSeg: Segmento de un archivo firmado subido por partes.
    Se relaciona con: AprobacionSolicitadaDocumentoOficial.

notificaciones ​

Servicio centralizado de notificaciones por correo y por Ciudadanía Digital: configuración de los canales, la solicitud, sus adjuntos, destinatarios y cada envío realizado.

5 modelos.

Diagrama de notificaciones

  • ConfigNotificaciones: Configuración de los canales de notificación (Ciudadanía Digital y correo SMTP).
  • SolicitudNotificacion: Notificación pedida por un cliente, con título y descripción.
    Se relaciona con: SolicitudAprobacion (aprobacion_documentos), IdentityUser (iam_core), Oauth2Client (oauth2_eje).
  • DocumentoAdjuntoNotificacion: Documento oficial adjunto a una notificación.
    Se relaciona con: DocumentoOficial (aprobacion_documentos), SolicitudNotificacion.
  • DestinatarioNotificacion: Usuario que debe recibir la notificación.
    Se relaciona con: IdentityUser (iam_core), SolicitudNotificacion.
  • EnvioNotificacion: Envío por un canal: estado, seguimiento y lectura.
    Se relaciona con: DestinatarioNotificacion.