Настройка внешнего поставщика аутентификации
Чтобы работать с продуктом 2ГИС Про, конечные пользователи должны проходить аутентификацию. Программный комплекс 2ГИС не предоставляет готовый сервис аутентификации для установки в закрытом контуре. Поэтому вам нужно использовать собственного поставщика OpenID Connect (OIDC) для авторизации пользователей по технологии единого входа (SSO).
Аутентифицироваться и авторизоваться в 2ГИС Про могут пользователи, зарегистрированные в базе внешнего поставщика OIDC. Управление пользователями также осуществляется на стороне этого поставщика.
Настройте поставщика OIDC, выполнив следующие условия:
-
Определите обязательные утверждения (claims) о данных пользователя. Следующие данные гарантированно должны быть заполнены в ответе
user-info:sub— идентификатор пользователя.email— email пользователя.email_verified— флаг, указывающий на то, был ли email подтверждён пользователем.name— полное имя пользователя.phone_number— номер телефона пользователя.
-
Настройте области видимости (scopes), по которым можно получать заданные утверждения (claims). Стандартно используются следующие scopes:
openid— обязательный параметр, указывающий на использование OpenID Connect для аутентификации пользователя.email— email пользователя.profile— ссылка на профиль пользователя.phone— номер телефона пользователя.
-
Создайте клиента в вашем поставщике OIDC:
-
Настройте идентификатор (
client_id) и cекрет (client_secret) клиента. -
Укажите Callback URL и Logout URL для сервиса:
- Callback URL:
https://{application_host}/api/auth/code; - Logout URL:
https://{application_host}/api/auth/after_sign_out_openid.
- Callback URL:
-
Настройте работу клиента с заданными на предыдущем шаге scopes.
-
-
Настройте передачу ролей для авторизации.
Сервисы, использующие поставщика OIDC (
authProvider.schema: Oidc), проверяют права доступа на основе ролей, переданных вid_token. Еслиid_tokenне содержит утверждение (claim) с ролями, пользователь не сможет получить доступ к таким сервисам даже после авторизации.Чтобы авторизация работала корректно, настройте вашего поставщика OIDC:
- Назначьте пользователям нужные роли.
- Настройте маппинг ролей в отдельный claim токена (например,
roles). - Убедитесь, что claim размещён на верхнем уровне JSON (не во вложенной структуре).
- Укажите тип значения claim — массив строк.
- Убедитесь, что claim включён в
id_token.
Пример
id_token:{
"sub": "123456",
"name": "Иван Иванов",
"roles": ["admin", "editor"],
"iss": "https://idp.example.com",
"aud": "client_id",
"exp": 1710000000
}Если поставщик по умолчанию формирует вложенные claims, настройте преобразование в плоский claim.