Внедрить подключение 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, прежде чем у меня появится ошибка аутентификации. Срок действия токена не установлен.

0 ответов

Другие вопросы по тегам