Разработка шаблона Enterprise SSO - Avanpost FAM/MFA+

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

Avanpost FAM обеспечивает функциональность аутентификации посредством механизма перехвата окон в десктопные приложения. Данный механизм осуществляется компонентом Avanpost FAM Agent, устанавливаемым на рабочее место пользователя. Для корректного взаимодействия Avanpost FAM Agent с окном десктопного приложения требуется разработать шаблон аутентификации Enterprise SSO-приложения.

Шаблон приложения описывается в виде JSON-блока, который содержит в себе:

  • Коллекцию параметров, определяющих признаки перехвата окон десктопного приложения (коллекция grab);
  • Последовательный набор команд для заполнения и сабмита формы аутентификации десктоного приложения (коллекция commands).

Структура шаблона в десктопном приложении

В секции настройки перехвата окон указываются следующие параметры:

  • windowClassName – имя класса окна (Window Form Class Name).
  • windowName– наименование окна приложения, в котором задаются данные аутентификации пользователя.
  • processName – наименование процесса операционной системы, в рамках которого создается окно в котором указываются данные аутентификации пользователя.

Для выполнения действий, предусмотренных окном управляемого приложения, используется механизм эмуляции нажатий виртуальной клавиатуры. Допустимый набор команд для типов шаблонов описан в разделе Допустимые коды клавиш для эмуляции нажатий .

Для поставки данных в окно управляемого приложения (например для аутентификации - логина, пароля или домена) используются переменные окружения, описанные в разделе Переменные окружения.

JSON-шаблон, настраиваемый для приложения, может содержать в себе 2 вида шаблонов:

Примечание

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

  1. Шаблон аутентификации пользователей.
  2. Шаблон смены пароля пользователя. 

Поддерживается определение нескольких шаблонов одного типа. Каждое определение шаблона содержит своё описание настроек перехвата окна и набора команд.

Пример определения шаблонов аутентификации и смены пароля для десктопного Windows-приложения:

{
  "authenticateTemplates": [
    {
      "commands": [
        {
          "commandType": "Sleep",
          "sleepTime": 100
        },
        {
          "commandType": "TextEntry",
          "textMessage": "$user"
        },
        {
          "commandType": "KeyPress",
          "code1": "TAB"
        },
        {
          "commandType": "TextEntry",
          "textMessage": "$password"
        },
        {
          "commandType": "KeyPress",
          "code1": "RETURN"
        }
      ],
      "grab": [
        {
          "windowName": "Login",
          "processName": "mockauth"          
        },
        {
          "windowName": "Login2",
          "processName": "mockauth",
          "windowClassName": "SomeWindowClassNameIfItNeed"
        }
      ]
    }
  ],
  "changePasswordTemplates": [
    {
      "commands": [
        {
          "commandType": "Sleep",
          "sleepTime": 100
        },
        {
          "commandType": "TextEntry",
          "textMessage": "$user"
        },
        {
          "commandType": "KeyPress",
          "code1": "TAB"
        },
        {
          "commandType": "TextEntry",
          "textMessage": "$password"
        },
        {
          "commandType": "KeyPress",
          "code1": "TAB"
        },
        {
          "commandType": "TextEntry",
          "TextMessage": "$newpassword"
        },
        {
          "commandType": "KeyPress",
          "code1": "RETURN"
        }
      ],
      "grab": [
        {
          "windowName": "ChangePassword",
          "processName": "mockauth"
        }
      ]
    }
  ]
}


Команды шаблона аутентификации и смены пароля

В шаблоне аутентификации и смены пароля могут быть использованы следующие команды:

Таблица 1

Тип команды (значение commandType)

Аргументы команды

Пример команды в составе JSON-шаблона

Назначение

Sleep

SleepTime – время в мс, в течение которого Агент не выполняет никаких действий (пауза).

{

"commandType": "Sleep",

"SleepTime": 100

}, 

Пауза. Может потребоваться для ожидания загрузки окна/полей приложения.

TextEntry

TextMessage – сообщение, которое будет введено в поле, в котором находится указатель.

{

"commandType": "TextEntry",

"TextMessage": "$user"

},

Команда ввода текста в поле, в котором установлен фокус (курсор).

KeyPress

Code1 – код клавиши, которую требуется нажать.

{

"commandType": "KeyPress",

"Code1": "TAB"               

},

Команда выполнения нажатия клавиши (последовательно KeyDown+KeyUp).

KeyDown

Code1 – код клавиши, которую требуется нажать.

{

"commandType": "KeyDown",

"Code1": "TAB"               

},

Команда выполнения нажатия клавиши без её отпускания.

KeyUp

Code1 – код клавиши, которую требуется отпустить.

{

"commandType": "KeyUp",

"Code1": "TAB"               

},

Команда выполнения отпускания нажатой клавиши.

ModifiedKeyStroke2

Code1 – код клавиши 1 из комбинации.

Code2 – код клавиши 2 из комбинации.

{

"commandType":"ModifiedKeyStroke3",

"Code1": "CONTROL",

"Code2": "DELETE"

}

Команда выполнения комбинации двух клавиш (в примере комбинация Ctrl+Del).

ModifiedKeyStroke3

Code1 – код клавиши 1 из комбинации.

Code2 – код клавиши 2 из комбинации.

Code3 – код клавиши 3 из комбинации.

{

"commandType":"ModifiedKeyStroke3",

"Code1": "CONTROL",

"Code2": "MENU",

"Code3": "DELETE"

}

Команда выполнения комбинации трёх клавиш (в примере комбинация Alt+Ctrl+Del).


Переменные окружения

Шаблон аутентификации

При выполнении команды TextEntry могут использоваться следующие переменные окружения, которые указываются через символ «$»:

Таблица. Переменные окружения команды TextEntry шаблона аутентификации

Наименование переменной

Содержащееся значение

$user

Логин УЗ пользователя в приложении

$password

Пароль УЗ пользователя в приложении

$domain

Домен УЗ пользователя в приложении

В случае, если Агент встречает такую переменную, он производит замену имени переменной с символом «$» на значение переменной.

Шаблон смены пароля

При выполнении команды TextEntry могут использоваться следующие переменные окружения, которые указываются через символ «$»:

Наименование переменнойСодержащееся значение

$user

Логин УЗ пользователя в приложении

$password

Пароль УЗ пользователя в приложении

$newpasswordНовый пароль УЗ пользователя в приложении

Допустимые коды клавиш для эмуляции нажатий

Команды KeyPress, KeyDown, KeyUp, ModifiedKeyStroke2, ModifiedKeyStroke3 могут эмулировать перечень нажатий клавиш в соответствии со спецификацией Windows Virtual-Key Codes. Описание приведено в оригинале, чтобы при необходимости можно было сопоставить с официальной документацией Microsoft Windows.

Таблица. Коды клавиш для эмуляции нажатий виртуальной клавиатуры

Код клавиши

Описание

LBUTTON

Left mouse button

RBUTTON

Right mouse button

CANCEL

Control-break processing

MBUTTON

Middle mouse button (three-button mouse)

XBUTTON1

X1 mouse button

XBUTTON2

X2 mouse button

BACK

BACKSPACE key

TAB

TAB key

CLEAR

CLEAR key

RETURN

ENTER key

SHIFT

SHIFT key

CONTROL

CTRL key

MENU

ALT key

PAUSE

PAUSE key

CAPITAL

CAPS LOCK key

KANA

IME Kana mode

HANGUEL

IME Hanguel mode (maintained for compatibility; use HANGUL)

HANGUL

IME Hangul mode

IME_ON

IME On

JUNJA

IME Junja mode

FINAL

IME final mode

HANJA

IME Hanja mode

KANJI

IME Kanji mode

IME_OFF

IME Off

ESCAPE

ESC key

CONVERT

IME convert

NONCONVERT

IME nonconvert

ACCEPT

IME accept

MODECHANGE

IME mode change request

SPACE

SPACEBAR

PRIOR

PAGE UP key

NEXT

PAGE DOWN key

END

END key

HOME

HOME key

LEFT

LEFT ARROW key

UP

UP ARROW key

RIGHT

RIGHT ARROW key

DOWN

DOWN ARROW key

SELECT

SELECT key

PRINT

PRINT key

EXECUTE

EXECUTE key

SNAPSHOT

PRINT SCREEN key

INSERT

INS key

DELETE

DEL key

HELP

HELP key

LWIN

Left Windows key (Natural keyboard)

RWIN

Right Windows key (Natural keyboard)

APPS

Applications key (Natural keyboard)

SLEEP

Computer Sleep key

NUMPAD0

Numeric keypad 0 key

NUMPAD1

Numeric keypad 1 key

NUMPAD2

Numeric keypad 2 key

NUMPAD3

Numeric keypad 3 key

NUMPAD4

Numeric keypad 4 key

NUMPAD5

Numeric keypad 5 key

NUMPAD6

Numeric keypad 6 key

NUMPAD7

Numeric keypad 7 key

NUMPAD8

Numeric keypad 8 key

NUMPAD9

Numeric keypad 9 key

MULTIPLY

Multiply key

ADD

Add key

SEPARATOR

Separator key

SUBTRACT

Subtract key

DECIMAL

Decimal key

DIVIDE

Divide key

F1

F1 key

F2

F2 key

F3

F3 key

F4

F4 key

F5

F5 key

F6

F6 key

F7

F7 key

F8

F8 key

F9

F9 key

F10

F10 key

F11

F11 key

F12

F12 key

F13

F13 key

F14

F14 key

F15

F15 key

F16

F16 key

F17

F17 key

F18

F18 key

F19

F19 key

F20

F20 key

F21

F21 key

F22

F22 key

F23

F23 key

F24

F24 key

NUMLOCK

NUM LOCK key

SCROLL

SCROLL LOCK key

LSHIFT

Left SHIFT key

RSHIFT

Right SHIFT key

LCONTROL

Left CONTROL key

RCONTROL

Right CONTROL key

LMENU

Left MENU key

RMENU

Right MENU key

BROWSER_BACK

Browser Back key

BROWSER_FORWARD

Browser Forward key

BROWSER_REFRESH

Browser Refresh key

BROWSER_STOP

Browser Stop key

BROWSER_SEARCH

Browser Search key

BROWSER_FAVORITES

Browser Favorites key

BROWSER_HOME

Browser Start and Home key

VOLUME_MUTE

Volume Mute key

VOLUME_DOWN

Volume Down key

VOLUME_UP

Volume Up key

MEDIA_NEXT_TRACK

Next Track key

MEDIA_PREV_TRACK

Previous Track key

MEDIA_STOP

Stop Media key

MEDIA_PLAY_PAUSE

Play/Pause Media key

LAUNCH_MAIL

Start Mail key

LAUNCH_MEDIA_SELECT

Select Media key

LAUNCH_APP1

Start Application 1 key

LAUNCH_APP2

Start Application 2 key

OEM_1

Used for miscellaneous characters; it can vary by keyboard.

OEM_PLUS

For any country/region, the '+' key

OEM_COMMA

For any country/region, the ',' key

OEM_MINUS

For any country/region, the '-' key

OEM_PERIOD

For any country/region, the '.' key

OEM_2

Used for miscellaneous characters; it can vary by keyboard.

OEM_3

Used for miscellaneous characters; it can vary by keyboard.

OEM_4

Used for miscellaneous characters; it can vary by keyboard.

OEM_5

Used for miscellaneous characters; it can vary by keyboard.

OEM_6

Used for miscellaneous characters; it can vary by keyboard.

OEM_7

Used for miscellaneous characters; it can vary by keyboard.

OEM_8

Used for miscellaneous characters; it can vary by keyboard.

OEM_102

Either the angle bracket key or the backslash key on the RT 102-key keyboard

PROCESSKEY

IME PROCESS key

PACKET

Used to pass Unicode characters as if they were keystrokes. The PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP

ATTN

Attn key

CRSEL

CrSel key

EXSEL

ExSel key

EREOF

Erase EOF key

PLAY

Play key

ZOOM

Zoom key

NONAME

Reserved

PA1

PA1 key

OEM_CLEAR

Clear key

VK_0

Key 0

VK_1

Key 1

VK_2

Key 2

VK_3

Key 3

VK_4

Key 4

VK_5

Key 5

VK_6

Key 6

VK_7

Key 7

VK_8

Key 8

VK_9

Key 9

VK_A

Key A

VK_B

Key B

VK_C

Key C

VK_D

Key D

VK_E

Key E

VK_F

Key F

VK_G

Key G

VK_H

Key H

VK_I

Key I

VK_J

Key J

VK_K

Key K

VK_L

Key L

VK_M

Key M

VK_N

Key N

VK_O

Key O

VK_P

Key P

VK_Q

Key Q

VK_R

Key R

VK_S

Key S

VK_T

Key T

VK_U

Key U

VK_V

Key V

VK_W

Key W

VK_X

Key X

VK_Y

Key Y

VK_Z

Key Z

Обсуждение