Avanpost FAM/MFA+ : Настройка MFA/SSO для Avanpost IDM

Общие сведения

В статье описывается настройка двухфакторной аутентификации (2FA), многофакторной аутентификации (MFA) и Single-Sign On для системы централизованного управления учетными записями и правами доступа в информационных системах Avanpost IDM. Avanpost IDM позволяет осуществлять автоматическое управление учетными записями на основе кадровых событий, централизованное управление правами доступа по ролевой модели, обработку заявок на изменение прав доступа, управление паролями пользователей, аудит прав доступа, поиск и устранение несоответствий в учетных записях. В инструкции описывается настройка 2FA/MFA/SSO с использованием механизма OpenID Connect. При интеграции поддерживается функциональность SSO (Signle Sign-On): если пользователь прошёл аутентификацию в веб-приложение в соответствии с настроенным сценарием, то система не будет запрашивать повторного подтверждения аутентификации при аутентификации в другое веб-приложение. Также поддерживается функциональность SLO (Single Logout): пользователь автоматически выходит из всех приложений, если разлогинился в одном из них.

Настройка на стороне Avanpost FAM

Настройка приложения на стороне Avanpost FAM осуществляется следующим образом: 

  1. Открыть административную консоль Avanpost FAM Server и зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" режима "Приложения".
  2. На этапе "Основные настройки" требуется задать следующие параметры (параметры, доступные для настройки в OpenID Connect-приложениях, подробно описаны в разделе Управление приложениями и Управление OIDC-приложениями):
    ПараметрЗначение
    НаименованиеВвести наименование (в данном примере IDM-IDP).
    ТипOAuth/OpenID Connect
    Показывать приложение пользователямВыключить чекбокс (рекомендуется)
  3. На этапе "Настройки интеграции" заполнить указанные поля в соответствии с таблицей:
    ПараметрЗначение
    SecretЗадать произвольный секрет (конфиденциальный ключ, который используется для аутентификации клиентского приложения).
    Redirect URIshttp://usr.avanpost.local/
    Base URLhttp://usr.avanpost.local/
    Logouthttp://usr.avanpost.local/api/v1/externallogout
  4. На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов (особенности настройки шага описаны в разделе Управление приложениями и Управление OIDC-приложениями).
  5. На этапе "Завершение" следует сохранить приложение, делая его активным сразу после создания.

    Значения параметров, которые не были упомянуты в данной инструкции, допускается оставить по умолчанию (в соответствии с автоматической настройкой, которая выполняется после создания OIDC-приложения в Avanpost FAM).

  6. Создать группу (если таковая группа на была настроена ранее), пользователи которой будет иметь доступ к Avanpost IDM. Для этого необходимо нажать кнопку "Добавить группу" в режиме "Группы" и в открывшейся вкладке ввести запрашиваемые параметры (более подробно в разделе Добавление новых групп).
  7. Добавить в группу пользователей, которые будут аутентифицироваться в настроенных приложениях. Ручное добавление пользователей администратором реализуется в профиле группы (более подробно о способах добавления пользователей описано в разделе Управление пользователями).

  8. Назначить ранее созданное OIDC-приложение в данную группу. Для этого в профиле группы во вкладке "Приложения" созданной группы установить переключатель в положение "Активно" () напротив созданного приложения.

Настройка на стороне Avanpost IDM

Настройка приложения на стороне Avanpost IDM осуществляется следующим образом: 

  1. Перейти к конфигурационному файлу Avanpost IDM iga.config, содержащему основные технические параметры, необходимые для запуска и аутентификации при помощи Avanpost IDM. Сервисы определяют местоположение файла конфигурации, используя значение переменной окружения IGA_CFG (если переменная окружения IGA_CFG не задана, сервисы выполняют поиск файла конфигурации iga.config в рабочей директории). 

    Пример параметра IGA_CFG :

    IGA_CFG=/opt/avanpost/config/iga.config
  2. В административной консоли Avanpost FAM перейти в созданное приложение OIDC-приложение из режима "Приложения". 
  3. В профиле созданного приложения во вкладке "Настройки" скопировать значения параметров Client ID и Redirect URIs. 
  4. Перенести скопированные параметры в соответствии с таблицей: 
    Параметр в Avanpost FAMПараметр в конфигурационном файле iga.config 
    Client IDCallBackAddress в разделе idp
    Redirect URIsId в разделе idp
    Пример фрагмента конфигурационного файла Avanpost IDM
    "idp": {
          "DiscoveryUrl": "",
          "Client": {
            "CallBackAddress": "http://usr.avanpost.local",
            "Id": "00c0000c-0e0e0-0e0e0-0e0e0-110cfc93913a",
            "Secret": "SomeStrongSecret300"
             }, 
  5. Сохранить изменения и убедиться в том, что при аутентификации посредством Avanpost FAM пользователь, состоящий в соответствующей группе (для которой был настроен доступ в процессе настройки на стороне Avanpost FAM), получает доступ к Avanpost IDM.

Приложение А. Пример конфигурационного файла Avanpost FAM

Для подробной информации о настройке конфигурационного файла следует обратиться к документации на Avanpost IDM (Identity Management)

{
    "licensePath" : "/opt/avanpost/config/license.xml",
    "connectorsFolder":"/opt/avanpost/connectors",
    "serverKey": "/opt/avanpost/config/key",
 
    "logLevel":"Warning",
 
    "auth": {
      "rootUser":"LOCAL\\administrator",
      "defaultRealm": "LOCAL",
      "realms": {
        "LOCAL": {
            "type": "LDAP",
            "host": "127.0.0.1",
            "bindDN": "cn=admin,dc=avanpost,dc=local",
            "password": "Avanp0st",
            "usersBase": "dc=avanpost,dc=local",
            "userNameAttribute": "uid"
        }
      }
    },
	
    "serviceUrl": "http://idm.avanpost.local",
    "connectorCommandTimeout": "120",
    "connectorCertificateSuppressValidation": "true",
    "rpcMessageMaxSizeBytes": 4194304,
    "rpcMessageChunkSize": 3000,
    "idmServerCertificatePath": "",
    "idmServerCertificatePassword": "",

    "general": {
      "ResourceId": 1,
      "EnableDocumentCreateValidators": true,
    },
    "database": {
      "connectionString": "host=127.0.0.1;database=idm;username=avanpost;password=Avanp0st",
      "providerName": "Postgres",
      "schemaName": "public"
    },
    "smtpclient": {
      "host": "localhost",
      "username": "Guest@avanpost.ru",
      "password": "Guest"
    },
    "enabledDefaultListeners": {
        "OnHire": false,
        "OnDismiss": false,
        "OnAvailable": false,
        "OnUnavailable": false,
        "OnEmployeeMoved": false,
		"OnEmployeeChanged": true;
        "OnUnitEvent": false
    },
	"dataIntegrity": {
    	"enabled": true,
    	"initializing": true
	},
    "kerberos": {
      "KeytabPath": "",
      "DisableAdminHost": false,
      "Aliases": {
        "domainname1": "aliasname1",
        "domainname2": "aliasname2"
      }
    },
   "idp": {
      "DiscoveryUrl": "",
      "Client": {
        "CallBackAddress": "http://usr.avanpost.local",
        "Id": "00c0000c-0e0e0-0e0e0-0e0e0-110cfc93913a",
        "Secret": "SomeStrongSecret300"
      },
      "Admin": {
        "CallBackAddress": "http://adm.avanpost.local",
        "Id": "",
        "Secret": ""
      },
      "BackendClient": {
        "Id": "",
        "Secret": "",
        "UserName": "",
        "Password": ""
      },
      "NameClaimType": "preferred_username",
      "ValidateEndpoints": "true"
    },
    "TargetUrls": {
      "Admin": "http://adm.avanpost.local",
      "User": "http://wf.avanpost.local",
      "Registration": "http://reg.avanpost.local"
    },
	"experimental": {
    	"enableResourceSessions": true,
    	"enabledRoleDynamicPolicyClustering": true
	},
	"enableRequestLog": false,
	"enableResourceLog": false,
	"workers": {
		"hrEvents": 12,
		"hrEventsBatchSize": 100000,
		"role": 12,
		"accountsMaxActive": 12,
		"resourceLoaders": 1,
		"resourceAccountTasks": 12,
		"resourcesMaxActive": 12,
		"enableRolePropertyUpdateObserver": false
	},
	"eventsQueue": {
	    "MaxEventsPerSecond": 20000,
		"MaxActiveProcesses": 1000,
		"ActiveProcessDuration": 30
	}
  }



Обсуждение