OpenID Connect¶
OpenID Connect (OIDC) es un estándar abierto que permite acceder con una única cuenta y perfil a múltiples servicios enlazados. Proporciona a la aplicación o servicio cliente información sobre el usuario, el contexto de su autenticación y acceso a la información de su perfil; de forma controlada. Incluso es posible pedir consentimiento expreso a la persona antes de compartir la información.
OIDC está basado en OAuth 2.0 y está orientado a simplificar el acceso para las personas que utilizan los servicios informáticos.
En OIDC, las aplicaciones cliente solicitan los conjuntos (scopes o ámbitos) de atributos (claims o declaraciones) que necesitan. Todas las aplicaciones pueden solicitar los scopes que estimen oportunos pero será la persona que utiliza el servicio quien dé su consentimiento para facilitar sus datos o no.
SIU utiliza el conjunto de scopes estándar de OIDC junto con algunos personalizados exclusivos de la UPM. Aunque se describen todos los posibles atributos, únicamente se proporcionarán los atributos que tengan valor.
| Scope | Personalizado | Consentimiento | Experimental |
|---|---|---|---|
openid | |||
profile | |||
email | |||
offline_access | |||
academia_identifiers | |||
academia_profile | |||
edu_affiliation | |||
upm_affiliation | |||
upm_identifiers |
Scopes estándar¶
La especificación de OIDC define una serie de scopes standard. Estos scopes están disponibles en SIU, aunque sólo se proporcionarán aquellos claims que tengan valor.
openid¶
El scope obligatorio openid proporciona un identificador inmutable, unidireccional, único y no reasignable de la cuenta.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
sub (pairwise) | uuid | El sujeto (subject) único para cada cliente. Esta derivado de la tripleta usuario – emisor – sector siguiendo la especificación de OpenID y preserva la privacidad al impedir que sistemas no relacionados lo utilicen para correlación y perfilado de usuarios. | |
sub (public) | uuid | En situaciones excepcionales y previa justificación, una aplicación cliente podrá solicitar el sujeto (subject) global que es el mismo para todos los clientes y no preserva la privacidad. |
Warning
Es obligatorio que la aplicación solicite el scope openid. En caso de omitirlo, el proceso de autenticación fallará.
Danger
La única forma de identificar unívocamente a una cuenta es usar el valor sub (subject) junto al valor iss (issuer) que se envía en el token.
El uso de cualquier otro atributo o combinación de atributos no garantiza la correcta identificación de la cuenta y nunca deben utilizarse con ese propósito.
profile¶
El scope opcional profile proporciona acceso a datos básicos de la persona que posee la cuenta:
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
name | string | Nombre completo en formato visible, incluidas todas las partes del nombre, posiblemente títulos y sufijos, ordenados según la configuración regional y las preferencias personales. | |
given_name | string | Nombre propio o de pila. En las culturas que utilizan varios nombres, se concatenarán todos usando espacios. | |
family_name | string | Apellidos. En las culturas que utilizan varios apellidos, se concatenarán todos usando espacios. En los casos que no se utilicen apellidos, este campo no se devolverá. | |
preferred_username | string | Nombre abreviado, que debe usarse para referenciar a la persona. Este valor no tiene porqué ser único por lo que nunca debe utilizarse como identificador. | |
updated_at | timestamp | Hora de la última actualización de la información. Se representa como el timestamp unix (número de segundos transcurridos desde el día 1 de enero de 1970). |
email¶
El scope opcional email proporciona información sobre la dirección de correo preferida.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
email | string | Dirección de correo electrónico preferida, en el formato RFC5322. Este valor no tiene porqué ser único por lo que nunca debe utilizarse como identificador. | |
email_verified | boolean | Indica si se ha verificado que la persona controla la dirección de correo electrónico. Siempre es cierto para los correos de la UPM. |
offline_access ¶
El scope opcional offline_access permite obtener un acceso consultar en el futuro la información de la cuenta sin necesidad de la presencia de la persona dueña de los datos.
Warning
Es obligatorio el consentimiento expreso del propietario para poder utilizar este scope.
Al solicitar el acceso offline, se proporciona un Refresh Token de OAuth2 que puede utilizarse para obtener un Access Token que permita el acceso a la API UserInfo aunque la persona no esté conectada en ese momento.
Scopes personalizados¶
Junto a los scopes estándar, SIU proporciona un conjunto de scopes personalizados.
Algunos de estos scopes pueden considerarse experimentales lo que se indicará con . Es posible que estos scopes cambien su nombre, claims, definición o se eliminen en el futuro.
academia_identifiers ¶
El scope opcional academia_identifiers proporciona identificadores comúmente utilizados en entornos académicos.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
unique_id | string | Identificadores legales con el formato: urn:schac:personalUniqueID:<country>:<type>:<value>Permite registrar múltiples identificadores según países (DNI en España, FIC en Finlandia...) |
Warning
Es obligatorio el consentimiento expreso del propietario para poder utilizar este scope.
Existe un conjunto de extensiones nacionales que definen los distintos tipos y valores:
Pasaporte
Este campo dispone de un formato genérico para pasaportes delegado a GÉANT Association:
urn:schac:personalUniqueID:int:passport:<COUNTRY>:<PASSPORT_CODE>
academia_profile ¶
El scope opcional academia_profile proporciona datos de la persona comúmente utilizados en entornos académicos.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
sn1 | string | Primer apellido de la persona | |
sn2 | string | Segundo apellido de la persona |
edu_affiliation ¶
El scope opcional edu_affiliation para proporcionar información relativa a la afiliación genérica de la persona con la UPM.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
affiliation | string | Relaciones genéricas de la persona con la UPM. | |
primary_affiliation | string | Relación primaria de la persona con la UPM. | |
scoped_affiliation | string | Relaciones de la persona en el dominio de seguridad (upm.es). |
El listado de relaciones utilizadas:
| Relación | Perfil |
|---|---|
member | Miembro de faculty, staff o student |
faculty | Personal docente |
staff | Personal no docente |
student | Estudiante |
alum | Estudiante egresado (alumni) |
affiliate | Personal de fundaciones, empresas, consejo social, etc... |
library-walk-in | Invitados y usuarios temporales. |
upm_affiliation ¶
El scope opcional upm_affiliation proporciona información detallada relativa a la afiliación de la persona con la UPM.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
upm_affiliation | string | Afiliaciones de la persona con la UPM con el formato: <tipo>:<centro>:<rol>. | |
upm_centre | string | Listado de centros (códigos) con los que la persona tiene algún tipo de afiliación. | |
upm_employee_type | string | Listado de roles que tiene la persona. |
El listado de roles utilizados tanto en upm_affiliation como en upm_employee_type:
| Rol | Descripción |
|---|---|
A | Estudiante con matrícula activa |
E | Estudiante sin matrícula activa no egresados (estudiante en abandono) |
I | Estudiante egresado (alumni) |
N | Estudiante de nuevo ingreso sin matrícula formalizada |
W | Estudiantes master de otras universidades |
F | PTGAS funcionario activo |
L | PTGAS laboral activo |
X | PTGAS no activo (ex-PTGAS) |
G | PTGAS Jubilado |
D | PDI Activo |
J | PDI Jubilado |
H | PDI no activo (ex-docente) |
M | PDI visitante |
Q | PDI Ad Honorem |
U | PDI de títulos propios |
P | PDI Emérito con contrato |
C | PDI Emérito sin contrato |
R | Investigador Ramón y Cajal / Juan de la Cierva / Talento / Beatriz Galindo |
B | Investigador invitado / Colaborador / Margarita Salas |
T | Personal de fundaciones (FGUPM, FUNDETEL, FUNDISMA) |
S | Personal de la OTT |
Y | Personal de empresas contratadas |
K | Miembro del consejo social |
V | Invitados |
O | Otros (rol a extinguir) |
- | Cuentas institucionales |
upm_identifiers ¶
El scope opcional upm_identifiers proporciona identificadores internos de la UPM.
| claim | Tipo | Multivaluado | Descripción |
|---|---|---|---|
primary_unique_id | string | Identificador legal primario con el formato: (NIF|NIE|PTGAS|DID):<number>. | |
primary_unique_id_number | string | Identificador legal primario. Debe usarse siempre junto con primary_unique_id_type. | |
primary_unique_id_type | string | Tipo del identificador legal primario. Debe usarse siempre junto con primary_unique_id_number. |
Warning
Es obligatorio el consentimiento expreso del propietario para poder utilizar este scope.