если я не ошибаюсь, токен доступа является токеном JWT, и вы сможете расшифровать его следующим образом:
const jwt = require('jsonwebtoken');
var tokendetails = jwt.decode(token)
В качестве альтернативы в промежуточном программном обеспечении Keycloakconnect вы можете получить подробную информацию, как показано ниже
app.get('/apis/me', keycloak.enforcer('user:profile', {response_mode: 'token'}), function (req, res) {
let tokenDetails = req.kauth.grant
})
Я не проверял, поэтому я не уверен на 100%, но я думаю, что вы должны иметь возможность получить имя пользователя таким образом:
req.kauth.grant.access_token.content.preferred_username
Другим способом вы могли бы получить что-то вроде этого:
const request = require('request');
const options = {
url: `${authServerUrl}/realms/${encodeURIComponent(realm)}/account`;,
headers: {
'Authorization':'bearer '+token
}
};
request(options,function(error, response, body){
if(!error) {
let userProfile = body
}
})
Вам могут помочь следующие ресурсы: https://www.keycloak.org/docs/latest/securing_apps/index.html#_nodejs_adapter https://github.com/v-ladynev/keycloak-nodejs-example/blob/master/lib/keyCloakService.js