Как установить заголовки аутентификации для входа клиента на другой сайт? - PullRequest
0 голосов
/ 10 июля 2019

В настоящее время я работаю над функцией автологина. Идея заключается в том, что пользователи могут входить в партнерские приложения с помощью одной учетной записи. Для этого мы используем заголовок авторизации. Я попробовал несколько разных способов реализовать эту функцию, но без особой удачи.

Короче говоря: Мне нужно отправить заголовок авторизации, и я ожидаю заголовок ответа set-cookie. Все идет хорошо, когда я делаю этот звонок в почтальоне, но не когда я делаю этот звонок, как пользователь сделал бы в браузере. Мне нужно чтобы клиент вошел в систему

Это то, что я пробовал до сих пор:

$.ajax({
  url: authUrl,
  type: 'get',
  beforeSend: function (xhr) {
    xhr.setRequestHeader('Authorization', 'Bearer ' + jwt);
    xhr.withCredentials = true;
    xhr.crossDomain = true;
  },
  success: function (response, status, xhr) {
    if (xhr.status !== 200) {
      //Some error handling
      return;
    }
    window.open(form.attr('action'));
  });

Приведенный выше код не устанавливает cookie и не имеет заголовка ответа Set-Cookie. Предположительно из-за соображений безопасности.

//With PHP + Guzzle
$jar = new CookieJar();
$client = new Client();
$response = $client->get($qlikSense->getEndpoint(), [
  'headers' => ['Authorization' => "Bearer {$jwt}"],
  'cookies' => $jar,
]);

foreach ($jar->toArray() as $cookie) {
  setcookie($cookie['Name'], $cookie['Value'], 0, $cookie['Path'],$domain, false, false);
}

Я попытался сделать вызов curl / guzzle и получить оттуда заголовок set-cookie. Это не сработало так же хорошо и из-за (очевидных) угроз безопасности.

Моя последняя попытка была следующей:

header("Accept: */*");
header("Authorization: Bearer {$jwt}");
header("location: {$domain}");

Приведенный выше код только что сказал, что отсутствует заголовок аутентификации, но он перенаправил.

Любой ввод или указатели будут высоко оценены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...