Перейти к основному содержимому

Аутентификация OIDC

«1С:Шина» может использовать аутентификацию OIDC для входа пользователей в приложение.

OIDC — это протокол аутентификации, который строится на основе OAuth2 и позволяет клиентским приложениям проверять идентичность пользователей на основе аутентификации, выполненной авторизованным сервером. OIDC расширяет возможности OAuth2, добавляя слой аутентификации и предоставляя информацию о пользователе.

Чтобы подключить сервис аутентификации OIDC, выполните следующие действия:

  1. В панели управления «Шины» перейдите на страницу добавления сервисов внешних учетных записей и нажмите + Добавить сервис.

  2. В списке сервисов выберите OIDC. В открывшемся окне скопируйте <Идентификатор сервиса>, он понадобится для настройки клиента.

    Скопируйте идентификатор сервиса

  3. Зарегистрируйте свое приложение в сервисе 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.
  4. Получите идентификатор клиента Client id и секрет клиента Client secret. Они используются для аутентификации приложения во внешней системе.

  5. Вернитесь в форму добавления внешнего сервиса 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, аутентификация не используется.
    • Тип ответа от сервера — 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 владельца сертификата подписи.
  6. Нажмите кнопку Добавить, а затем Сохранить.

При входе в приложение пользователь увидит кнопку аутентификации через подключенный внешний сервис, если выполнены следующие условия:

Если сервис подключен к списку пользователей приложения, то пользователь может добавить себе учетную запись, выполнив вход в сервис.