Как прикрепить токен JWT в Slim 3 Response Header - PullRequest
0 голосов
/ 23 октября 2018

Я сейчас работаю над проектом SSO.Как и у Google, у нас есть account.domain.com в качестве сервера единого входа.И у нас есть три приложения, размещенные на трех разных серверах (application1.com, application2.com ,, application3.com,).

Когда пользователь захочет войти в систему из этих трех приложений, он будет перенаправлен на сервер единого входа.Если учетные данные, предоставленные пользователем, верны, это означает, что SSO-сервер генерирует токен доступа JWT.Теперь сгенерированный токен должен быть присоединен к заголовку ответа запрашиваемого пользователем приложения, после чего пользователь будет перенаправлен на запрошенное приложение вместе с «токеном авторизации: Bearer $».

В настоящее время у меня возникает проблема с подключениемсгенерированный токен для заголовка ответа.В настоящее время я использую платформу Slim 3 вместе с lcobucci / jwt для токена JWT.

Мой код:

$username = "Test";
$newResponse = $response->withHeader('Authorization' , "Bearer $token");
return $newResponse->withRedirect("http://application1.com/$username", 301); 

Когда я отлаживаю заголовок Response в accounts.domain.com, появляется заголовок авторизацииустановить.Но с другой стороны (application1.com) не получает заголовок авторизации.

Снимки экрана

Первоначальный запрос от application1.com Переадресация домена SSO для захвата Cookie Подтвердите сессию с помощью Grabbed Cookie и прикрепите прилагаемый заголовок аутентификации. Успешная аутентификация, но не получены заголовки авторизации.

Я сомневаюсь, что проблема заключается вКонфигурация сервера (apache2) в файле .htaccess (или) сама моя реализация неверна.

Руководство по исправлению этой ошибки.

Сведения о среде:

  • Сервер: Apache 2
  • Каркас: Slim 3
  • JWT: пакет lcobucci / jwt

1 Ответ

0 голосов
/ 23 октября 2018

Перенаправление в протоколе HTTP не поддерживает добавление каких-либо заголовков в целевое местоположение.По сути, это просто заголовок сам по себе, и он допускает только URL.

Он выглядит примерно так:

HTTP/1.1 307 Temporary Redirect
Location: http://application1.com

Когда вы добавляете свой заголовок авторизации, вы отправляете только этот заголовок обратноклиент:

HTTP/1.1 307 Temporary Redirect
Location: http://application1.com
Authorization: ...

Когда вы отправляете перенаправление ответа, а также устанавливаете какой-либо заголовок, например Authorization, браузер не будет пересылать этот заголовок на сайт, на который он теперь перенаправляет.Если вы абсолютно уверены в передаче какого-либо параметра на сайт, на который будет перенаправлен браузер, вам придется передать этот параметр в качестве параметра URL-запроса.

...