Настройка авторизации через OAUTH2 сервера https://oauth2.volmed.org.ru: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Подготовительные операции)
(Формирование строки авторизации)
Строка 26: Строка 26:
 
   'client_id' => $GLOBALS['id_resource'],
 
   'client_id' => $GLOBALS['id_resource'],
 
   'state' => $state,
 
   'state' => $state,
   'redirect_uri' => $GLOBALS['redirect_uri']
+
   'redirect_uri' => $GLOBALS['redirect_uri'] // Должен выглядеть как http://sait. volmed.org.ru
 
];
 
];
 
$url = $GLOBALS['oauth2_url'] . '?' . http_build_query($url_data); // генерим строку перехода
 
$url = $GLOBALS['oauth2_url'] . '?' . http_build_query($url_data); // генерим строку перехода

Версия 15:52, 6 мая 2025

Подготовительные операции

  1. Идем в БД oauth_db на сервере 172.16.130.31 и добавляем в таблицу oauth_clients
    1. client_id - Номер WEB интерфейса, который вы собираетесь подключить
    2. client_secret - Набор любых символов для шифрования
  2. Добавляем в настроечный файл сервиса следующие строки
$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;
  1. Для работы с 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']  // Должен выглядеть как http://sait. volmed.org.ru
];
$url = $GLOBALS['oauth2_url'] . '?' . http_build_query($url_data); // генерим строку перехода
header('Location:' . $url); // Переходим на сервер авторизации

После перехода на сервер авторизации, вводим Логин и Пароль. И если он правильный, то сервер возвращает на страницу редиректа