понимание Keycloak с Express - PullRequest
       14

понимание Keycloak с Express

0 голосов
/ 14 апреля 2020

Я пытаюсь защитить свой API в Express с помощью Keycloak. Я использую Express исключительно как бэкэнд (защищенный ресурс в терминологии OAuth). Логин, выход из системы, хранение токена обрабатываются в одностраничном клиенте React. Я следовал руководству и вроде как заставил его работать, используя этот код:

    var memoryStore = new session.MemoryStore();
    var keycloak = new Keycloak({ store: memoryStore });

    // Configure session 
    app.use(session({
      secret: 'mySecret',
      resave: false,
      saveUninitialized: true,
      store: memoryStore
    }));

    app.use(keycloak.middleware());

    app.use('/contactReasons', keycloak.protect(), contactReasonRouter); // my protected resource

Мне неясны два момента:

  1. Нужно ли мне сеанс, чтобы защитить мой ресурс? Я бы хотел избавиться от него или хотя бы понять, что он делает и зачем он нужен.
  2. Как изменить код ответа HTTP, если пользователь отправляет неверный токен или его вообще нет? Прямо сейчас он отправляет редирект 302, который не подходит для клиента SPA:
curl -i http://localhost:3000/contactReasons -H "Authorization: Bearer invalidToken"
HTTP/1.1 302 Found
...
Found. Redirecting to http://localhost:9000/auth/realms/FoobarRealm/protocol/openid-connect/auth?client_id=Foobar-client&state=54654-83d-4282-b3e3-623aef355f91&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2FcontactReasons%3Fauth_callback%3D1&scope=openid&response_type=code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...