Настройка OIDC на примере Keycloak
Автор Mikhail Nikitin, Last modified by Mariya Vorozhba на 23 февраля 2024 03:26 AM

Настройка OIDC на примере Keycloak

Для корректной работы нам понадобится:

  • Установленные и настроенные продукты Indeed-Id:
  • Indeed AM Server версии 8.1.5 и выше;
  • Indeed AM Management Console;
  • Indeed AM Log Server;
  • Необходимые провайдеры для используемых средств аутентификации;
  • Расширение Indeed AM IDP;
  • Установленный и настроенный Keycloak.



  1. Заходим через браузер в master console Keycloak.
  2. В левом меню выбираем Identity providers

  3. В открывшемся окне нажимаем кнопку Add provider, в выпадающем списке выбираем OpenID Connect v1.0

  4. Задаем имя провайдера в поле Alias

  5. В OpenID Connect settings ставим переключатель Use discovery endpoint в положение ON.

  6. В строку Discovery endpoint ставим значение: https://dns_имя_машины_с_idp/am/idp/.well-known/openid-configuration

  7. Если сервер Idp настроен корректно, то подгрузятся настройки с indeed idp. Проверить это можно нажав на Show metadata, должны открыться загруженные настройки.

  8. Придумаем и укажем в поле Client ID уникальный идентификатор

  9. Придумаем и укажем в поле Client Secret клиентский секрет

  10. После этого нажимаем Add.
  11. Если требуется, чтобы у пользователя была возможность завершить сессию при выходе, нажимаем Advanced и ставим  переключатель Backchannel logout  в положение ON

  12. Нажимаем Save.
  13. На машине с Indeed Idp переходим в файл 

    C:\inetpub\wwwroot\am\idp\app-settings.json

  14. Ищем в нем LoginFormats
  15. Копируем первый блок, например:

          {
            "ServiceProvider": "urn:indeedid:emc",
            "InLoginFormat": "Name",
            "OutLoginFormat": "SamCompatibleName"
          },

  16. Вставляем его ниже, меняем значение параметра ServiceProvider на Client ID, который мы добавляли в Keycloak, у нас это keycloak, меняем значение параметра OutLoginFormat на PrincipalName

    Должно получиться так:

          {
            "ServiceProvider": "keycloak",
            "InLoginFormat": "Name",
            "OutLoginFormat": "PrincipalName"
          },

  17. Далее ищем блок  "Clients":
  18. Копируем блок с примером конфигурации:

          {
            "ClientId": "example-client",
            "ClientSecret": "secret_secret_secret",
            "DisplayName": "Example client application",
            "Permissions": [
              "ept:authorization",
              "ept:device",
              "ept:introspection",
              "ept:logout",
              "ept:revocation",
              "ept:token",
              "gt:authorization_code",
              "gt:client_credentials",
              "gt:urn:ietf:params:oauth:grant-type:device_code",
              "gt:implicit",
              "gt:password",
              "gt:refresh_token",
              "rst:code",
              "rst:code id_token",
              "rst:code id_token token",
              "rst:code token",
              "rst:id_token",
              "rst:id_token token",
              "rst:none",
              "rst:token",
              "scp:address",
              "scp:email",
              "scp:phone",
              "scp:profile",
              "scp:roles"
            ],
            "PostLogoutRedirectUris": [
              "https://localhost:5003/signout-callback-oidc"
            ],
            "RedirectUris": [
              "https://localhost:5003/signin-oidc"
            ],
            "Requirements": [
              "ft:pkce"
            ]
          }

  19. Вставляем его ниже, не забываем поставить между блоками запятую.

    значение ClientId меняем на keycloak

    значение ClientSecret меняем на Client Secret, который вводили в Keycloak,

    значение "PostLogoutRedirectUris"  меняем на "https://dns_имя_машины_с_idp/am/idp/connect/logout"

    значение "RedirectUris"  меняем на значение Redirect URI из Keycloak "https://dns_имя_машины_с_keycloak/realms/master/broker/indeed_oidc/endpoint"

    значение "Requirements" оставляем пустым.

    Должно получиться так:

           {
            "ClientId": "keycloak",
            "ClientSecret": "keycloaksecret",
            "DisplayName": "Example client application",
            "Permissions": [
              "ept:authorization",
              "ept:device",
              "ept:introspection",
              "ept:logout",
              "ept:revocation",
              "ept:token",
              "gt:authorization_code",
              "gt:client_credentials",
              "gt:urn:ietf:params:oauth:grant-type:device_code",
              "gt:implicit",
              "gt:password",
              "gt:refresh_token",
              "rst:code",
              "rst:code id_token",
              "rst:code id_token token",
              "rst:code token",
              "rst:id_token",
              "rst:id_token token",
              "rst:none",
              "rst:token",
              "scp:address",
              "scp:email",
              "scp:phone",
              "scp:profile",
              "scp:roles"
            ],
            "PostLogoutRedirectUris": [
              "https://server01.test.local/am/idp/connect/logout"
            ],
            "RedirectUris": [
              "https://key.test.local:8443/realms/master/broker/oidc/endpoint"
            ],
            "Requirements": [
              
            ]
          }

    После этого сохраняем файл app-settings.json.

  20. Открываем IISПулы приложений, выбираем IndeedAM.IDP, Перезапуск.

    Перезапускаем пул.

  21. Пробуем подключиться к Keycloak, в окне логина появится дополнительная кнопка с названием указанного в Keycloak Alias, в нашем случае это indeed_oidc. Нажимаем ее без ввода логина и пароля.

  22. Происходит перенаправление на страницу Indeed Idp, вводим имя пользователя

  23. Выбираем способ аутентификации

  24. Вводим, в данном случае passcode и успешно входим в Keycloak.

(4 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: