• logo

  • Empezar

    navigate_next
  • Proyectos

    navigate_next
  • Mecanismos

    navigate_next
  • Servicios

    navigate_next
    1. Mecanismos

    2. chevron_right
    3. Autenticación

    4. chevron_right
    5. Terminología

    Autenticación (Proveedor)

    Terminología

    Para una mayor comprensión de los protocolos, véase:

    Especificación del protocolo OAuth 2.0.
    Especificación del protocolo OpenId Connect.

    La siguiente terminología es usada en el resto del documento y busca ser compatible con la terminología utilizada en OpenId Connect.

    Roles

    • Propietario del recurso (Resource Owner)
      Es el ciudadano que tiene acceso a un navegador web y es capaz de dar acceso a sus recursos protegidos. Se puede utilizar el término usuario, ciudadano o End-User.

    • Cliente (Client)
      Es el Sistema Cliente que hace peticiones a recursos protegidos en nombre del propietario del recurso y con la autorización del mismo. También se pueden utilizar los términos: sistema cliente, aplicación cliente para hacer referencia a este concepto.

    • Proveedor de Identidad (Identity Provider)
      Es el Sistema Proveedor de Identidad que es el responsable de validar las credenciales del ciudadano (Authorization endpoint) y generar tokens de acceso (Token endpoint). Se utilizan los términos servidor de autenticación de Ciudadanía Digital, Provider, Servidor de Autorización (en terminología referente a OAuth 2.0)

    • Recurso protegido (Protected Resource)
      Son los recursos que tiene acceso el Resource Owner tras obtener un token de acceso.

    Tokens

    • ID token
      Un ID token es un JSON Web Token (JWT) que contiene información sobre el proceso de autenticación del End-User en el servidor de autenticación.

    • Access token
      Los Access tokens son credenciales emitidas por el servidor de autenticación para un sistema cliente, y tienen como fin permitir a estos últimos el acceso a recursos protegidos. Un Access Token es un string opaco que representa el acceso a ciertos datos y puede ser utilizado por un tiempo limitado.

    • Refresh token
      Los Refresh tokens son credenciales emitidas por el servidor de autenticación para un sistema cliente, y tienen como fin la obtención de nuevos Access tokens, cuando estos expiran o se vuelven inválidos.

    Scopes

    Indican los recursos que el cliente quiere acceder a nombre del usuario, pueden entenderse como permisos que el usuario final autorizará para que una determinada aplicación cliente pueda realizar operaciones.

    Estos scopes o permisos pueden ser públicos (public), privados (private) o internos (internal).

    Los scopes tipificados como públicos son aquellos que pueden ser implementados por instituciones del Estado, ajenas a los detalles de implementación del ecosistema de Ciudadanía Digital, los scopes privados e internos están destinados a ser parte de la implementación interna del ecosistema de Ciudadanía Digital.

    Se listan a continuación los scopes públicos:

    NombreDescripciónTipoObservación
    profilePermiso para acceder al Perfil público del usuario (nro_documento, nombre completo)público
    fecha_nacimientoPermiso para acceder a la fecha de nacimiento del usuario. Pedirlo sólo si se hará uso de ella dentro del sistema cliente.público
    emailPermiso para acceder a la dirección de correo electrónica del usuario. Pedirlo sólo si se hará uso de él dentro del sistema cliente.público
    celularPermiso para acceder al número de celular del usuario. Pedirlo sólo si se hará uso de él dentro del sistema cliente.público
    openidPermiso para acceder a la información de la autenticación del usuariopúblico
    offline_accessPermiso para acceder a refresh tokenpúblico
    nombrePermiso para acceder al nombre completo del usuariopúblicodeprecated
    documento_identidadPermiso para acceder al número de documento de identidad del usuariopúblicodeprecated

    Discovery

    Acorde a la especificación de OpenID Connect, el mecanismo de autenticación expone un endpoint para descubrir la configuración del proveedor de identidad. La configuración se encuentra en notación de objetos Javascript, JSON.

    La configuración se encuentra en:

    https://<base-url-proveedor-identidad>/.well-known/openid-configuration

    La respuesta tendrá un aspecto similar al siguiente:

    { "authorization_endpoint": "https://<base-url-proveedor-identidad>/auth", "device_authorization_endpoint": "https://<base-url-proveedor-identidad>/device/auth", "claims_parameter_supported": true, "claims_supported": [ "sub", "profile", "fecha_nacimiento", "email", "celular", "documento_identidad", "numero_documento", "tipo_documento", "nombre", "nombres", "primer_apellido", "segundo_apellido", "sid", "auth_time", "iss", "amr" ], "code_challenge_methods_supported": ["plain", "S256"], "end_session_endpoint": "https://<base-url-proveedor-identidad>/session/end", "grant_types_supported": [ "authorization_code", "refresh_token", "client_credentials", "urn:ietf:params:oauth:grant-type:device_code", "urn:ietf:params:oauth:grant-type:token-exchange" ], "id_token_signing_alg_values_supported": ["PS256", "RS256", "ES256"], "issuer": "https://<base-url-proveedor-identidad>", "jwks_uri": "https://<base-url-proveedor-identidad>/certs", "registration_endpoint": "https://<base-url-proveedor-identidad>/reg", "authorization_response_iss_parameter_supported": true, "response_modes_supported": [ "form_post", "fragment", "query", "web_message", "jwt", "query.jwt", "fragment.jwt", "form_post.jwt", "web_message.jwt" ], "response_types_supported": ["code"], "scopes_supported": [ "openid", "profile", "fecha_nacimiento", "email", "celular", "offline_access", "me.devices.create", "me.devices.delete", "me.sessions.read", "nonce.create", "nonce.read", "documento_identidad", "nombre" ], "subject_types_supported": ["public", "pairwise"], "token_endpoint_auth_methods_supported": [ "client_secret_basic", "client_secret_post", "none" ], "token_endpoint": "https://<base-url-proveedor-identidad>/token", "request_object_signing_alg_values_supported": [ "HS256", "RS256", "PS256", "ES256", "EdDSA" ], "request_parameter_supported": false, "request_uri_parameter_supported": true, "require_request_uri_registration": true, "userinfo_endpoint": "https://<base-url-proveedor-identidad>/me", "authorization_signing_alg_values_supported": ["PS256", "RS256", "ES256"], "introspection_endpoint": "https://<base-url-proveedor-identidad>/token/introspection", "introspection_endpoint_auth_methods_supported": [ "client_secret_basic", "client_secret_post", "none" ], "introspection_signing_alg_values_supported": ["PS256", "RS256", "ES256"], "revocation_endpoint": "https://<base-url-proveedor-identidad>/token/revocation", "revocation_endpoint_auth_methods_supported": [ "client_secret_basic", "client_secret_post", "none" ], "id_token_encryption_alg_values_supported": [ "A128KW", "A256KW", "ECDH-ES", "RSA-OAEP", "dir" ], "id_token_encryption_enc_values_supported": [ "A128CBC-HS256", "A128GCM", "A256CBC-HS512", "A256GCM" ], "introspection_encryption_alg_values_supported": [ "A128KW", "A256KW", "ECDH-ES", "RSA-OAEP", "dir" ], "introspection_encryption_enc_values_supported": [ "A128CBC-HS256", "A128GCM", "A256CBC-HS512", "A256GCM" ], "authorization_encryption_alg_values_supported": [ "A128KW", "A256KW", "ECDH-ES", "RSA-OAEP", "dir" ], "authorization_encryption_enc_values_supported": [ "A128CBC-HS256", "A128GCM", "A256CBC-HS512", "A256GCM" ], "request_object_encryption_alg_values_supported": ["A128KW", "A256KW", "dir"], "request_object_encryption_enc_values_supported": [ "A128CBC-HS256", "A128GCM", "A256CBC-HS512", "A256GCM" ], "backchannel_logout_supported": true, "backchannel_logout_session_supported": true, "claim_types_supported": ["normal"] }