В настоящее время я работаю над функцией автологина. Идея заключается в том, что пользователи могут входить в партнерские приложения с помощью одной учетной записи. Для этого мы используем заголовок авторизации. Я попробовал несколько разных способов реализовать эту функцию, но без особой удачи.
Короче говоря:
Мне нужно отправить заголовок авторизации, и я ожидаю заголовок ответа 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}");
Приведенный выше код только что сказал, что отсутствует заголовок аутентификации, но он перенаправил.
Любой ввод или указатели будут высоко оценены