ID Token

El ID Token es la principal adición a OAuth2 que realiza OpenID Connect. Es un JSON web token JWT que transporta información relevante al usuario autenticado desde el servidor de autorización (OpenID provider) hacia la aplicacion cliente (OpenID relaying party). La estructura de un ID Token es definida por la especificación OpenID Connect. A continuación un ejemplo de ID Token:

StandardClaims

{
    "iss": "https://accounts.autentiaplus.id/",
    "sub": "d733edad-4d05-402a-9b66-090b06d40f7a",
    "name": "Luis Ignacio Cisternas Rojas",
    "given_name": "Luis Ignacio",
    "family_name": "Cisternas Rojas",
    "gender": "male",
    "updated_at": 1604416603,
    "aud": "67jjuyuy7JHk12",
    "nonce": "88797jgjg32323",
    "exp": "1416283970",
    "iat": "1416283970",
    "auth_time": ":1311280969",
    "acr": "urn:acr:password",
    "amr": "password",
    "azp": "67jjuyuy7JHk12"
}
Atributo Descripcion
iss Identifica al emisor del token en formato HTTPS sin ningún parámetro o fragmentos.
sub El identificador local del usuario en el OpenID provider.
aud La audiencia del token, Puede ser una lista de identificadores, pero debe contener el OAuth client ID en él; de otra forma el client ID debe ser agregado al parámetro azp
nonce Un nuevo parámetro que introduce la especificación OpenID Connect al authorization flow. En adición a los parámetros definidos por OAuth 2.0, la aplicación cliente puede opcionalmente incluir el parámetro nonce. Este parámetro permite mitigar ataques de “replay”. El servidor de autorización debe rechazar cualquier request si encuentra que dos o mas request con el mismo nonce. Si un nonce esta presente el el request de autenticación, entonces el servidor de autenticación debe incluir el mismo valor dentro del ID token. La aplicacion cliente debe validar que el valor de nonce devuelto por el servidor sea el mismo que se envió originalmente.
exp El tiempo de expiración del token en segundos desde 1970-01-01T0:0:0Z (UTC), Unix Epoch.
iat El tiempo de emisión del token en segundos desde 1970-01-01T0:0:0Z (UTC), Unix Epoch.
auth_time El momento en el cual el usuario es autenticado por el OpenID provider. Si el usuario estaba previamente autenticado, entonces el OpenID provider no pedirá autenticación por parte del usuario. Como un OpenID provider maneja la sesión o el mecanismo de autenticación esta fuera del alcance de la especificación OpenID Connect. Un usuario podría crear una sesión entrando a un sitio web diferente a la aplicación cliente. En ese caso, el OpenID provider debe mantener el tiempo de autenticación original. Este es el valor de auth_time.
acr Authentication Context Reference o acr. El valor de este parámetro debe ser comprendido tanto por la aplicación cliente como el proveedor de autenticación. Solicita un nivel de autenticación para el request.
amr Authentication Method References p amr, Indica como fue autenticado el usuario por el provedor de identidad. Puede ser un array de valores. Tanto la aplicación cliente como el proveedor de autenticación deben comprender estos valores.
azp Authorized Party o azp, Es necesario cuando existe una audiencia (aud) y su valor es diferente al OAuth client ID. El valor de azp debe ser el OAuth client ID.