因此,我正在构建我的第一个项目,该项目将用于中高流量的生产环境。
我决定使用 Keycloak 作为 IdP,NodeJS 作为后端,React 到前端(都在 TypeScript 上)。对于后端,我想使用承载令牌作为身份验证。
当我一直在研究 Keycloak 时,我发现它使用 JWT 令牌填充了来自用户的数据。我还偶然发现了一些建议反对将 JWT 令牌与来自用户的数据一起使用的人。
老实说,这些观点对我来说似乎很有效——但是现在,当使用 Keycloak 时,我有什么替代方法呢?好的,如果我使用自己的身份验证和授权系统,我猜我可以使用经典会话。但我不知道如何在 Keycloak 中实现它们。另外,我觉得很奇怪,像 Keycloak 这样流行和大的东西会使用默认情况下不好的东西(JWT)——所以我不确定我是否应该改变这个机制。
所以,我的问题是:
将 JWT 令牌与用户数据一起使用是否安全?(Keycloak 的默认设置)如下所示:
{
exp: 1645637327,
iat: 1645601327,
jti: 'removed',
iss: 'http://localhost:8080/auth/realms/supercatalog',
aud: 'account',
sub: 'removed',
typ: 'Bearer',
azp: 'restapi',
session_state: '2434f33d-73c4-4f38-8c80-e92356380ffa',
acr: '1',
'allowed-origins': [ '' ],
realm_access: {
roles: [
'app-elev',
'offline_access',
'uma_authorization',
'default-roles-supercatalog'
]
},
resource_access: { restapi: { roles: [Array] }, account: { roles: [Array] } },
scope: 'email profile',
sid: 'removed',
email_verified: false,
preferred_username: 'elev'
}
如果没有,在仍然使用 Keycloak 的同时,还有什么替代方案?