# Uso de la API Pública

La plataforma iDDi UAN expone algunas API's para permitir la interacción entre sistemas y plataformas de terceros que tengan necesidad de consumir información de forma automática. Tal es el caso de la verificación del estatus de un alumno para préstamo de algún servicio o registrar su acceso a algún sitio por ejemplo.

# Seguridad

Para consultar a la API pública de iDDi es necesario contar con una Clave de API (API-Key), ésta se le proporciona al desarrollador que luego intercambia por un Token de Acceso (Access-Token) en formato JSON Web Token (JWT) con los privilegios necesarios (scopes) de acceso a diferente información. Existen diferentes scopes que determinarán a qué información puede acceder el cliente. Por ejemplo, todas las API-Key pueden consultar el perfil básico de un usuario, pero para consultar datos personales como correo, teléfono, promedio, etc. se requiere de otros scopes como perfil:extendido o perfil:academico que se proporcionan a la API-Key del desarrollador con previa autorización de la Secretaría de Docencia.

Un desarrollador, con su API-Key puede generar múltiples AccesToken con diferentes scopes específicos para la aplicación que esté diseñando.

Otro tipo de APIs, por la información sensible que manejan, requieren establecer una conexión segura mediante mutual TLS mTLS entre el cliente y la API. Para ello se utilizan certificados expedidos y firmados por la Infraestructura de Clave Pública (PKI) de iDDi UAN - Cert Authority.

Algunos endpoints solo requieren firmar o encriptar las peticiones y validar las respuestas utilizando claves públicas y algoritmos de firmado como Ed25519 o encriptado con X25519. En PHP se utiliza el Toolkit de Seguridad de APIs: Sapient.

# Access Token

{
    "iss": "https://apps.iddi.uan.mx/",
    "sub": "2o0QeqAqsnfdPT2hOf8RAsai0tD1BwZp@docencia",
    "aud": "https://api.iddi.uan.mx",
    "iat": 1575526641,
    "exp": 1575613041,
    "azp": "2o0QeqAqsnfdPT2hOf8RAsai0tD1BwZp",
    "scope": "perfil perfil:extendido catalogo",
    "gty": "client-credentials"
}

# Scopes

  • API Pública
    • perfil
    • perfil:extendido (foto, correo, telefono, ua, campus, cohorte, estatus...
    • catalogo
  • Issuers
    • user:perfiles
    • iddi:verificar
    • iddi:revocar
  • PiiDA
    • perfil:academico (promedio, avance, materias, historial...

# Perfil

porque hay diferentes perfiles y su tipo. Tipo de usuario: A Administrativo, D Docente, B Bachillerato, L Licenciatura, P Posgrado, E Externo, S Staff Nociones de Persona

Un Usuario Alumno puede tener diferentes perfiles o credenciales según su carrera: Perfil de Sistemas, de Sociales, etc.

Un Trabajador puede tener una credencial con adscripción como Docente, luego si se hace funcionario, Una credencial como Funcionario, etc.

# Perfil Básico

# Perfil Extendido

# Perfil de Alumno

las carreras, matricula por carrera y varias carreras por matricula estatus de la carrera

# Perfil de Personal

adscripciones, en general siempre es uno solo

# Issuer