Как я могу надежно хранить represh_token на фронте при использовании Laravel/Passport?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу надежно хранить represh_token на фронте при использовании Laravel/Passport?

Сообщение Anonymous »

Я работаю над OAuth 2.0.
У меня есть два локальных сервера:

[*]https://sso-idespe.test.test (это основной сервер для входа в систему)
/> < /ul>
Я реализовал «грант кода авторизации с помощью PKCE». /> Ниже приведен код на cookie-1.test для перенаправления пользователя на сервер ssO-Deverify.test :

Код: Выделить всё

async function onLogInClick(): Promise {
const state = // some function
const codeVerifier = // some function
const codeChallenge = // some function

const params = new URLSearchParams({
client_id: SSO_CLIENT_ID,
redirect_uri: 'https://cookie-1.test:8080/auth/callback',
response_type: 'code',
scope: '',
state: state,
code_challenge: codeChallenge,
code_challenge_method: 'S256'
});

const authorizationUrl = `${SSO_HOST}/oauth/authorize?${params.toString()}`;

window.location.href = authorizationUrl;
}
Затем, в обратном вызове на cookie-1.test , я выполняю следующий код:

Код: Выделить всё

async function onDOMLoaded() {
// ... some logic before
const tokenPayload = new URLSearchParams({
grant_type: 'authorization_code',
client_id: SSO_CLIENT_ID,
redirect_uri: 'https://cookie-1.test:8080/auth/callback',
code_verifier: codeVerifier || '',
code: code || ''
});

const tokenResponse = await axios.post(
`${SSO_HOST}/oauth/token`,
tokenPayload.toString(),
{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
);

console.log('Token response:', tokenResponse.data);
}
В «Ответ токена:« Журнал я получаю доступ к доступу и обновлять токены в параметрах тела. Однако в моем случае я получаю эти данные в приложении Frontend, так как я могу их сохранить? Чтобы достичь этого, я изменил стандартный поток: < /p>

Я добавил еще одну конечную точку /аутентификацию < /code> on ssO-EdIendify.test < /strong>. Его реализация заключается в следующем: < /li>
< /ol>

Код: Выделить всё

public function auth(Request $request) {
$response = Http::asForm()->post(config('services.sso.host').'/oauth/token', [
'grant_type' => 'authorization_code',
'client_id' => $request->get('client_id'),
'redirect_uri' => $request->get('redirect_uri'),
'code' => $request->get('code'),
'code_verifier' => $request->get('code_verifier'),
]);
}
Теперь, на обратном вызове на cookie-1.test [/b], вместо того, чтобы делать запрос непосредственно на/oauth/token , я делаю запрос на/authenticate. ssO-EdIdinify.test , но это не сработало из-за ошибки токена CSRF. Запрос/авторизовать , сделанный cookie-1.test и/oauth/tokens теперь спрашивает SSO-EdIendify.com с тем же кодом, предоставленным для cookie-1.test.
Я не хочу исследовать или спрашивать, как отключить эту защиту, так как это может повысить проблемы с безопасностью. /> Laravel/Passport предназначен для использования веб-приложениями с рендерингом на стороне клиента?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ravel-pass
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»