Общие сведения
Avanpost FAM обеспечивает функциональность аутентификации посредством механизма перехвата окон в десктопные приложения. Данный механизм осуществляется компонентом Avanpost FAM Agent, устанавливаемым на рабочее место пользователя. Для корректного взаимодействия Avanpost FAM Agent с окном десктопного приложения требуется разработать шаблон аутентификации Enterprise SSO-приложения.
Шаблон приложения описывается в виде JSON-блока, который содержит в себе:
- Коллекцию параметров, определяющих признаки перехвата окон десктопного приложения (коллекция grab);
- Последовательный набор команд для заполнения и сабмита формы аутентификации десктоного приложения (коллекция commands).
Структура шаблона в десктопном приложении
В секции настройки перехвата окон указываются следующие параметры:
- windowClassName – имя класса окна (Window Form Class Name).
- windowName– наименование окна приложения, в котором задаются данные аутентификации пользователя.
- processName – наименование процесса операционной системы, в рамках которого создается окно в котором указываются данные аутентификации пользователя.
Для выполнения действий, предусмотренных окном управляемого приложения, используется механизм эмуляции нажатий виртуальной клавиатуры. Допустимый набор команд для типов шаблонов описан в разделе Допустимые коды клавиш для эмуляции нажатий .
Для поставки данных в окно управляемого приложения (например для аутентификации - логина, пароля или домена) используются переменные окружения, описанные в разделе Переменные окружения.
JSON-шаблон, настраиваемый для приложения, может содержать в себе 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 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 |