Сервер 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 и новые параметры и настройки сервера.

  • No labels