Аутентификация OIDC
«1С:Шина» может использовать аутентификацию OIDC для входа пользователей в приложение.
OIDC — это протокол аутентификации, который строится на основе OAuth2 и позволяет клиентским приложениям проверять идентичность пользователей на основе аутентификации, выполненной авторизованным сервером. OIDC расширяет возможности OAuth2, добавляя слой аутентификации и предоставляя информацию о пользователе.
Чтобы подключить сервис аутентификации OIDC, выполните следующие действия:
-
В панели управления «Шины» перейдите на страницу добавления сервисов внешних учетных записей и нажмите + Добавить сервис.
-
В списке сервисов выберите OIDC. В открывшемся окне скопируйте
<Идентификатор сервиса>
, он понадобится для настройки клиента. -
Зарегистрируйте свое приложение в сервисе OIDC. Укажите следующие параметры:
OIDC App name = НазваниеПриложения
;Homepage URL = URLПриложения
;Callback URL = https://{ИмяХоста}/auth/v2/client/oauth2/code/<Идентификатор сервиса>
, напримерhttp://localhost:9090/auth/v2/client/oauth2/code/0197548a-78df-74bf-b9f7-b87b3bdef16b
.
-
Получите идентификатор клиента Client id и секрет клиента Client secret. Они используются для аутентификации приложения во внешней системе.
-
Вернитесь в форму добавления внешнего сервиса OIDC панели управления «Шины». Заполните следующие поля:
- Название — название добавляемого сервиса.
- Идентификатор сервиса —
registration_id
, заполняется автоматически. - Идентификатор информационной системы —
client_id
, идентификатор клиента. - Пароль информационной системы —
client_secret
, секрет клиента. - Метод аутентификации информационной системы —
client_authentication_method
. Выберите один из вариантов:- В HTTP-заголовке (по умолчанию) —
client_secret_basic
, пара client_id/client_secret передается через HTTP-заголовок Authorization; - В теле HTTP-запроса —
client_secret_post
, пара client_id/client_secret передается в теле запроса POST; - Без аутентификации —
none
, аутентификация не используется.
- В HTTP-заголовке (по умолчанию) —
- Тип ответа от сервера —
grant_type
, тип ответа, который ожидает клиент аутентификации. Выберите один из вариантов:- Код авторизации (по умолчанию) —
authorization_code
, клиент ожидает код авторизации для дальнейшего обмена на токен; - Токен для обновления —
refresh_token
, клиент ожидает получить токен после отправления ранее полученного токена для обновления; - Реквизиты —
client_credentials
, клиент ожидает получить токен после отправления своих данных; - Неявный —
implicit
, не рекомендуется для использования, так как считается устаревшим и небезопасным.
- Код авторизации (по умолчанию) —
- Адрес сервера авторизации —
authorization_uri
, URI сервера аутентификации, на который происходит перенаправление. - Адрес получения токена системой —
token_uri
, URI получения токена из внешней системы. - Адрес получения информации о пользователе —
user_info_uri
, URI получения данных о пользователе из внешней системы. - Запрашиваемые данные о пользователе (через запятую) —
scope
, описание разрешений, которые требуются клиенту. Должен содержать значение openid. - Имя атрибута в информации о пользователе, содержащее имя пользователя —
user_name_attribute_name
, имя атрибута в данных о пользователе, которое содержит имя пользователя (по умолчаниюid
). - Метод аутентификации для получения информации о пользователе — выберите один из вариантов:
- В HTTP-заголовке,
- В теле HTTP-запроса,
- Без аутентификации.
- Адрес получения данных о сертификатах для проверки подписи —
jwk_set_uri
, URI получения данных о сертификатах для пр оверки подписи JWT-токена. - Владелец сертификата подписи —
issuer_uri
, URI владельца сертификата подписи.
-
Нажмите кнопку Добавить, а затем Сохранить.
При входе в приложение пользователь увидит кнопку аутентификации через подключенный внешний сервис, если выполнены следующие условия:
- сервис подключен к списку пользователей приложения,
- данный способ входа не скрыт на форме аутентификации,
- способ входа OIDC разрешен для приложения.
Если сервис подключен к списку пользователей приложения, то пользователь может добавить себе учетную запись, выполнив вход в сервис.