Сервер WNAM QoW поддерживает аутентификацию пользователей при помощи oauth2.
В проекте использована платформа SpringSecurity, максимально задействованы стандартные для нее названия параметров и настроек.
Чтобы позволить пользователям авторизоваться при помощи сторонних серверов, нужно задать ряд параметров, как на стороне QoW, так и на стороне сервера аутентификации/авторизации.
Типовые настройки на примере стенда QoW (https://dev.wifisensor.pro/) с авторизацией при помощи YandexId
При добавлении в настройки QoW провайдера oauth2-авторизации на странице логина появятся ссылки на сконфигурированные серверы для входа при помощи SSO (single sign on).
На стороне сервера аутентификации настроено приложение, для которого заданы корректные URL-ы и разрешен доступ к email клиента
Сервер Yandex, выдаст приложению ClientId и Client Secret для аутентификации самого приложения (сервер аутентификации должен знать, кто пересылает к нему пользователя для авторизации).
Также нужно задать URL-ы на сервере QoW, которые будут использоваться в процессе SSO при обмене данными между серверами и перенаправлении браузера пользователя.
- RedirectURI: https://dev.wifisensor.pro/login/oauth2/code/yandex здесь https://dev.wifisensor.pro - адрес хоста сервера QoW, часть пути после "/code/" с текстом "yandex" - идентификатор провайдера SSO (Т.е. для локально работающего сервера значение параметра выглядит как http://127.0.0.1:8080/login/oauth2/code/yandex);
- Suggest Hostname: адрес, куда пользователь будет перенаправлен после успешной или неудачной авторизации;
Со стороны QoW нужно указать соответствующие параметры провайдера SSO (в файле application.properties).
- Идентификатор провайдера (spring.security.oauth2.client.registration.yandex.provider=yandex)
- ClientId приложения, выданный сервером аутентификации (spring.security.oauth2.client.registration.yandex.client-id=client_id_configured_on_authorization_server)
- Client Secret приложения, выданный сервером аутентификации (spring.security.oauth2.client.registration.yandex.client-secret=client_secret_configured_on_authorization_server)
- URL для перенаправления пользователя SSO в процессе авторизации, совпадающий с настройкой на стороне приложения YandexId (spring.security.oauth2.client.registration.yandex.redirect-uri=https://dev.wifisensor.pro/login/oauth2/code/yandex)
- Тип oauth2 flow, поддерживаемый в процессе SSO QoW (константа, требует соответствующего кода, модификации сейчас не подлежит (spring.security.oauth2.client.registration.yandex.authorization-grant-type=authorization_code)
- Название SSO провайдера, отображаемое на странице логина (spring.security.oauth2.client.registration.yandex.client-name=Yandex)
- Опциональный параметр, обычно email пользователя входит в набор данных пользователя, который oauth-сервер отдает приложениям (
##scope is optional - we use email to identify QoW user
##spring.security.oauth2.client.registration.yandex.scope=email ) - URL сервера аутентификации/авторизации (spring.security.oauth2.client.provider.yandex.authorization-uri=https://oauth.yandex.ru/authorize)
- URL сервера аутентификации для получения токенов доступа (spring.security.oauth2.client.provider.yandex.token-uri=https://oauth.yandex.ru/token)
- Сервер QoW при попытке найти "своего" настроенного пользователя в собственной БД может использовать login или email пользователя QoW, можно указать возвращаемый атрибут oauth-пользователя для идентификации (spring.security.oauth2.client.provider.yandex.user-name-attribute=default_email)
- URL сервера аутентификации для получения данных пользователя (spring.security.oauth2.client.provider.yandex.user-info-uri=https://login.yandex.ru/info)
Код сервера QoW постоянно и активно дорабатывается, перечисленные параметры актуальны на ноябрь 2025, возможно добавится поддержка новых конфигураций SSO и новые параметры и настройки сервера.

