Внедрить подключение keycloak в экспресс-приложении
Я использую сервер Keycloak для авторизации (микросервис).
Я клонировал этот проект https://github.com/w3tecch/express-typescript-boilerplate/tree/master
В своем экспресс-проекте я использую keycloak-connect
(адаптер keycloak) библиотека
Я хочу реализовать приведенный ниже код в моем новом проекте express-nodejs.
Справка: https://github.com/keycloak/keycloak-quickstarts/blob/latest/service-nodejs/app.js
app.get('/service/secured', keycloak.protect(), function (req, res) {
res.json({message: 'secured'});
});
я использую routing-controllers
библиотека для экспресс. Я не знаю как использоватьkeycloak.protect()
в этом проекте. какие-либо предложения?
Пока что мне удалось сделать (я не уверен, правильный ли это путь):
authorizationChecker.ts
export function authorizationChecker(connection: Connection): (action: Action, roles: any[]) => Promise<boolean> | boolean {
return async function innerAuthorizationChecker(action: Action, roles: string[]): Promise<any> {
try {
const grant = await KeycloakService.keycloak.getGrant(action.request, action.response);
action.request.auth = await KeycloakService.keycloak.grantManager.userInfo(grant.access_token);
return true;
} catch (e) {
console.log(e)
return false;
}
};
}
и чем я использую аннотацию @Authorized()
в контроллере:
@Authorized()
@JsonController('/users')
export class UserController {
}
Я использую почтальон для тестирования API. Я могу получить токен, и я могу сделать несколько запросов на моем API, прежде чем у меня появится ошибка аутентификации. Срок действия токена не установлен.