Así que he estado leyendo sobre la diferencia entre el token de ID y el token de acceso para autorización. No sé cómo implementar el token de ID, que debería ser un JWT.
El token de acceso que he estado implementando se ve así:
const accountCredentials = { username: account.username, accountId: account.accountId, grant_type: "password" } const token = jwt.sign(accountCredentials, config.JWT_KEY, { expiresIn: "1h" })así que me pregunto qué se supone que debe contener un token de ID y cómo implementarlo como se describe en la especificación de conexión de openID. Lo siento, esto puede sonar estúpido, pero realmente no entiendo la documentación.
Un token de ID es un token que permite que su aplicación identifique al usuario. Siempre es un JWT, y su contenido se describe en esta sección de los documentos de OIDC: https://openid.net/specs/openid-connect-core-1_0.html#IDToken Entonces, para tener un token de ID válido, necesita un JWT que contiene al menos estas afirmaciones: iss , sub , aud , exp , iat . Puede verificar en la especificación, lo que debe contener cada uno de estos reclamos. Además, el token de identificación debe estar al menos firmado (también puede estar encriptado).
En tu código tendrás algo así:
const accountCredentials = { iss: '...', sub: account.username, aud: '...', iat: now() } const token = jwt.sign(accountCredentials, config.JWT_KEY, { expiresIn: "1h" })Tenga en cuenta que la especificación de OpenID Connect solo especifica el código de autorización, los flujos implícitos e híbridos. El uso del tipo de concesión de contraseña no forma parte del estándar OIDC.