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 pa 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 parametro 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 el; de otra forma el client ID debe ser agregado al parametro azp
nonce Un nuevo parametro que introduce la especificación OpenID Connect al authorization flow. EN adición a los parametros definidos por OAuth 2.0, la aplicacion cliente puede opcionalmente incluir el parametro nonce. Este parametro 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 autenticacion, entonces el servidor de autenticacion 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 pedira autenticacion por parte del usuario. Como un OpenID provider maneja la session o el mecanismo de autenticacion esta fuera del alcance de la especificación OpenID Connect. Un usuario podria crear una session entrando a un sitio web diferente a la aplicacion cliente. En ese caso, el OpenID provider debe mantener el tiempo de autenticacion original. Este es el valor de auth_time.
acr Authentication Context Reference o acr. El valor de este parametro debe ser comprendido tanto por la aplicacion cliente como el proveedor de autenticacion. Solicita un nivel de autenticacion 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 aplicacion cliente como el proveedor de autenticacion 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.