Настройка авторизации через OAUTH2 сервера https://oauth2.volmed.org.ru: различия между версиями
Перейти к навигации
Перейти к поиску
Misha (обсуждение | вклад) |
Misha (обсуждение | вклад) |
||
Строка 9: | Строка 9: | ||
$GLOBALS['jwt_key'] = 'sdklfwiomwefwepiojwepjowfmwfmwef'; // Строка с набором символов для шифрования JWT токена | $GLOBALS['jwt_key'] = 'sdklfwiomwefwepiojwepjowfmwfmwef'; // Строка с набором символов для шифрования JWT токена | ||
$GLOBALS['max_time'] = 3600 * 24 * 7; // Время жизни COOKIES, например, 7 суток | $GLOBALS['max_time'] = 3600 * 24 * 7; // Время жизни COOKIES, например, 7 суток | ||
$oauth2_url = 'https://oauth2.volmed.org.ru'; // URL сервиса авторизации | |||
$GLOBALS['oauth2_url'] = $oauth2_url; | |||
$redirect_uri = $http."://$_SERVER[HTTP_HOST]"; | |||
$GLOBALS['redirect_uri'] = $redirect_uri; | |||
</pre> | </pre> | ||
#Для работы с JWT токеном используем библиотеку https://github.com/firebase/php-jwt. Ее нужно установить в каталог class/jwt | #Для работы с JWT токеном используем библиотеку https://github.com/firebase/php-jwt. Ее нужно установить в каталог class/jwt | ||
==Формирование строки авторизации== | |||
Для перехода на страницу сервера авторизации, генерим следующий код | |||
<pre> | |||
$permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; | |||
$state = generate_string($permitted_chars, 20); // Функция, которая генерит 20 символов из строки $permitted_chars | |||
$_SESSION['state'] = $state; // Сохраняем этот код, что бы потом его проверить на правильность | |||
$url_data = [ | |||
'response_type' => 'code', | |||
'client_id' => $GLOBALS['id_resource'], | |||
'state' => $state, | |||
'redirect_uri' => $GLOBALS['redirect_uri'] | |||
]; | |||
$url = $GLOBALS['oauth2_url'] . '?' . http_build_query($url_data); // генерим строку перехода | |||
header('Location:' . $url); // Переходим на сервер авторизации | |||
</pre> | |||
После перехода на сервер авторизации, вводим Логин и Пароль. И если он правильный, то сервер возвращает на страницу редиректа |
Версия от 15:16, 6 мая 2025
Подготовительные операции
- Идем в БД oauth_db на сервере 172.16.130.31 и добавляем в таблицу oauth_clients
- client_id - Номер WEB интерфейса, который вы собираетесь подключить
- client_secret - Набор любых символов для шифрования
- Добавляем в настроечный файл сервиса следующие строки
$GLOBALS['id_resource'] = 7; // Номер WEB интерфейса $PassLength=5; //длина пароля $GLOBALS['jwt_key'] = 'sdklfwiomwefwepiojwepjowfmwfmwef'; // Строка с набором символов для шифрования JWT токена $GLOBALS['max_time'] = 3600 * 24 * 7; // Время жизни COOKIES, например, 7 суток $oauth2_url = 'https://oauth2.volmed.org.ru'; // URL сервиса авторизации $GLOBALS['oauth2_url'] = $oauth2_url; $redirect_uri = $http."://$_SERVER[HTTP_HOST]"; $GLOBALS['redirect_uri'] = $redirect_uri;
- Для работы с JWT токеном используем библиотеку https://github.com/firebase/php-jwt. Ее нужно установить в каталог class/jwt
Формирование строки авторизации
Для перехода на страницу сервера авторизации, генерим следующий код
$permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $state = generate_string($permitted_chars, 20); // Функция, которая генерит 20 символов из строки $permitted_chars $_SESSION['state'] = $state; // Сохраняем этот код, что бы потом его проверить на правильность $url_data = [ 'response_type' => 'code', 'client_id' => $GLOBALS['id_resource'], 'state' => $state, 'redirect_uri' => $GLOBALS['redirect_uri'] ]; $url = $GLOBALS['oauth2_url'] . '?' . http_build_query($url_data); // генерим строку перехода header('Location:' . $url); // Переходим на сервер авторизации
После перехода на сервер авторизации, вводим Логин и Пароль. И если он правильный, то сервер возвращает на страницу редиректа