Live Chat Software by Kayako |
data (current scope):
_templateGroupPrefix = ''
_companyName = 'Компания Индид'
_templateGroupTitle = ''
_activeLanguageID = '9'
_swiftBaseName = ''
_languageContainer (array):
_buildDate = '17 Mar 2023 06:06:52 AM'
_sourceType = 'SOURCEOBF'
_headerImageCP = 'https://support.indeed-company.ru/__swift/files/file_zqkj0w1n3fpqaw1.png'
_headerImageSC = 'https://support.indeed-company.ru/__swift/files/file_o4y6msig1wembsi.png'
_version = '4.98.9'
_product = 'fusion'
_productTitle = 'fusion'
_settings (array):
_defaultTitle = 'Портал технической поддержки компании Индид'
_defaultFooter = 'Портал технической поддержки компании Индид'
_poweredByNotice = 'Портал технической поддержки'
_currentYear = '2024'
_copyright = 'Все права защищены © Компания Индид.'
_extendedRefreshScript = ''
_baseName = 'https://support.indeed-company.ru'
_basePath = 'https://support.indeed-company.ru'
_currentDate = '13 декабря 2024 09:55 PM'
_session (array):
_themePath = 'https://support.indeed-company.ru/__swift/themes/client/'
_themePathInterface = 'https://support.indeed-company.ru/__swift/themes/client/'
_themePathImages = 'https://support.indeed-company.ru/__swift/themes/client/images/'
_themePath_base = 'https://support.indeed-company.ru/__swift/apps/base/themes/client/'
_themePath_core = 'https://support.indeed-company.ru/__swift/apps/core/themes/client/'
_themePath_knowledgebase = 'https://support.indeed-company.ru/__apps/knowledgebase/themes/client/'
_themePath_livechat = 'https://support.indeed-company.ru/__apps/livechat/themes/client/'
_themePath_news = 'https://support.indeed-company.ru/__apps/news/themes/client/'
_themePath_parser = 'https://support.indeed-company.ru/__apps/parser/themes/client/'
_themePath_reports = 'https://support.indeed-company.ru/__apps/reports/themes/client/'
_themePath_tickets = 'https://support.indeed-company.ru/__apps/tickets/themes/client/'
_themePath_troubleshooter = 'https://support.indeed-company.ru/__apps/troubleshooter/themes/client/'
_jsInitPayload = 'SWIFT.Setup(\'/knowledgebase/list/Index/17/sablonizaciya-enterprise-sso\', {"basename":"https:\\/\\/support.indeed-company.ru","interfacepath":"https:\\/\\/support.indeed-company.ru\\/","swiftpath":"https:\\/\\/support.indeed-company.ru\\/","ip":false,"themepath":"https:\\/\\/support.indeed-company.ru\\/__swift\\/themes\\/client\\/","themepathinterface":"https:\\/\\/support.indeed-company.ru\\/__swift\\/themes\\/client\\/","themepathglobal":"https:\\/\\/support.indeed-company.ru\\/__swift\\/themes\\/__global\\/","version":"4.98.9","product":"fusion","activestaffcount":false});'
_userLoginEmail = ''
_userLoginPassword = ''
_userRememberMe = false
_userIsLoggedIn = false
_registrationPolicyURL = 'https://indeed-company.ru/terms-and-policies/terms-and-policies'
_isNewsAppRegistered = true
_redirectAction = '/Knowledgebase/List/Index/17/sablonizaciya-enterprise-sso'
_csrfhash = 'ox069ttkutvfftto6sntgttpstc58ttq'
_canPostComments = true
_canSubscribeNews = true
_navbarMenuItemContainer (array):_filterKnowledgebase = true
_navKnowledgebaseCategoryContainer (array):
_knowledgebaseCategoryID = '17'
_knowledgebaseArticleContainer (array):
_showEmptyViewWarning = false
_hasNoCategories = true
_knowledgebaseArticleContainer_Popular (array):_knowledgebaseArticleContainer_Recent (array):_pageTitle = 'База знаний'
_widgetContainer (array):
_companyName = 'Компания Индид'
_templateGroupTitle = ''
_activeLanguageID = '9'
_swiftBaseName = ''
_languageContainer (array):
9 (array):
_buildType = 'STABLE'languageid = '9'
title = 'Русский'
languagecode = 'ru'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '1'
displayorder = '1'
isenabled = '1'
flagicon = '{$themepath}ru.gif'
1 (array):title = 'Русский'
languagecode = 'ru'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '1'
displayorder = '1'
isenabled = '1'
flagicon = '{$themepath}ru.gif'
languageid = '1'
title = 'English (U.S.)'
languagecode = 'en-us'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '1'
isdefault = '0'
displayorder = '2'
isenabled = '1'
flagicon = '{$themepath}us.gif'
2 (array):title = 'English (U.S.)'
languagecode = 'en-us'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '1'
isdefault = '0'
displayorder = '2'
isenabled = '1'
flagicon = '{$themepath}us.gif'
languageid = '2'
title = 'Deutsch (DE)'
languagecode = 'de'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '3'
isenabled = '0'
flagicon = '{$themepath}de.gif'
3 (array):title = 'Deutsch (DE)'
languagecode = 'de'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '3'
isenabled = '0'
flagicon = '{$themepath}de.gif'
languageid = '3'
title = 'English (U.K.)'
languagecode = 'en-gb'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '4'
isenabled = '0'
flagicon = '{$themepath}gb.gif'
4 (array):title = 'English (U.K.)'
languagecode = 'en-gb'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '4'
isenabled = '0'
flagicon = '{$themepath}gb.gif'
languageid = '4'
title = 'Español (ES)'
languagecode = 'es'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '5'
isenabled = '0'
flagicon = '{$themepath}es.gif'
5 (array):title = 'Español (ES)'
languagecode = 'es'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '5'
isenabled = '0'
flagicon = '{$themepath}es.gif'
languageid = '5'
title = 'Français'
languagecode = 'fr'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '6'
isenabled = '0'
flagicon = '{$themepath}fr.gif'
6 (array):title = 'Français'
languagecode = 'fr'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '6'
isenabled = '0'
flagicon = '{$themepath}fr.gif'
languageid = '6'
title = 'Italiano'
languagecode = 'it'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '7'
isenabled = '0'
flagicon = '{$themepath}it.gif'
7 (array):title = 'Italiano'
languagecode = 'it'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '7'
isenabled = '0'
flagicon = '{$themepath}it.gif'
languageid = '7'
title = 'Nederlands'
languagecode = 'nl'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '8'
isenabled = '0'
flagicon = '{$themepath}nl.gif'
8 (array):title = 'Nederlands'
languagecode = 'nl'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '8'
isenabled = '0'
flagicon = '{$themepath}nl.gif'
languageid = '8'
title = 'Português (PT)'
languagecode = 'pt'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '9'
isenabled = '0'
flagicon = '{$themepath}pt.gif'
title = 'Português (PT)'
languagecode = 'pt'
charset = 'UTF-8'
author = 'Kayako'
textdirection = 'ltr'
ismaster = '0'
isdefault = '0'
displayorder = '9'
isenabled = '0'
flagicon = '{$themepath}pt.gif'
_buildDate = '17 Mar 2023 06:06:52 AM'
_sourceType = 'SOURCEOBF'
_headerImageCP = 'https://support.indeed-company.ru/__swift/files/file_zqkj0w1n3fpqaw1.png'
_headerImageSC = 'https://support.indeed-company.ru/__swift/files/file_o4y6msig1wembsi.png'
_version = '4.98.9'
_product = 'fusion'
_productTitle = 'fusion'
_settings (array):
user_enableemailverification = '1'
user_enablecaptcha = '1'
user_dispatchregemail = '1'
user_adelunveri = '1'
user_delcleardays = '1'
user_orgselection = 'dontallow'
user_orgrestrictautoadd = '1'
user_orgprofileupdate = 'managersonly'
user_orgdefaultclassification = 'manager'
security_sessioninactivity = '21600'
security_sessionvar = 'cookie'
security_cookiepath = '/'
security_sessionipcheck = '0'
security_securesessions = '1'
security_loginlocked = '1'
security_loginattempts = '10'
security_loginlockedtimeline = '900'
security_sppminchars = '8'
security_sppminnumbers = '0'
security_sppminsymbols = '0'
security_sppmincapitalchars = '0'
security_sppexpiredays = '0'
security_scloginlocked = '0'
security_scloginattempts = '5'
security_scloginlockedtimeline = '600'
security_scpminchars = '8'
security_scpminnumbers = '0'
security_scpminsymbols = '0'
security_scpmincapitalchars = '0'
security_captchatype = 'local'
security_commentscaptcha = '0'
security_autoapprovecomments = '0'
security_enableakismet = '0'
loginshare_staffenable = '0'
loginshare_stafftitle = 'Custom LoginShare'
loginshare_userenable = '0'
loginshare_usertitle = 'Custom LoginShare'
g_cpmenu = 'click'
g_jscache = '1'
g_onlusr = '1'
g_enableapiinterface = '1'
g_maxtagcloud = '10'
g_maxsearchresults = '20'
cpu_winappcompresslevel = '1'
cpu_compresswinappdata = '1'
cpu_logcleardays = '2'
cpu_attachtype = '2'
cpu_attachchunksize = '256000'
cpu_headerencoding = 'base64'
cpu_messageencoding = 'quoted-printable'
cpu_maildefaultpriority = '3'
cpu_enablehtmlmails = '1'
cpu_enablemailqueue = '1'
cpu_mailqueuebatch = '5'
cpu_enablesmtp = '1'
cpu_smtpport = '25'
cpu_smtpportssl = ''
cpu_smtpuseauth = '0'
cpu_smtptype = 'nonssl'
dt_dateformat = '%d %B %Y'
dt_timeformat = '%I:%M %p'
dt_datetimeformat = '%d %B %Y %I:%M %p'
dt_timezonephp = 'Europe/Moscow'
dt_daylightsavings = '1'
dt_caltype = 'eu'
kb_parcount = '1'
kb_categorycolumns = '3'
kb_enrating = '1'
kb_catdisplayorder = '1'
kb_catorder = '1'
kb_ardisplayorder = '2'
kb_arorder = '1'
kb_maxcatarticles = '5'
kb_climit = '255'
kb_enpopulararticles = '0'
kb_maxpopulararticles = '10'
kb_enlatestarticles = '0'
kb_maxlatestarticles = '10'
kb_enrss = '1'
kb_rssclimit = '255'
nw_sendstaffemail = '1'
nw_enablestaffdashboard = '1'
nw_maxdashboardnewslist = '5'
nw_staffpageno = '6'
nw_pageno = '10'
nw_svalidate = '1'
nw_enablenewsnav = '1'
nw_maxnewslist = '10'
nw_enablerss = '0'
nw_maxrss = '15'
pr_procno = '15'
pr_sizelimit = '200000'
pr_createnewticket = '0'
pr_allowmultiplecreation = '0'
pr_contentpriority = 'text'
pr_conversion = '1'
pr_parsereplyto = '1'
pr_stripscript = '1'
pr_loopcut_prevents_autoresponder = '1'
pr_loopcut_ignores_cut_mail = '0'
pr_enablelog = '1'
pr_logchurndays = '30'
pr_maxlogsize = '50'
t_enhistory = '0'
t_enpagin = '0'
t_postlimit = '7'
t_mergrecip = '1'
t_reciplimit = '10'
t_postorder = 'desc'
t_chtml = 'html'
t_ochtml = 'html'
t_allowhtml = '0'
t_allowableadvtags = 'br,a,b,i,u,font,hr,strong,code'
t_allowableadvtagsattributes = 'href,rel,src'
t_tpreview = '1'
t_eticketid = 'seq'
t_restrictnewticket = '0'
t_cstatusupd = '1'
t_resultlimit = '300'
t_spammovetotrash = '1'
t_spamban = '1'
t_csccrecipients = '0'
t_cstaffname = '0'
t_cdisplayname = 'Indeed Support'
t_cthirdparty = '1'
t_canirs = '1'
t_maxwcnt = '20'
t_ccaptcha = '1'
t_cpostorder = 'desc'
t_cenattach = '1'
t_cleanmailsubjects = '0'
t_searchticketidinbody = '1'
t_slaresets = '1'
t_encustomoverdue = '1'
t_overduehrs = '24'
t_resolutionduehrs = '72'
t_overduecolor = '#FFECEC'
t_ticketnoteresetsupdatetime = '0'
t_autorecip = '1'
t_autorespondercc = '1'
t_pstaffreply = '1'
tickets_resattachments = '0'
tickets_parseemlattachment = '1'
t_plockthreshold = '1800'
t_locktimeout = '600'
tb_enablespam = '1'
tb_minwordlength = '3'
tb_maxwordlength = '30'
tb_indexnumbers = '1'
tb_minnumberlength = '6'
tb_signores = '1'
tr_displayviews = '0'
general_companyname = 'Компания Индид'
general_producturl = 'https://support.indeed-company.ru/'
general_returnemail = 'technical-support@indeed-id.com'
cpu_smtphost = '10.10.3.19'
cpu_smtpuser = 'technical-support@indeed-id.com'
cpu_smtppass = 'YbrjkfqBkmby25'
nw_globalsync = ''
nw_publicsync = ''
nw_privatesync = ''
t_tinymceeditor = '1'
t_ticketview = '100'
pr_enablelog_notification = '0'
security_cookiedomain = ''
security_recpublickey = ''
security_recprivatekey = ''
security_akismetkey = ''
cpu_hidereportexportxlsoption = '0'
t_editor_format = 'text'
security_visitorinactivity = '500'
ls_routingmode = 'roundrobin'
ls_openqueuetimeout = '300'
livesupport_roundrobinretries = '3'
livesupport_roundrobintimetry = '60'
livechat_proactivescroll = '1'
livechat_timestamps = '1'
livechat_timestampformat = '%H:%M'
livesupport_usehttps = '0'
livesupport_clientchatrefresh = '5'
livesupport_clientpagerefresh = '20'
livesupport_chatwidth = '600'
livesupport_chatheight = '680'
livesupport_displayclientchatqueue = '1'
livesupport_cachehtmljscode = '1'
ls_depname = '0'
ls_forcerandomnumber = '0'
ls_activecountrycode = '1'
ls_ignoreactivecountrycode = '1'
ls_enableinternationalcalls = '1'
ls_internationalcallprefix = '011'
ls_recordphonecalls = '0'
livesupport_alertttl = '30'
livesupport_searchfrcolor = '#666666'
livesupport_searchbgcolor = '#FFE1FF'
ls_displaystatus = '1'
livesupport_captcha = '1'
_area = 'client'user_enablecaptcha = '1'
user_dispatchregemail = '1'
user_adelunveri = '1'
user_delcleardays = '1'
user_orgselection = 'dontallow'
user_orgrestrictautoadd = '1'
user_orgprofileupdate = 'managersonly'
user_orgdefaultclassification = 'manager'
security_sessioninactivity = '21600'
security_sessionvar = 'cookie'
security_cookiepath = '/'
security_sessionipcheck = '0'
security_securesessions = '1'
security_loginlocked = '1'
security_loginattempts = '10'
security_loginlockedtimeline = '900'
security_sppminchars = '8'
security_sppminnumbers = '0'
security_sppminsymbols = '0'
security_sppmincapitalchars = '0'
security_sppexpiredays = '0'
security_scloginlocked = '0'
security_scloginattempts = '5'
security_scloginlockedtimeline = '600'
security_scpminchars = '8'
security_scpminnumbers = '0'
security_scpminsymbols = '0'
security_scpmincapitalchars = '0'
security_captchatype = 'local'
security_commentscaptcha = '0'
security_autoapprovecomments = '0'
security_enableakismet = '0'
loginshare_staffenable = '0'
loginshare_stafftitle = 'Custom LoginShare'
loginshare_userenable = '0'
loginshare_usertitle = 'Custom LoginShare'
g_cpmenu = 'click'
g_jscache = '1'
g_onlusr = '1'
g_enableapiinterface = '1'
g_maxtagcloud = '10'
g_maxsearchresults = '20'
cpu_winappcompresslevel = '1'
cpu_compresswinappdata = '1'
cpu_logcleardays = '2'
cpu_attachtype = '2'
cpu_attachchunksize = '256000'
cpu_headerencoding = 'base64'
cpu_messageencoding = 'quoted-printable'
cpu_maildefaultpriority = '3'
cpu_enablehtmlmails = '1'
cpu_enablemailqueue = '1'
cpu_mailqueuebatch = '5'
cpu_enablesmtp = '1'
cpu_smtpport = '25'
cpu_smtpportssl = ''
cpu_smtpuseauth = '0'
cpu_smtptype = 'nonssl'
dt_dateformat = '%d %B %Y'
dt_timeformat = '%I:%M %p'
dt_datetimeformat = '%d %B %Y %I:%M %p'
dt_timezonephp = 'Europe/Moscow'
dt_daylightsavings = '1'
dt_caltype = 'eu'
kb_parcount = '1'
kb_categorycolumns = '3'
kb_enrating = '1'
kb_catdisplayorder = '1'
kb_catorder = '1'
kb_ardisplayorder = '2'
kb_arorder = '1'
kb_maxcatarticles = '5'
kb_climit = '255'
kb_enpopulararticles = '0'
kb_maxpopulararticles = '10'
kb_enlatestarticles = '0'
kb_maxlatestarticles = '10'
kb_enrss = '1'
kb_rssclimit = '255'
nw_sendstaffemail = '1'
nw_enablestaffdashboard = '1'
nw_maxdashboardnewslist = '5'
nw_staffpageno = '6'
nw_pageno = '10'
nw_svalidate = '1'
nw_enablenewsnav = '1'
nw_maxnewslist = '10'
nw_enablerss = '0'
nw_maxrss = '15'
pr_procno = '15'
pr_sizelimit = '200000'
pr_createnewticket = '0'
pr_allowmultiplecreation = '0'
pr_contentpriority = 'text'
pr_conversion = '1'
pr_parsereplyto = '1'
pr_stripscript = '1'
pr_loopcut_prevents_autoresponder = '1'
pr_loopcut_ignores_cut_mail = '0'
pr_enablelog = '1'
pr_logchurndays = '30'
pr_maxlogsize = '50'
t_enhistory = '0'
t_enpagin = '0'
t_postlimit = '7'
t_mergrecip = '1'
t_reciplimit = '10'
t_postorder = 'desc'
t_chtml = 'html'
t_ochtml = 'html'
t_allowhtml = '0'
t_allowableadvtags = 'br,a,b,i,u,font,hr,strong,code'
t_allowableadvtagsattributes = 'href,rel,src'
t_tpreview = '1'
t_eticketid = 'seq'
t_restrictnewticket = '0'
t_cstatusupd = '1'
t_resultlimit = '300'
t_spammovetotrash = '1'
t_spamban = '1'
t_csccrecipients = '0'
t_cstaffname = '0'
t_cdisplayname = 'Indeed Support'
t_cthirdparty = '1'
t_canirs = '1'
t_maxwcnt = '20'
t_ccaptcha = '1'
t_cpostorder = 'desc'
t_cenattach = '1'
t_cleanmailsubjects = '0'
t_searchticketidinbody = '1'
t_slaresets = '1'
t_encustomoverdue = '1'
t_overduehrs = '24'
t_resolutionduehrs = '72'
t_overduecolor = '#FFECEC'
t_ticketnoteresetsupdatetime = '0'
t_autorecip = '1'
t_autorespondercc = '1'
t_pstaffreply = '1'
tickets_resattachments = '0'
tickets_parseemlattachment = '1'
t_plockthreshold = '1800'
t_locktimeout = '600'
tb_enablespam = '1'
tb_minwordlength = '3'
tb_maxwordlength = '30'
tb_indexnumbers = '1'
tb_minnumberlength = '6'
tb_signores = '1'
tr_displayviews = '0'
general_companyname = 'Компания Индид'
general_producturl = 'https://support.indeed-company.ru/'
general_returnemail = 'technical-support@indeed-id.com'
cpu_smtphost = '10.10.3.19'
cpu_smtpuser = 'technical-support@indeed-id.com'
cpu_smtppass = 'YbrjkfqBkmby25'
nw_globalsync = ''
nw_publicsync = ''
nw_privatesync = ''
t_tinymceeditor = '1'
t_ticketview = '100'
pr_enablelog_notification = '0'
security_cookiedomain = ''
security_recpublickey = ''
security_recprivatekey = ''
security_akismetkey = ''
cpu_hidereportexportxlsoption = '0'
t_editor_format = 'text'
security_visitorinactivity = '500'
ls_routingmode = 'roundrobin'
ls_openqueuetimeout = '300'
livesupport_roundrobinretries = '3'
livesupport_roundrobintimetry = '60'
livechat_proactivescroll = '1'
livechat_timestamps = '1'
livechat_timestampformat = '%H:%M'
livesupport_usehttps = '0'
livesupport_clientchatrefresh = '5'
livesupport_clientpagerefresh = '20'
livesupport_chatwidth = '600'
livesupport_chatheight = '680'
livesupport_displayclientchatqueue = '1'
livesupport_cachehtmljscode = '1'
ls_depname = '0'
ls_forcerandomnumber = '0'
ls_activecountrycode = '1'
ls_ignoreactivecountrycode = '1'
ls_enableinternationalcalls = '1'
ls_internationalcallprefix = '011'
ls_recordphonecalls = '0'
livesupport_alertttl = '30'
livesupport_searchfrcolor = '#666666'
livesupport_searchbgcolor = '#FFE1FF'
ls_displaystatus = '1'
livesupport_captcha = '1'
_defaultTitle = 'Портал технической поддержки компании Индид'
_defaultFooter = 'Портал технической поддержки компании Индид'
_poweredByNotice = 'Портал технической поддержки'
_currentYear = '2024'
_copyright = 'Все права защищены © Компания Индид.'
_extendedRefreshScript = ''
_baseName = 'https://support.indeed-company.ru'
_basePath = 'https://support.indeed-company.ru'
_currentDate = '13 декабря 2024 09:55 PM'
_session (array):
sessionid = 'IOTfIgSffBxobEOmj2vb7ZaR3kb839738f39606bb54d1d5184da2c51cf77003ccfc7Z0CdaCPfLue3'
ipaddress = '10.150.5.4'
lastactivity = '1734116127'
lastactivitycustom = '0'
useragent = 'CCBot/2.0 (https://commoncrawl.org/faq/)'
isloggedin = '0'
sessiontype = '40'
typeid = '0'
sessionhits = '0'
dateline = '1734116127'
status = '0'
phonestatus = '0'
captcha = ''
gridcolor = ''
visitorgroupid = '0'
departmentid = '0'
proactiveresult = '0'
ticketviewid = '0'
iswinapp = '0'
csrfhash = 'ox069ttkutvfftto6sntgttpstc58ttq'
languagecode = ''
_swiftPath = 'https://support.indeed-company.ru/'ipaddress = '10.150.5.4'
lastactivity = '1734116127'
lastactivitycustom = '0'
useragent = 'CCBot/2.0 (https://commoncrawl.org/faq/)'
isloggedin = '0'
sessiontype = '40'
typeid = '0'
sessionhits = '0'
dateline = '1734116127'
status = '0'
phonestatus = '0'
captcha = ''
gridcolor = ''
visitorgroupid = '0'
departmentid = '0'
proactiveresult = '0'
ticketviewid = '0'
iswinapp = '0'
csrfhash = 'ox069ttkutvfftto6sntgttpstc58ttq'
languagecode = ''
_themePath = 'https://support.indeed-company.ru/__swift/themes/client/'
_themePathInterface = 'https://support.indeed-company.ru/__swift/themes/client/'
_themePathImages = 'https://support.indeed-company.ru/__swift/themes/client/images/'
_themePath_base = 'https://support.indeed-company.ru/__swift/apps/base/themes/client/'
_themePath_core = 'https://support.indeed-company.ru/__swift/apps/core/themes/client/'
_themePath_knowledgebase = 'https://support.indeed-company.ru/__apps/knowledgebase/themes/client/'
_themePath_livechat = 'https://support.indeed-company.ru/__apps/livechat/themes/client/'
_themePath_news = 'https://support.indeed-company.ru/__apps/news/themes/client/'
_themePath_parser = 'https://support.indeed-company.ru/__apps/parser/themes/client/'
_themePath_reports = 'https://support.indeed-company.ru/__apps/reports/themes/client/'
_themePath_tickets = 'https://support.indeed-company.ru/__apps/tickets/themes/client/'
_themePath_troubleshooter = 'https://support.indeed-company.ru/__apps/troubleshooter/themes/client/'
_jsInitPayload = 'SWIFT.Setup(\'/knowledgebase/list/Index/17/sablonizaciya-enterprise-sso\', {"basename":"https:\\/\\/support.indeed-company.ru","interfacepath":"https:\\/\\/support.indeed-company.ru\\/","swiftpath":"https:\\/\\/support.indeed-company.ru\\/","ip":false,"themepath":"https:\\/\\/support.indeed-company.ru\\/__swift\\/themes\\/client\\/","themepathinterface":"https:\\/\\/support.indeed-company.ru\\/__swift\\/themes\\/client\\/","themepathglobal":"https:\\/\\/support.indeed-company.ru\\/__swift\\/themes\\/__global\\/","version":"4.98.9","product":"fusion","activestaffcount":false});'
_userLoginEmail = ''
_userLoginPassword = ''
_userRememberMe = false
_userIsLoggedIn = false
_registrationPolicyURL = 'https://indeed-company.ru/terms-and-policies/terms-and-policies'
_isNewsAppRegistered = true
_redirectAction = '/Knowledgebase/List/Index/17/sablonizaciya-enterprise-sso'
_csrfhash = 'ox069ttkutvfftto6sntgttpstc58ttq'
_canPostComments = true
_canSubscribeNews = true
_navbarMenuItemContainer (array):_filterKnowledgebase = true
_navKnowledgebaseCategoryContainer (array):
49 (array):
_parentCategoryList (array):kbcategoryid = '49'
parentkbcategoryid = '0'
staffid = '1'
title = 'С чего начать?'
dateline = '0'
totalarticles = 6
categorytype = '1'
displayorder = '1'
articlesortorder = '1'
allowcomments = '0'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):seotitle = 's-cego-nacat'
50 (array):parentkbcategoryid = '0'
staffid = '1'
title = 'С чего начать?'
dateline = '0'
totalarticles = 6
categorytype = '1'
displayorder = '1'
articlesortorder = '1'
allowcomments = '0'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):seotitle = 's-cego-nacat'
kbcategoryid = '50'
parentkbcategoryid = '0'
staffid = '10'
title = 'Indeed Privileged Access Manager'
dateline = '0'
totalarticles = 32
categorytype = '1'
displayorder = '2'
articlesortorder = '1'
allowcomments = '0'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
3 (array):parentkbcategoryid = '0'
staffid = '10'
title = 'Indeed Privileged Access Manager'
dateline = '0'
totalarticles = 32
categorytype = '1'
displayorder = '2'
articlesortorder = '1'
allowcomments = '0'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '61'
1 = '62'
2 = '63'
3 = '53'
4 = '54'
5 = '65'
6 = '66'
7 = '67'
seotitle = 'indeed-privileged-access-manager'1 = '62'
2 = '63'
3 = '53'
4 = '54'
5 = '65'
6 = '66'
7 = '67'
kbcategoryid = '3'
parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Certificate Manager'
dateline = '0'
totalarticles = 71
categorytype = '1'
displayorder = '3'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
56 (array):parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Certificate Manager'
dateline = '0'
totalarticles = 71
categorytype = '1'
displayorder = '3'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '34'
1 = '40'
2 = '16'
3 = '26'
seotitle = 'indeed-certificate-manager'1 = '40'
2 = '16'
3 = '26'
kbcategoryid = '56'
parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Access Manager 8'
dateline = '0'
totalarticles = 170
categorytype = '1'
displayorder = '4'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
41 (array):parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Access Manager 8'
dateline = '0'
totalarticles = 170
categorytype = '1'
displayorder = '4'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '57'
1 = '58'
2 = '59'
3 = '60'
4 = '68'
5 = '70'
6 = '73'
7 = '74'
8 = '75'
seotitle = 'indeed-access-manager-8'1 = '58'
2 = '59'
3 = '60'
4 = '68'
5 = '70'
6 = '73'
7 = '74'
8 = '75'
kbcategoryid = '41'
parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Access Manager 7'
dateline = '0'
totalarticles = 46
categorytype = '1'
displayorder = '5'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
1 (array):parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Access Manager 7'
dateline = '0'
totalarticles = 46
categorytype = '1'
displayorder = '5'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '51'
1 = '52'
2 = '42'
3 = '43'
4 = '44'
5 = '45'
6 = '46'
7 = '47'
8 = '48'
seotitle = 'indeed-access-manager-7'1 = '52'
2 = '42'
3 = '43'
4 = '44'
5 = '45'
6 = '46'
7 = '47'
8 = '48'
kbcategoryid = '1'
parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Access Manager 6'
dateline = '0'
totalarticles = 234
categorytype = '1'
displayorder = '6'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
2 (array):parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Access Manager 6'
dateline = '0'
totalarticles = 234
categorytype = '1'
displayorder = '6'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '4'
1 = '5'
2 = '6'
3 = '35'
4 = '7'
5 = '36'
6 = '8'
7 = '37'
8 = '38'
9 = '9'
10 = '10'
11 = '11'
12 = '12'
13 = '13'
14 = '14'
15 = '18'
16 = '19'
17 = '20'
18 = '25'
19 = '29'
20 = '28'
21 = '27'
seotitle = 'indeed-access-manager-6'1 = '5'
2 = '6'
3 = '35'
4 = '7'
5 = '36'
6 = '8'
7 = '37'
8 = '38'
9 = '9'
10 = '10'
11 = '11'
12 = '12'
13 = '13'
14 = '14'
15 = '18'
16 = '19'
17 = '20'
18 = '25'
19 = '29'
20 = '28'
21 = '27'
kbcategoryid = '2'
parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Enterprise Single Sign-On'
dateline = '0'
totalarticles = 85
categorytype = '1'
displayorder = '8'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
30 (array):parentkbcategoryid = '0'
staffid = '5'
title = 'Indeed Enterprise Single Sign-On'
dateline = '0'
totalarticles = 85
categorytype = '1'
displayorder = '8'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '39'
1 = '17'
2 = '21'
3 = '23'
4 = '22'
seotitle = 'indeed-enterprise-single-sign-on'1 = '17'
2 = '21'
3 = '23'
4 = '22'
kbcategoryid = '30'
parentkbcategoryid = '0'
staffid = '5'
title = 'Документация по продуктам'
dateline = '0'
totalarticles = 1
categorytype = '1'
displayorder = '8'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
parentkbcategoryid = '0'
staffid = '5'
title = 'Документация по продуктам'
dateline = '0'
totalarticles = 1
categorytype = '1'
displayorder = '8'
articlesortorder = '1'
allowcomments = '1'
allowrating = '1'
ispublished = '1'
uservisibilitycustom = '0'
staffvisibilitycustom = '0'
isimporteddownloadcategory = '0'
articles (array):subcategoryidlist (array):
0 = '31'
1 = '32'
seotitle = 'dokumentaciya-po-produktam'1 = '32'
2 = 'Indeed Enterprise Single Sign-On'
17 = 'Шаблонизация Enterprise SSO'
_knowledgebaseCategoryListContainer (array):17 = 'Шаблонизация Enterprise SSO'
0 (array):
_knowledgebaseCategoryCount = 3title = false
1 (array):title = false
2 (array):title = false
_knowledgebaseCategoryID = '17'
_knowledgebaseArticleContainer (array):
193 (array):
_knowledgebaseArticleCount = 17kbarticleid = '193'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Возможно запустить приложение из чёрного списка в ESSO'
isedited = '1'
editeddateline = '1458291141'
editedstaffid = '5'
views = '1775'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1458142371'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Приложение добавлено в чёрный список в Приложения, но может быть запущено</p> <p><strong><span class="bbu">Ответ</span></strong><br />Проверьте наличие параметра HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCertDlls ключ AppSecDll (REG_EXPAND_SZ). В нём должен быть прописан путь к библиотеке IndeedID.SSO.black.list.dll. Библиотека должна присутствовать по этому пути</p>'
contentstext = 'ВОПРОС Приложение добавлено в чёрный список в Приложения, но может быть запущено ОТВЕТ Проверьте наличие параметра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerAppCertDlls ключ AppSecDll (REG_EXPAND_SZ). В нём должен быть прописан путь...'
126 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Возможно запустить приложение из чёрного списка в ESSO'
isedited = '1'
editeddateline = '1458291141'
editedstaffid = '5'
views = '1775'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1458142371'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Приложение добавлено в чёрный список в Приложения, но может быть запущено</p> <p><strong><span class="bbu">Ответ</span></strong><br />Проверьте наличие параметра HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCertDlls ключ AppSecDll (REG_EXPAND_SZ). В нём должен быть прописан путь к библиотеке IndeedID.SSO.black.list.dll. Библиотека должна присутствовать по этому пути</p>'
contentstext = 'ВОПРОС Приложение добавлено в чёрный список в Приложения, но может быть запущено ОТВЕТ Проверьте наличие параметра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerAppCertDlls ключ AppSecDll (REG_EXPAND_SZ). В нём должен быть прописан путь...'
kbarticleid = '126'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Выбор алгоритма заполнения для Win32 шаблона'
isedited = '1'
editeddateline = '1457698294'
editedstaffid = '5'
views = '2288'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457697893'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Выбор алгоритма заполнения при создании шаблона.</span></strong></p> <p>В шаблонизаторе существует два алгоритма заполнения: на основе <strong>SetText</strong> и <strong>эмуляция ввода</strong>.</p> <p><strong>На основе SetText</strong> - данный алгоритм заполнения основан на стандартном методе контролов SetText. Основным требованием для использования данного метода является поддержка метода SetText контролами на форме. Самым простым способом проверить поддерживает ли контрол метод заполнения SetText служит создание шаблона с данным методом заполнения и проверка его на тестовом стенде.</p> <p>По умолчанию шаблонизатор создаёт команды с типом команды type="ctFillCtrl". Данный тип команд требует описания контрола, который необходимо заполнить в команде.</p> <p>Пример алгоритма:</p> <div class="codebox"> <blockquote> <pre><span style="font-size: 12pt;"><code><fillingAlgorithm> <command type="ctFillCtrl"> <description>Ввести имя пользователя</description> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"> <position x="159" y="15"/> <size cx="189" cy="23"/> </ctrl> <fieldValueInfo field="ffUserName"/> </dataFillCtrl> </command> <command type="ctFillCtrl"> <description>Ввести пароль</description> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"> <ctrl className="Edit" ctrlId="1002" enabled="1" visible="1"> <position x="159" y="76"/> <size cx="189" cy="23"/> </ctrl> <fieldValueInfo field="ffPassword"/> </dataFillCtrl> </command> <command type="ctFillCtrl"> <description>Нажать на OK</description> <dataFillCtrl fillingType="cftClickButton" clearCtrlText="1"> <ctrl className="Edit" ctrlId="1005" enabled="1" visible="1"> <position x="0" y="125"/> <size cx="159" cy="23"/> </ctrl> <fieldValueInfo field="ffNoData"/> </dataFillCtrl> </command> </fillingAlgorithm></code></span></pre> </blockquote> <p> </p> </div> <p>В примере мы видим три команды заполнения контролов. Кратко рассмотрим теги содержащиеся в описании команд:</p> <ul> <li> <p><strong>description</strong> - словесное описание команды, необходимо для упрощения редактирования шаблона и отображается в сообщения об ошибке, облегчая отладку шаблона. </p> </li> <li> <p><strong>dataFillCtrl</strong> - содержит данные целевого контрола формы.</p> </li> <li> <p><strong>fillingType </strong>- код алгоритма заполнения.</p> </li> <li> <p><strong>clearCtrlText</strong> - флаг очистки контрола перед заполнением. Если 1 – текст контрола будет очищен, если 0 – к тексту контрола добавится текст заполнения. Работает только для кода алгоритма заполнения cftSetText</p> </li> <li> <p><strong>ctrl</strong> - содержит параметры целевого контрола - в ходе выполнения данной команды SSO Agent будет искать на форме контрол, соответствующий данному описанию. Если ни один контрол не будет найден, то произойдет ошибка заполнения. Данный тип команды подходит для тех контролов, которые могут быть точно описаны в шаблоне (описание которых не совпадает с описание любого другого контрола на форме).</p> </li> <li> <p><strong>fieldValueInfo::field</strong> - код значения для заполнения поля формы (например field="ffUserName" - значение имени пользователя)</p> </li> </ul> <p> </p> <p>В случае, если контрол поддерживает использование SetText, но его нельзя точно описать с помощью его параметров, то можно использовать тип команды <strong>ctFillCurrentCtrl</strong>, заполняющий контрол находящийся в фокусе. В данном случае необходимо установить фокус в данный контрол посредством других команд (описание этих команд вы найдете ниже, в описании алгоритма эмуляци ввода).</p> <p>Пример команды:</p> <div> <blockquote> <pre><span style="font-size: 12pt;"><code> <command type="ctFillCurrentCtrl"> <description>Ввести имя пользователя</description> <dataFillCurrentCtrl clearCtrlText="1" fillingType="cftSetText"> <fieldValueInfo field="ffUserName"/> </dataFillCurrentCtrl></code></span><br /><span style="font-size: 12pt;"><code> </command></code></span></pre> </blockquote> </div> <p><br /><br /></p> <p>Если метод SetText не работает в целевой форме, то необходимо использовать <strong>эмуляцию ввода</strong>. Данный способ использует эмуляцию нажатия и отпускания клавиш клавиатуры. Команды данного алгоритма обладают типом<strong>ctFillCurrentCtrl</strong>, т.е. заполняют только контрол, находящийся в фокусе.</p> <p>Пример алгоритма заполнения:<br /> <br /> </p> <div class="codebox"> <blockquote> <pre><span style="font-size: 12pt;"><code> <fillingAlgorithm> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctPosition"> <description>Перейти на контрол имени пользователя</description> <dataPosition waitIntervalMs="50"> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"> <position x="159" y="15"/> <size cx="189" cy="23"/> </ctrl> </dataPosition> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctFillCurrentCtrl"> <description>Ввести имя пользователя</description> <dataFillCurrentCtrl clearCtrlText="1"> <fieldValueInfo field="ffUserName"/> </dataFillCurrentCtrl> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Перейти на следующий контрол</description> <dataControl type="cctTab" waitIntervalMs="50"/> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctFillCurrentCtrl"> <description>Ввести пароль</description> <dataFillCurrentCtrl clearCtrlText="1"> <fieldValueInfo field="ffPassword"/> </dataFillCurrentCtrl> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Перейти на следующий контрол</description> <dataControl type="cctTab" waitIntervalMs="50"/> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Нажать на OK</description> <dataControl type="cctEnter" waitIntervalMs="50"/> </command> </fillingAlgorithm></code></span></pre> </blockquote> </div> <p>В данном примере мы видим последовательность команд среди которых:<br /> </p> <ul> <li> <p>команда с параметром <strong>type="ctWait"</strong> добавляет паузу в алгоритм заполнения. Паузы позволяют избежать ошибок при переходе между полями и заполнением контролов. Параметр periodMs определяет продолжительность паузы в миллисекундах.</p> </li> <li> <p>команда с параметром<strong> type="ctPosition"</strong> - переводит фокус на конкретный контрол, параметры которого описаны в команде. Шаблонизатор в данной команде использует описание контрола, указанного как поле имени пользователя.</p> </li> <li> <p>команда с параметром <strong>type="ctControl"</strong> осуществляет перевод фокуса. Перевод осуществяется за счет эмуляции нажатия клавиши Tab.</p> </li> </ul> <p>Замечание: команды паузы и перевода контрола можно добавлять в алгоритм заполнения методом SetText по необходимости.</p>'
contentstext = 'ВЫБОР АЛГОРИТМА ЗАПОЛНЕНИЯ ПРИ СОЗДАНИИ ШАБЛОНА. В шаблонизаторе существует два алгоритма заполнения: на основе SETTEXT и ЭМУЛЯЦИЯ ВВОДА. НА ОСНОВЕ SETTEXT - данный алгоритм заполнения основан на стандартном методе контролов SetText. Основным требован...'
142 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Выбор алгоритма заполнения для Win32 шаблона'
isedited = '1'
editeddateline = '1457698294'
editedstaffid = '5'
views = '2288'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457697893'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Выбор алгоритма заполнения при создании шаблона.</span></strong></p> <p>В шаблонизаторе существует два алгоритма заполнения: на основе <strong>SetText</strong> и <strong>эмуляция ввода</strong>.</p> <p><strong>На основе SetText</strong> - данный алгоритм заполнения основан на стандартном методе контролов SetText. Основным требованием для использования данного метода является поддержка метода SetText контролами на форме. Самым простым способом проверить поддерживает ли контрол метод заполнения SetText служит создание шаблона с данным методом заполнения и проверка его на тестовом стенде.</p> <p>По умолчанию шаблонизатор создаёт команды с типом команды type="ctFillCtrl". Данный тип команд требует описания контрола, который необходимо заполнить в команде.</p> <p>Пример алгоритма:</p> <div class="codebox"> <blockquote> <pre><span style="font-size: 12pt;"><code><fillingAlgorithm> <command type="ctFillCtrl"> <description>Ввести имя пользователя</description> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"> <position x="159" y="15"/> <size cx="189" cy="23"/> </ctrl> <fieldValueInfo field="ffUserName"/> </dataFillCtrl> </command> <command type="ctFillCtrl"> <description>Ввести пароль</description> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"> <ctrl className="Edit" ctrlId="1002" enabled="1" visible="1"> <position x="159" y="76"/> <size cx="189" cy="23"/> </ctrl> <fieldValueInfo field="ffPassword"/> </dataFillCtrl> </command> <command type="ctFillCtrl"> <description>Нажать на OK</description> <dataFillCtrl fillingType="cftClickButton" clearCtrlText="1"> <ctrl className="Edit" ctrlId="1005" enabled="1" visible="1"> <position x="0" y="125"/> <size cx="159" cy="23"/> </ctrl> <fieldValueInfo field="ffNoData"/> </dataFillCtrl> </command> </fillingAlgorithm></code></span></pre> </blockquote> <p> </p> </div> <p>В примере мы видим три команды заполнения контролов. Кратко рассмотрим теги содержащиеся в описании команд:</p> <ul> <li> <p><strong>description</strong> - словесное описание команды, необходимо для упрощения редактирования шаблона и отображается в сообщения об ошибке, облегчая отладку шаблона. </p> </li> <li> <p><strong>dataFillCtrl</strong> - содержит данные целевого контрола формы.</p> </li> <li> <p><strong>fillingType </strong>- код алгоритма заполнения.</p> </li> <li> <p><strong>clearCtrlText</strong> - флаг очистки контрола перед заполнением. Если 1 – текст контрола будет очищен, если 0 – к тексту контрола добавится текст заполнения. Работает только для кода алгоритма заполнения cftSetText</p> </li> <li> <p><strong>ctrl</strong> - содержит параметры целевого контрола - в ходе выполнения данной команды SSO Agent будет искать на форме контрол, соответствующий данному описанию. Если ни один контрол не будет найден, то произойдет ошибка заполнения. Данный тип команды подходит для тех контролов, которые могут быть точно описаны в шаблоне (описание которых не совпадает с описание любого другого контрола на форме).</p> </li> <li> <p><strong>fieldValueInfo::field</strong> - код значения для заполнения поля формы (например field="ffUserName" - значение имени пользователя)</p> </li> </ul> <p> </p> <p>В случае, если контрол поддерживает использование SetText, но его нельзя точно описать с помощью его параметров, то можно использовать тип команды <strong>ctFillCurrentCtrl</strong>, заполняющий контрол находящийся в фокусе. В данном случае необходимо установить фокус в данный контрол посредством других команд (описание этих команд вы найдете ниже, в описании алгоритма эмуляци ввода).</p> <p>Пример команды:</p> <div> <blockquote> <pre><span style="font-size: 12pt;"><code> <command type="ctFillCurrentCtrl"> <description>Ввести имя пользователя</description> <dataFillCurrentCtrl clearCtrlText="1" fillingType="cftSetText"> <fieldValueInfo field="ffUserName"/> </dataFillCurrentCtrl></code></span><br /><span style="font-size: 12pt;"><code> </command></code></span></pre> </blockquote> </div> <p><br /><br /></p> <p>Если метод SetText не работает в целевой форме, то необходимо использовать <strong>эмуляцию ввода</strong>. Данный способ использует эмуляцию нажатия и отпускания клавиш клавиатуры. Команды данного алгоритма обладают типом<strong>ctFillCurrentCtrl</strong>, т.е. заполняют только контрол, находящийся в фокусе.</p> <p>Пример алгоритма заполнения:<br /> <br /> </p> <div class="codebox"> <blockquote> <pre><span style="font-size: 12pt;"><code> <fillingAlgorithm> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctPosition"> <description>Перейти на контрол имени пользователя</description> <dataPosition waitIntervalMs="50"> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"> <position x="159" y="15"/> <size cx="189" cy="23"/> </ctrl> </dataPosition> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctFillCurrentCtrl"> <description>Ввести имя пользователя</description> <dataFillCurrentCtrl clearCtrlText="1"> <fieldValueInfo field="ffUserName"/> </dataFillCurrentCtrl> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Перейти на следующий контрол</description> <dataControl type="cctTab" waitIntervalMs="50"/> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctFillCurrentCtrl"> <description>Ввести пароль</description> <dataFillCurrentCtrl clearCtrlText="1"> <fieldValueInfo field="ffPassword"/> </dataFillCurrentCtrl> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Перейти на следующий контрол</description> <dataControl type="cctTab" waitIntervalMs="50"/> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Нажать на OK</description> <dataControl type="cctEnter" waitIntervalMs="50"/> </command> </fillingAlgorithm></code></span></pre> </blockquote> </div> <p>В данном примере мы видим последовательность команд среди которых:<br /> </p> <ul> <li> <p>команда с параметром <strong>type="ctWait"</strong> добавляет паузу в алгоритм заполнения. Паузы позволяют избежать ошибок при переходе между полями и заполнением контролов. Параметр periodMs определяет продолжительность паузы в миллисекундах.</p> </li> <li> <p>команда с параметром<strong> type="ctPosition"</strong> - переводит фокус на конкретный контрол, параметры которого описаны в команде. Шаблонизатор в данной команде использует описание контрола, указанного как поле имени пользователя.</p> </li> <li> <p>команда с параметром <strong>type="ctControl"</strong> осуществляет перевод фокуса. Перевод осуществяется за счет эмуляции нажатия клавиши Tab.</p> </li> </ul> <p>Замечание: команды паузы и перевода контрола можно добавлять в алгоритм заполнения методом SetText по необходимости.</p>'
contentstext = 'ВЫБОР АЛГОРИТМА ЗАПОЛНЕНИЯ ПРИ СОЗДАНИИ ШАБЛОНА. В шаблонизаторе существует два алгоритма заполнения: на основе SETTEXT и ЭМУЛЯЦИЯ ВВОДА. НА ОСНОВЕ SETTEXT - данный алгоритм заполнения основан на стандартном методе контролов SetText. Основным требован...'
kbarticleid = '142'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Задержки при переходе между контролами при эмуляции ввода'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1848'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457952508'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Мы написали шаблон для целевого win32-приложения с эмуляцией ввода, но приходится ждать по 10-20 секунд между переходами по контролам по Tab, несмотря на то, что выставленные задержки минимальны (несколько миллисекунд).</p> <p><strong><span class="bbu">Ответ</span></strong><br />Вариант 1. В команду табуляции попробуйте добавить тэг disableProcessingResultTracking:</p> <div class="codebox"> <pre><code> <command> <type>ctControl</type> <description>Перейти на следующий контрол</description> <dataControl> <type>cctTab</type> <waitIntervalMs>50</waitIntervalMs> <disableProcessingResultTracking>1</disableProcessingResultTracking> </dataControl> </command></code></pre> </div> <p>Вариант 2. Попробуйте вместо табуляции использовать эмуляцию перехода по стрелкам, если приложение допускает это:</p> <div class="codebox"> <pre><code> <command> <type>ctControl</type> <description>Нажать клавижу вверх</description> <dataControl> <type>cctUp</type> <waitIntervalMs>50</waitIntervalMs> </dataControl> </command> <command> <type>ctControl</type> <description>Нажать клавишу вниз</description> <dataControl> <type>cctDown</type> <waitIntervalMs>50</waitIntervalMs> </dataControl> </command></code></pre> </div>'
contentstext = 'ВОПРОС Мы написали шаблон для целевого win32-приложения с эмуляцией ввода, но приходится ждать по 10-20 секунд между переходами по контролам по Tab, несмотря на то, что выставленные задержки минимальны (несколько миллисекунд). ОТВЕТ Вариант 1. В команду...'
125 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Задержки при переходе между контролами при эмуляции ввода'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1848'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457952508'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Мы написали шаблон для целевого win32-приложения с эмуляцией ввода, но приходится ждать по 10-20 секунд между переходами по контролам по Tab, несмотря на то, что выставленные задержки минимальны (несколько миллисекунд).</p> <p><strong><span class="bbu">Ответ</span></strong><br />Вариант 1. В команду табуляции попробуйте добавить тэг disableProcessingResultTracking:</p> <div class="codebox"> <pre><code> <command> <type>ctControl</type> <description>Перейти на следующий контрол</description> <dataControl> <type>cctTab</type> <waitIntervalMs>50</waitIntervalMs> <disableProcessingResultTracking>1</disableProcessingResultTracking> </dataControl> </command></code></pre> </div> <p>Вариант 2. Попробуйте вместо табуляции использовать эмуляцию перехода по стрелкам, если приложение допускает это:</p> <div class="codebox"> <pre><code> <command> <type>ctControl</type> <description>Нажать клавижу вверх</description> <dataControl> <type>cctUp</type> <waitIntervalMs>50</waitIntervalMs> </dataControl> </command> <command> <type>ctControl</type> <description>Нажать клавишу вниз</description> <dataControl> <type>cctDown</type> <waitIntervalMs>50</waitIntervalMs> </dataControl> </command></code></pre> </div>'
contentstext = 'ВОПРОС Мы написали шаблон для целевого win32-приложения с эмуляцией ввода, но приходится ждать по 10-20 секунд между переходами по контролам по Tab, несмотря на то, что выставленные задержки минимальны (несколько миллисекунд). ОТВЕТ Вариант 1. В команду...'
kbarticleid = '125'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Информация для подготовки шаблона веб-приложения'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1942'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457697605'
articlestatus = '1'
articlerating = '5'
ratinghits = '1'
ratingcount = '5'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Какая техническая информация нужна для подготовки шаблона для целевого веб-приложения?</p> <p><strong><span class="bbu">Ответ</span></strong><br />1. Название браузера (в том числе его версия, разрядность и язык локализации), под которым выполняется целевое веб-приложение<br />2. Скриншот из браузера со страницей авторизации/смены пароля в приложении<br />3. URL-адрес к странице авторизации/смены пароля в приложении<br />4. Слепок страницы авторизации/смены пароля, сделанный в браузере в формате MHT. После создания слепка необходимо запустить его при отсутствии сети для проверки того, что:</p> <ul> <li>форма авторизации в сохранённом слепке присутствует и выглядит корректно </li> <li>все элементы страницы сохранены и не подгружаются из внутренней сети клиента</li> </ul> <p>5. (для формы смены пароля) Требования к паролю (минимальная и максимальная длина пароля, допустимые символы)</p>'
contentstext = 'ВОПРОС Какая техническая информация нужна для подготовки шаблона для целевого веб-приложения? ОТВЕТ 1. Название браузера (в том числе его версия, разрядность и язык локализации), под которым выполняется целевое веб-приложение 2. Скриншот из браузера со ...'
140 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Информация для подготовки шаблона веб-приложения'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1942'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457697605'
articlestatus = '1'
articlerating = '5'
ratinghits = '1'
ratingcount = '5'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Какая техническая информация нужна для подготовки шаблона для целевого веб-приложения?</p> <p><strong><span class="bbu">Ответ</span></strong><br />1. Название браузера (в том числе его версия, разрядность и язык локализации), под которым выполняется целевое веб-приложение<br />2. Скриншот из браузера со страницей авторизации/смены пароля в приложении<br />3. URL-адрес к странице авторизации/смены пароля в приложении<br />4. Слепок страницы авторизации/смены пароля, сделанный в браузере в формате MHT. После создания слепка необходимо запустить его при отсутствии сети для проверки того, что:</p> <ul> <li>форма авторизации в сохранённом слепке присутствует и выглядит корректно </li> <li>все элементы страницы сохранены и не подгружаются из внутренней сети клиента</li> </ul> <p>5. (для формы смены пароля) Требования к паролю (минимальная и максимальная длина пароля, допустимые символы)</p>'
contentstext = 'ВОПРОС Какая техническая информация нужна для подготовки шаблона для целевого веб-приложения? ОТВЕТ 1. Название браузера (в том числе его версия, разрядность и язык локализации), под которым выполняется целевое веб-приложение 2. Скриншот из браузера со ...'
kbarticleid = '140'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Кастомные поля'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '5771'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457948309'
articlestatus = '1'
articlerating = '5'
ratinghits = '1'
ratingcount = '5'
seosubject = null
contents = '<p>В некоторых приложениях для авторизации, помимо логина и пароля, требуются дополнительные параметры (например, сервер, база данных и т.п.). Поля для задания дополнительных параметров авторизации в терминологии Indeed-Id называются <em><strong>кастомными полями</strong></em>.</p> <p>Для обработки кастомного поля (обучение, заполнение поля и т.п.) в шаблоне приложения необходимо: </p> <ul> <li> <p>описать кастомное поле;</p> </li> <li> <p>описать команду заполнения кастомного поля в алгоритме заполнения.</p> </li> </ul> <p><strong>СИНТАКСИС</strong></p> <pre><code><customFields><br /> <customField id=<em>"ID поля"</em>></code><br /><code> <field emptyStringValueForbidden=<em>"флаг пустого значения"</em> editLengthSymbols=<em>"ширина поля"</em> alternateLogin=<em>"флаг альтернативного логина"</em>></code><br /><code> <displayedName><em>имя поля</em></displayedName></code><br /><code> <value type=<em>"тип значения поля"</em>></code><br /><code> <str><em>значение поля</em></str></code><br /><code> </value></code><br /><code> </field></code><br /><code> </customField></code><br /><code> ...<br /></customFields></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><em><strong><customFields></strong></em><br />Структура задает описание кастомных полей, которые могут использоваться для заполнения форм приложения.</p> <p>Опциональный параметр. Значение по умолчанию: пустой набор кастомных полей.</p> <p><em><strong><customField></strong></em><br />Структура задает описание кастомного поля в виде набора пар <em><идентификатор поля; описание поля></em>.</p> <p><strong><span class="bbu">Атрибуты</span></strong><br /><strong><em>id</em></strong><br />Идентификатор кастомного поля.</p> <p>Идентификатор используется при определении порядка кастомных полей для самообучения и при определении кастомного поля в алгоритме заполения.</p> <p>Значение: число, строка.</p> <p>Идентификатор должен быть уникальным в пределах описания кастомных полей. В случае, если для нескольких полей заданы одинаковые идентификаторы, идентификатор будет присвоен тому полю, описание которого указано первым. Описания остальных полей с таким же индентификатором при обработке шаблона не учитываются.</p> <p><em><strong><field></strong></em><br />Структура задает описание кастомного поля.</p> <p><strong><span class="bbu">Атрибуты</span></strong><br /><em><strong>emptyStringValueForbidden</strong></em><br />Флаг запрета пустых строковых значений поля.</p> <p>Возможные значения:<br />0 - поле может иметь пустое значение;<br />1 - поле не может иметь пустое значение.</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><em><strong>editLengthSymbols</strong></em><br />Ширина поля для редактирования значения кастомного поля при самообучении.</p> <p>Значение по умолчанию: 43 символа.</p> <p>Атрибут определяет отображаемый размер поля для редактирования значения кастомного поля в окне самообучения и не определяет количество символов, которое можно задать в поле.</p> <p>Значение атрибута имеет смысл только для кастомных полей с самообучением. Для других кастомных полей значение атрибута при обработке шаблона не учитывается.</p> <p><em><strong>alternateLogin</strong></em><br />Флаг использования значения кастомного поля в качестве альтернативного имени учетной записи SSO.</p> <p>Возможные значения:<br />0 - значение поля не используется в качестве альтернативного имени учетной записи SSO;<br />1 - значение поля используется в качестве альтернативного имени учетной записи SSO.</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p>В качестве альтернативного имени учетной записи SSO целесообразно использовать самообучаемое кастомное поле.</p> <p>Обучение кастомного поля происходит при обучении имени учетной записи SSO пользователем, при этом процесс обучения не отличается от стандартного обучения учетной записи.</p> <p>Обученное значение кастомного поля при соответсвующем описании алгоритма заполнения можно использовать для заполнения поля логина целевого приложения.</p> <p><em><strong><displayedName></strong></em><br />Имя кастомного поля, отображаемое в ESSO Консоли в настройках учетной записи SSO.</p> <p>Значение: непустая строка.</p> <p><em><strong><value></strong></em><br />Структура задает значение кастомного поля.</p> <p>Опциональный параметр. Значение по умолчанию: пусто.</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><strong>type</strong><br />Тип значения кастомного поля.</p> <p>Обязательный параметр.</p> <p>Возможные значения:<br /> <em>vtString</em> строковое значение</p> <p><em><strong><str></strong></em><br />Строковое значение кастомного поля.</p> <p>Задание тега имеет смысл только в том случае, если для кастомного поля задан строковый тип ( т.е. тогда, когда тег <em><strong>type</strong></em>имеет значение <em><strong>vtString</strong></em>). В остальных случаях значение тега при обработке шаблона не учитывается.</p> <p>Заданное значение является значением по умолчанию и используется при добавлении новой записи SSO для пользователя. Для существующей записи пользователя текущее значение поля изменено не будет.</p> <p>Если для поля задан строковый тип (тег <em><strong>type </strong></em>имеет значение <em><strong>vtString</strong></em>) при запрете пустых строковых значениях поля (атрибут <em><strong>emptyStringValueForbidden </strong></em>имеет значение 1), значение тега <em><strong><str></strong></em> должно быть непустой строкой. Если тег<em><strong><str></strong></em> при указанных условиях имеет пустое значение, кастомное поле будет определено как самообучаемое.</p> <p><strong>САМООБУЧАЕМЫЕ КАСТОМНЫЕ ПОЛЯ</strong></p> <p><em><strong>Самообучаемым кастомным полем</strong></em> называется кастомное поле, значение которого задается пользователем при обучении учетной записи SSO для приложения.</p> <p>Для того, чтобы определить самообучаемое кастомное поле, необходимо: </p> <ul> <li> <p>установить флаг запрета пустых строковых значений поля (т.е. установить значение атрибута<em><strong>emptyStringValueForbidden </strong></em>равным 1);</p> </li> <li> <p>удалить из описания значение поля (тег <em><strong><value></strong></em>)</p> </li> </ul> <p><strong>СИНТАКСИС</strong></p> <p><customField id=<em>"ID поля"</em>><br /> <field emptyStringValueForbidden=<em>"флаг пустого значения"</em> editLengthSymbols=<em>"ширина поля"</em> alternateLogin=<em>"флаг альтернативного логина"</em>><br /> <displayedName><em>имя поля</em></displayedName><br /> </field><br /></customField></p> <p>В ESSO Консоли самообучаемое кастомное поле отображается с соответствующим комментарием.</p> <p>Порядок обучения кастомных полей может быть определен структурой <em><strong><customFieldsSelfEnrollmentOrder></strong></em></p> <p><strong>ПОРЯДОК ОБУЧЕНИЯ КАСТОМНЫХ ПОЛЕЙ</strong></p> <p>В некоторых случаях обучение кастомных полей необходимо выполнять в определенном порядке. Шаблоны ESSO позволяют задать этот порядок.</p> <p><strong>СИНТАКСИС</strong></p> <p><customFieldsSelfEnrollmentOrder></p> <p> <fieldId><em>идентификатор кастомного поля 1</em></fieldId><br /> …<br /> <fieldId><em>идентификатор кастомного поля N</em></fieldId></p> <p></customFieldsSelfEnrollmentOrder></p> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><customFieldsSelfEnrollmentOrder></em></strong><br />Структура определяет порядок отображения кастомных полей в ESSO Консоли и порядок обучения кастомных полей.</p> <p>Сначала отображаются и обучаются поля, для которых порядок явно указан, затем - остальные поля в порядке их перечисления в шаблоне.</p> <p>Опциональный параметр. Если порядок обучения кастомных полей не задан, отображение в ESSO Консоли и обучение полей выполняется в порядке, соответствующем последовательности описания самообучаемых кастомных полей в структуре <em><strong><customFileds></strong></em>.</p> <p><em><strong><fieldId></strong></em><br />Идентификатор кастомного поля.</p> <p>Кастомное поле с указанным идентификатором должно быть описано в структуре <em><strong><customFileds></strong></em>.</p> <p><strong>ПРИМЕРЫ</strong></p> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение кастомного поля, обучаемого пользователем;</em></p> </li> <li> <p><em>определение кастомного поля с предопределенным строковым значением;</em></p> </li> <li> <p><em>определение ширины поля для редактирования значения кастомного поля при самообучении.</em></p> </li> </ul> <p>Описание кастомных полей:</p> <div class="codebox"> <pre><code><customFields> <customField id="fldServer"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>Сервер:</displayedName> </field> </customField> <customField id="fldDB"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>База данных:</displayedName> <value type="vtString"> <str>TestDB</str> </value> </field> </customField> </customFields></code></pre> </div> <p>В ESSO Консоли в настройках учетной записи SSO будут отображаться два дополнительных поля: “Сервер” и “База данных”.</p> <p>Поле “Сервер” (идентификатор fldServer) является самообучаемым кастомным полем. Для этого поля в окне самообучения отображается поле, ширина которого соответствует 10 символам.</p> <p>Поле “База данных” (идентификатор fldDB) имеет строковый тип. По умолчанию это поле имеет значение TestDB (если не было задано другое значение в ESSO Консоли). Обучение пользователем данного поля запрещено. Значение ширины поля для данного кастомного поля не учитывается.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.CustomFields.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>обучение кастомного поля в качестве альтернативного имени учетной записи SSO;</em></p> </li> <li> <p><em>заполнение кастомных полей в целевом приложении, в том числе заполнение поля логина обученным значением кастомного поля.</em></p> </li> </ul> <p>Описание кастомных полей:</p> <div class="codebox"> <pre><code><customFields> <customField id="fldServer"> <field emptyStringValueForbidden="1" editLengthSymbols="5" alternateLogin="0"> <displayedName>Сервер:</displayedName> </field> </customField> <customField id="fldUserName"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="1"> <displayedName>Альтернативное имя учетной записи:</displayedName> </field> </customField> </customFields></code></pre> </div> <p>Описание команды заполнения поля логина значением кастомного поля в алгоритме заполнения:</p> <div class="codebox"> <pre><code><fillingAlgorithm> ... <command type="ctFillCtrl"> <description>Ввести имя пользователя</description> <dataFillCtrl fillingType="cftSetText"> <ctrl className="Edit" ctrlId="1005"> </ctrl> <fieldValueInfo field="ffCustom" customFieldId="fldUserName"/> </dataFillCtrl> </command> ... </fillingAlgorithm> </code></pre> </div> <p>В приведенном примере пользователю необходимо обучить имя учетно записи при первом входе в целевое приложение. При этом кастомное поле, используемое в качестве альтернативной учетной записи SSO (поле с идентификатором<em>fldUserName</em>), будет обучено тем же значением. Обученное значение будет подставлено в поле логина при заполнении формы входа целевого приложения.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.CustomFields.Example2.app</em>).</p> <p><strong>Пример 3</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение порядка обучения кастомных полей.</em></p> </li> </ul> <p>Описание кастомных полей:</p> <div class="codebox"> <pre><code><customFields> <customField id="fldServer3"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>Сервер3:</displayedName> </field> </customField> <customField id="fldServer1"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> displayedName>Сервер1:</displayedName> </field> </customField> <customField id="fldDB"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>База данных:</displayedName> <value type="vtString"> <str>TestDB</str> /value> </field> </customField> <customField id="fldServer2"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>Сервер2:</displayedName> </field> </customField> </customFields></code></pre> </div> <p>Описание порядка обучения кастомных полей:</p> <div class="codebox"> <pre><code><customFieldsSelfEnrollmentOrder> <fieldId>fldDB</fieldId> <fieldId>fldServer1</fieldId> </customFieldsSelfEnrollmentOrder></code></pre> </div> <p>В приведенном примере кастомные поля при обучении будут отображаться в следующей последовательности: </p> <ul> <li> <p>Сервер 1 (<em>id="fldServer1"</em>)</p> </li> <li> <p>Сервер 3 (<em>id="fldServer3"</em>)</p> </li> <li> <p>Сервер 2 (<em>id="fldServer2"</em>)</p> </li> </ul> <p><br />Поле "База данных" отображаться при обучении не будет, т.к. оно не является самообучаемым полем.</p> <p>В ESSO Консоли кастомные поля будут отображаться в следующей последовательности: </p> <ul> <li> <p>База данных (<em>id=" fldDB"</em>)</p> </li> <li> <p>Сервер 1 (<em>id="fldServer1"</em>)</p> </li> <li> <p>Сервер 3 (<em>id="fldServer3"</em>)</p> </li> <li> <p>Сервер 2 (<em>id="fldServer2"</em>)</p> </li> </ul> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.CustomFields.Example3.app</em>).</p>'
contentstext = 'В некоторых приложениях для авторизации, помимо логина и пароля, требуются дополнительные параметры (например, сервер, база данных и т.п.). Поля для задания дополнительных параметров авторизации в терминологии Indeed-Id называются _КАСТОМНЫМИ ПОЛЯМИ_. Д...'
139 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Кастомные поля'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '5771'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457948309'
articlestatus = '1'
articlerating = '5'
ratinghits = '1'
ratingcount = '5'
seosubject = null
contents = '<p>В некоторых приложениях для авторизации, помимо логина и пароля, требуются дополнительные параметры (например, сервер, база данных и т.п.). Поля для задания дополнительных параметров авторизации в терминологии Indeed-Id называются <em><strong>кастомными полями</strong></em>.</p> <p>Для обработки кастомного поля (обучение, заполнение поля и т.п.) в шаблоне приложения необходимо: </p> <ul> <li> <p>описать кастомное поле;</p> </li> <li> <p>описать команду заполнения кастомного поля в алгоритме заполнения.</p> </li> </ul> <p><strong>СИНТАКСИС</strong></p> <pre><code><customFields><br /> <customField id=<em>"ID поля"</em>></code><br /><code> <field emptyStringValueForbidden=<em>"флаг пустого значения"</em> editLengthSymbols=<em>"ширина поля"</em> alternateLogin=<em>"флаг альтернативного логина"</em>></code><br /><code> <displayedName><em>имя поля</em></displayedName></code><br /><code> <value type=<em>"тип значения поля"</em>></code><br /><code> <str><em>значение поля</em></str></code><br /><code> </value></code><br /><code> </field></code><br /><code> </customField></code><br /><code> ...<br /></customFields></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><em><strong><customFields></strong></em><br />Структура задает описание кастомных полей, которые могут использоваться для заполнения форм приложения.</p> <p>Опциональный параметр. Значение по умолчанию: пустой набор кастомных полей.</p> <p><em><strong><customField></strong></em><br />Структура задает описание кастомного поля в виде набора пар <em><идентификатор поля; описание поля></em>.</p> <p><strong><span class="bbu">Атрибуты</span></strong><br /><strong><em>id</em></strong><br />Идентификатор кастомного поля.</p> <p>Идентификатор используется при определении порядка кастомных полей для самообучения и при определении кастомного поля в алгоритме заполения.</p> <p>Значение: число, строка.</p> <p>Идентификатор должен быть уникальным в пределах описания кастомных полей. В случае, если для нескольких полей заданы одинаковые идентификаторы, идентификатор будет присвоен тому полю, описание которого указано первым. Описания остальных полей с таким же индентификатором при обработке шаблона не учитываются.</p> <p><em><strong><field></strong></em><br />Структура задает описание кастомного поля.</p> <p><strong><span class="bbu">Атрибуты</span></strong><br /><em><strong>emptyStringValueForbidden</strong></em><br />Флаг запрета пустых строковых значений поля.</p> <p>Возможные значения:<br />0 - поле может иметь пустое значение;<br />1 - поле не может иметь пустое значение.</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><em><strong>editLengthSymbols</strong></em><br />Ширина поля для редактирования значения кастомного поля при самообучении.</p> <p>Значение по умолчанию: 43 символа.</p> <p>Атрибут определяет отображаемый размер поля для редактирования значения кастомного поля в окне самообучения и не определяет количество символов, которое можно задать в поле.</p> <p>Значение атрибута имеет смысл только для кастомных полей с самообучением. Для других кастомных полей значение атрибута при обработке шаблона не учитывается.</p> <p><em><strong>alternateLogin</strong></em><br />Флаг использования значения кастомного поля в качестве альтернативного имени учетной записи SSO.</p> <p>Возможные значения:<br />0 - значение поля не используется в качестве альтернативного имени учетной записи SSO;<br />1 - значение поля используется в качестве альтернативного имени учетной записи SSO.</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p>В качестве альтернативного имени учетной записи SSO целесообразно использовать самообучаемое кастомное поле.</p> <p>Обучение кастомного поля происходит при обучении имени учетной записи SSO пользователем, при этом процесс обучения не отличается от стандартного обучения учетной записи.</p> <p>Обученное значение кастомного поля при соответсвующем описании алгоритма заполнения можно использовать для заполнения поля логина целевого приложения.</p> <p><em><strong><displayedName></strong></em><br />Имя кастомного поля, отображаемое в ESSO Консоли в настройках учетной записи SSO.</p> <p>Значение: непустая строка.</p> <p><em><strong><value></strong></em><br />Структура задает значение кастомного поля.</p> <p>Опциональный параметр. Значение по умолчанию: пусто.</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><strong>type</strong><br />Тип значения кастомного поля.</p> <p>Обязательный параметр.</p> <p>Возможные значения:<br /> <em>vtString</em> строковое значение</p> <p><em><strong><str></strong></em><br />Строковое значение кастомного поля.</p> <p>Задание тега имеет смысл только в том случае, если для кастомного поля задан строковый тип ( т.е. тогда, когда тег <em><strong>type</strong></em>имеет значение <em><strong>vtString</strong></em>). В остальных случаях значение тега при обработке шаблона не учитывается.</p> <p>Заданное значение является значением по умолчанию и используется при добавлении новой записи SSO для пользователя. Для существующей записи пользователя текущее значение поля изменено не будет.</p> <p>Если для поля задан строковый тип (тег <em><strong>type </strong></em>имеет значение <em><strong>vtString</strong></em>) при запрете пустых строковых значениях поля (атрибут <em><strong>emptyStringValueForbidden </strong></em>имеет значение 1), значение тега <em><strong><str></strong></em> должно быть непустой строкой. Если тег<em><strong><str></strong></em> при указанных условиях имеет пустое значение, кастомное поле будет определено как самообучаемое.</p> <p><strong>САМООБУЧАЕМЫЕ КАСТОМНЫЕ ПОЛЯ</strong></p> <p><em><strong>Самообучаемым кастомным полем</strong></em> называется кастомное поле, значение которого задается пользователем при обучении учетной записи SSO для приложения.</p> <p>Для того, чтобы определить самообучаемое кастомное поле, необходимо: </p> <ul> <li> <p>установить флаг запрета пустых строковых значений поля (т.е. установить значение атрибута<em><strong>emptyStringValueForbidden </strong></em>равным 1);</p> </li> <li> <p>удалить из описания значение поля (тег <em><strong><value></strong></em>)</p> </li> </ul> <p><strong>СИНТАКСИС</strong></p> <p><customField id=<em>"ID поля"</em>><br /> <field emptyStringValueForbidden=<em>"флаг пустого значения"</em> editLengthSymbols=<em>"ширина поля"</em> alternateLogin=<em>"флаг альтернативного логина"</em>><br /> <displayedName><em>имя поля</em></displayedName><br /> </field><br /></customField></p> <p>В ESSO Консоли самообучаемое кастомное поле отображается с соответствующим комментарием.</p> <p>Порядок обучения кастомных полей может быть определен структурой <em><strong><customFieldsSelfEnrollmentOrder></strong></em></p> <p><strong>ПОРЯДОК ОБУЧЕНИЯ КАСТОМНЫХ ПОЛЕЙ</strong></p> <p>В некоторых случаях обучение кастомных полей необходимо выполнять в определенном порядке. Шаблоны ESSO позволяют задать этот порядок.</p> <p><strong>СИНТАКСИС</strong></p> <p><customFieldsSelfEnrollmentOrder></p> <p> <fieldId><em>идентификатор кастомного поля 1</em></fieldId><br /> …<br /> <fieldId><em>идентификатор кастомного поля N</em></fieldId></p> <p></customFieldsSelfEnrollmentOrder></p> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><customFieldsSelfEnrollmentOrder></em></strong><br />Структура определяет порядок отображения кастомных полей в ESSO Консоли и порядок обучения кастомных полей.</p> <p>Сначала отображаются и обучаются поля, для которых порядок явно указан, затем - остальные поля в порядке их перечисления в шаблоне.</p> <p>Опциональный параметр. Если порядок обучения кастомных полей не задан, отображение в ESSO Консоли и обучение полей выполняется в порядке, соответствующем последовательности описания самообучаемых кастомных полей в структуре <em><strong><customFileds></strong></em>.</p> <p><em><strong><fieldId></strong></em><br />Идентификатор кастомного поля.</p> <p>Кастомное поле с указанным идентификатором должно быть описано в структуре <em><strong><customFileds></strong></em>.</p> <p><strong>ПРИМЕРЫ</strong></p> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение кастомного поля, обучаемого пользователем;</em></p> </li> <li> <p><em>определение кастомного поля с предопределенным строковым значением;</em></p> </li> <li> <p><em>определение ширины поля для редактирования значения кастомного поля при самообучении.</em></p> </li> </ul> <p>Описание кастомных полей:</p> <div class="codebox"> <pre><code><customFields> <customField id="fldServer"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>Сервер:</displayedName> </field> </customField> <customField id="fldDB"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>База данных:</displayedName> <value type="vtString"> <str>TestDB</str> </value> </field> </customField> </customFields></code></pre> </div> <p>В ESSO Консоли в настройках учетной записи SSO будут отображаться два дополнительных поля: “Сервер” и “База данных”.</p> <p>Поле “Сервер” (идентификатор fldServer) является самообучаемым кастомным полем. Для этого поля в окне самообучения отображается поле, ширина которого соответствует 10 символам.</p> <p>Поле “База данных” (идентификатор fldDB) имеет строковый тип. По умолчанию это поле имеет значение TestDB (если не было задано другое значение в ESSO Консоли). Обучение пользователем данного поля запрещено. Значение ширины поля для данного кастомного поля не учитывается.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.CustomFields.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>обучение кастомного поля в качестве альтернативного имени учетной записи SSO;</em></p> </li> <li> <p><em>заполнение кастомных полей в целевом приложении, в том числе заполнение поля логина обученным значением кастомного поля.</em></p> </li> </ul> <p>Описание кастомных полей:</p> <div class="codebox"> <pre><code><customFields> <customField id="fldServer"> <field emptyStringValueForbidden="1" editLengthSymbols="5" alternateLogin="0"> <displayedName>Сервер:</displayedName> </field> </customField> <customField id="fldUserName"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="1"> <displayedName>Альтернативное имя учетной записи:</displayedName> </field> </customField> </customFields></code></pre> </div> <p>Описание команды заполнения поля логина значением кастомного поля в алгоритме заполнения:</p> <div class="codebox"> <pre><code><fillingAlgorithm> ... <command type="ctFillCtrl"> <description>Ввести имя пользователя</description> <dataFillCtrl fillingType="cftSetText"> <ctrl className="Edit" ctrlId="1005"> </ctrl> <fieldValueInfo field="ffCustom" customFieldId="fldUserName"/> </dataFillCtrl> </command> ... </fillingAlgorithm> </code></pre> </div> <p>В приведенном примере пользователю необходимо обучить имя учетно записи при первом входе в целевое приложение. При этом кастомное поле, используемое в качестве альтернативной учетной записи SSO (поле с идентификатором<em>fldUserName</em>), будет обучено тем же значением. Обученное значение будет подставлено в поле логина при заполнении формы входа целевого приложения.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.CustomFields.Example2.app</em>).</p> <p><strong>Пример 3</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение порядка обучения кастомных полей.</em></p> </li> </ul> <p>Описание кастомных полей:</p> <div class="codebox"> <pre><code><customFields> <customField id="fldServer3"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>Сервер3:</displayedName> </field> </customField> <customField id="fldServer1"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> displayedName>Сервер1:</displayedName> </field> </customField> <customField id="fldDB"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>База данных:</displayedName> <value type="vtString"> <str>TestDB</str> /value> </field> </customField> <customField id="fldServer2"> <field emptyStringValueForbidden="1" editLengthSymbols="10" alternateLogin="0"> <displayedName>Сервер2:</displayedName> </field> </customField> </customFields></code></pre> </div> <p>Описание порядка обучения кастомных полей:</p> <div class="codebox"> <pre><code><customFieldsSelfEnrollmentOrder> <fieldId>fldDB</fieldId> <fieldId>fldServer1</fieldId> </customFieldsSelfEnrollmentOrder></code></pre> </div> <p>В приведенном примере кастомные поля при обучении будут отображаться в следующей последовательности: </p> <ul> <li> <p>Сервер 1 (<em>id="fldServer1"</em>)</p> </li> <li> <p>Сервер 3 (<em>id="fldServer3"</em>)</p> </li> <li> <p>Сервер 2 (<em>id="fldServer2"</em>)</p> </li> </ul> <p><br />Поле "База данных" отображаться при обучении не будет, т.к. оно не является самообучаемым полем.</p> <p>В ESSO Консоли кастомные поля будут отображаться в следующей последовательности: </p> <ul> <li> <p>База данных (<em>id=" fldDB"</em>)</p> </li> <li> <p>Сервер 1 (<em>id="fldServer1"</em>)</p> </li> <li> <p>Сервер 3 (<em>id="fldServer3"</em>)</p> </li> <li> <p>Сервер 2 (<em>id="fldServer2"</em>)</p> </li> </ul> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.CustomFields.Example3.app</em>).</p>'
contentstext = 'В некоторых приложениях для авторизации, помимо логина и пароля, требуются дополнительные параметры (например, сервер, база данных и т.п.). Поля для задания дополнительных параметров авторизации в терминологии Indeed-Id называются _КАСТОМНЫМИ ПОЛЯМИ_. Д...'
kbarticleid = '139'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Матчинг приложения'
isedited = '1'
editeddateline = '1457947503'
editedstaffid = '5'
views = '2000'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457947439'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><em>Матчингом приложения</em></strong> называется процесс определения целевого приложения ESSO Агентом.</p> <p>Механизм матчинга целевого приложения ESSO Агентом основан на сопоставлении данных, указанных в шаблоне, с данными приложения. После загрузки шаблона в систему ESSO, ESSO Агент из множества приложений, с которыми работает пользователь, обрабатывает только те приложения, параметры которых соответствуют заданным в шаблоне данным.</p> <p>Параметрами матчинга для Win32-приложений могут быть пути, контрольные суммы, размер, описания исполняемых файлов приложения. Матчинг Web-приложений выполяется по URL-адресу страницы.</p> <p>Матчинг форм приложения выполняется отдельно от матчинга самого приложения, поэтому эти два понятия нельзя путать.</p> <p><strong>СИНТАКСИС</strong></p> <pre><code><matchingDetails></code><br /><code> <components><br /> <component type=”тип компонента” componentId=”ID компонента”></code><br /><code> <componentWeb></code><br /><code> <url isRegex=”флаг регулярного выражения”>URL страницы</url></code><br /><code> </componentWeb></code><br /><code> </component><br /> <component type=”тип компонента” componentId=”ID компонента”></code><br /><code> <componentWin32></code><br /><code> <paths></code><br /><code> <path>путь к файлу 1</path></code><br /><code> …</code><br /><code> <path>путь к файлу N</path></code><br /><code> </paths></code><br /><code> <crcs></code><br /><code> <crc fileSizeBytes=”размер файла 1 в байтах”>CRC файла 1</crc></code><br /><code> …</code><br /><code> <crc fileSizeBytes=”размер файла N в байтах” >CRC файла N</crc></code><br /><code> </crcs></code><br /><code> <fileDescription>Описание исполняемого файла </fileDescription></code><br /><code> </componentWin32></code><br /><code> </component><br /> </components></code><br /><code></matchingDetails></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><matchingDetails></em></strong><br />Структура описывает параметры матчинга приложения.</p> <p><strong><em><components></em></strong><br />Структура описывает компоненты приложения.</p> <p>Некоторые приложения имеют несколько представлений пользовательского интерфейса - как правило, это представления в виде Win32- и Web-приложений (например, веб-службы электронной почты). Представление пользовательского интерфейса в терминологии Indeed-Id называется <strong><em>компонентом приложения</em></strong>.</p> <p>Компоненты приложения можно реадактировать в ESSO Консоли (создавать и удалять компоненты через ESSO Консоль нельзя).</p> <p><strong><em><component></em></strong><br />Структура описывает компонент приложения.</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><em><strong>type</strong></em><br />Тип компонента приложения приложения.</p> <p>Представление в виде Win32-приложения называется <strong><em>Win32-компонентом приложения</em></strong>. Представление в виде Web-приложения называется <strong><em>Web-компонентом приложения</em></strong>.</p> <p>Возможные значения:</p> <p><em>CFormData::mtWin32</em> Win32-компонент приложения <br /><em>CFormData::mtWeb</em> Web-компонент приложения</p> <p>componentId<br />Идентификатор компонента приложения.</p> <p>Идентификатор компонента используется для привязки форм приложения к компоненту и представляет собой произвольную строку, уникальную в списке идентификаторов компонентов данного приложения.</p> <p>Для того, чтобы привязать форму к компоненту приложения, нужно в описании формы задать индентификатор соответствующего компонента:</p> <div class="codebox"> <pre><code><formData id="{74034A01-12DA-424F-B081-BB88F8010BE0}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="#32770" [b]componentId="&lt;Win32Component&gt;"[/b]> ... </matchingWin32> </matching> … </formData> </code></pre> </div> <p>Идентификатор может содержать специальные символы, для задания которых используются сущности, определенные в формате XML, а именно:</p> <p><strong>Символ</strong> <strong>Сущность</strong><br /> < &lt;<br /> > &gt;<br /> & &amp;<br /> " &quot;<br /> \' &apos;</p> <p><em>Пример:<br /><component type="CFormData::mtWeb" componentId="&lt;Web Component&gt;">... </component></em></p> <p><em>Приведенное описание определяет компонент с имененем <Web Component>.</em></p> <p>Идентификатор компонента отображается в ESSO Консоли в настройках приложения.</p> <p><strong><em><componentWeb></em></strong><br />Структура описывает Web-компонент приложения.</p> <p><strong><em><url></em></strong><br />URL страницы Web-приложения.</p> <p>Задает адрес, по которому будет выполняться матчинг Web-приложения.</p> <p>Значение может быть задано в виде текста или регулярного выражения (определяется флагом <em>isRegex</em>).</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><em><strong>isRegex</strong></em><br />Флаг представления URL страницы в виде регулярного выражения.</p> <p>Возможные значения:<br />0 - URL определяется текстом;<br />1 - URL определяется регулярным выражением.</p> <p><strong><em><componentWin32></em></strong><br />Структура описывает Win32-компонент приложения.</p> <p><strong><em><paths></em></strong><br />Структура задает пути исполняемых файлов компонентов приложения.</p> <p>Матчинг компонентов приложения выполняется по заданным путям.</p> <p>Параметр опциональный. Значение по умолчанию: пусто (нет путей).</p> <p><strong><em><path></em></strong><br />Путь исполняемого файла компонента приложения для матчинга.</p> <p><strong><em><crcs></em></strong><br />Структура задает контрольные суммы исполняемых файлов компонентов приложения.</p> <p>Значения структуры представлены парами <em><CRC, размер файла></em>.</p> <p>Параметр опциональный. Значение по умолчанию: пусто (нет пар <em><CRC, размер файла></em>).</p> <p><strong><em><crc></em></strong><br />Контрольная сумма исполняемого файла компонента приложения. Получить значение контрольной суммы для файла можно с помощью утилиты <em>IndeedID.App.Info.exe</em> (поставляется в составе дистрибутива Indeed-Id).</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><strong><em>fileSizeBytes</em></strong><br />Размер исполняемого файла компонента приложения.</p> <p>Получить размер файла можно с помощью утилиты <em>IndeedID.App.Info.exe</em> (поставляется в составе дистрибутива Indeed-Id).</p> <p><strong><em><fileDescription></em></strong><br />Описание исполняемого файла, указанное в его свойствах (в Version Info).</p> <p>Значение параметра может быть пустым, если описание не задано в свойствах файла или выполнять проверку описания не требуется.<br /><br /></p> <p>Описание параметров матчинга Win32- и Web-компонентов приложения:</p> <div class="codebox"> <pre><code><matchingDetails> <components> <component type="CFormData::mtWin32" componentId="&lt;Win32Component&gt;"> <componentWin32> <paths> <path>%ProgramFiles%\\Indeed-Id\\Enterprise SSO\\IndeedID.SSO.Test.App.exe</path> <path>C:\\IndeedID.SSO.Test.App.exe</path> </paths> <crcs> <crc fileSizeBytes="270848">4135804682</crc> </crcs> <fileDescription>Indeed-ID SSO test application</fileDescription> </componentWin32> </component> <component type="CFormData::mtWeb" componentId="WebComponent"> <componentWeb> <url isRegex="1">(.*)\\\\IndeedID\\.SSO\\.web\\.Test\\.App\\\\(.*)\\.htm.*</url> </componentWeb> </component> </components> </matchingDetails></code></pre> </div> <p>Описание форм входа для Win32- и Web-компонентов приложения (описания форм разблокировки и смены пароля аналогичны):</p> <div class="codebox"> <pre><code><opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{BC52204D-6573-418A-ABE3-2200910AC97B}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="#32770" componentId="&lt;Win32Component&gt;"> ... </matchingWin32> </matching> </formData> <formData id="{C3EBEB43-3561-4DD6-8A15-0E5F7E26756A}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWeb"> <matchingWeb componentId="WebComponent"> ... </matchingWeb> </matching> </formData> </forms> </opLogon></code></pre> </div> <p>В приведенном примере матчинг Win32-компонента приложения выполняется по двум путям (<em>%ProgramFiles%\\Indeed-Id\\Enterprise SSO\\IndeedID.SSO.Test.App.exe, C:\\IndeedID.SSO.Test.App.exe</em>), контрольной сумме, размеру и описанию исполняемого файла приложения. К компоненту привязана форма входа.</p> <p>Матчинг Web-компонента приложения выполняется по URL-адресу страницы, соответсвующему заданному регулярному выражению. К компоненту привязана форма входа.</p>'
contentstext = '_МАТЧИНГОМ ПРИЛОЖЕНИЯ_ называется процесс определения целевого приложения ESSO Агентом. Механизм матчинга целевого приложения ESSO Агентом основан на сопоставлении данных, указанных в шаблоне, с данными приложения. После загрузки шаблона в систему ESSO,...'
143 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Матчинг приложения'
isedited = '1'
editeddateline = '1457947503'
editedstaffid = '5'
views = '2000'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457947439'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><em>Матчингом приложения</em></strong> называется процесс определения целевого приложения ESSO Агентом.</p> <p>Механизм матчинга целевого приложения ESSO Агентом основан на сопоставлении данных, указанных в шаблоне, с данными приложения. После загрузки шаблона в систему ESSO, ESSO Агент из множества приложений, с которыми работает пользователь, обрабатывает только те приложения, параметры которых соответствуют заданным в шаблоне данным.</p> <p>Параметрами матчинга для Win32-приложений могут быть пути, контрольные суммы, размер, описания исполняемых файлов приложения. Матчинг Web-приложений выполяется по URL-адресу страницы.</p> <p>Матчинг форм приложения выполняется отдельно от матчинга самого приложения, поэтому эти два понятия нельзя путать.</p> <p><strong>СИНТАКСИС</strong></p> <pre><code><matchingDetails></code><br /><code> <components><br /> <component type=”тип компонента” componentId=”ID компонента”></code><br /><code> <componentWeb></code><br /><code> <url isRegex=”флаг регулярного выражения”>URL страницы</url></code><br /><code> </componentWeb></code><br /><code> </component><br /> <component type=”тип компонента” componentId=”ID компонента”></code><br /><code> <componentWin32></code><br /><code> <paths></code><br /><code> <path>путь к файлу 1</path></code><br /><code> …</code><br /><code> <path>путь к файлу N</path></code><br /><code> </paths></code><br /><code> <crcs></code><br /><code> <crc fileSizeBytes=”размер файла 1 в байтах”>CRC файла 1</crc></code><br /><code> …</code><br /><code> <crc fileSizeBytes=”размер файла N в байтах” >CRC файла N</crc></code><br /><code> </crcs></code><br /><code> <fileDescription>Описание исполняемого файла </fileDescription></code><br /><code> </componentWin32></code><br /><code> </component><br /> </components></code><br /><code></matchingDetails></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><matchingDetails></em></strong><br />Структура описывает параметры матчинга приложения.</p> <p><strong><em><components></em></strong><br />Структура описывает компоненты приложения.</p> <p>Некоторые приложения имеют несколько представлений пользовательского интерфейса - как правило, это представления в виде Win32- и Web-приложений (например, веб-службы электронной почты). Представление пользовательского интерфейса в терминологии Indeed-Id называется <strong><em>компонентом приложения</em></strong>.</p> <p>Компоненты приложения можно реадактировать в ESSO Консоли (создавать и удалять компоненты через ESSO Консоль нельзя).</p> <p><strong><em><component></em></strong><br />Структура описывает компонент приложения.</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><em><strong>type</strong></em><br />Тип компонента приложения приложения.</p> <p>Представление в виде Win32-приложения называется <strong><em>Win32-компонентом приложения</em></strong>. Представление в виде Web-приложения называется <strong><em>Web-компонентом приложения</em></strong>.</p> <p>Возможные значения:</p> <p><em>CFormData::mtWin32</em> Win32-компонент приложения <br /><em>CFormData::mtWeb</em> Web-компонент приложения</p> <p>componentId<br />Идентификатор компонента приложения.</p> <p>Идентификатор компонента используется для привязки форм приложения к компоненту и представляет собой произвольную строку, уникальную в списке идентификаторов компонентов данного приложения.</p> <p>Для того, чтобы привязать форму к компоненту приложения, нужно в описании формы задать индентификатор соответствующего компонента:</p> <div class="codebox"> <pre><code><formData id="{74034A01-12DA-424F-B081-BB88F8010BE0}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="#32770" [b]componentId="&lt;Win32Component&gt;"[/b]> ... </matchingWin32> </matching> … </formData> </code></pre> </div> <p>Идентификатор может содержать специальные символы, для задания которых используются сущности, определенные в формате XML, а именно:</p> <p><strong>Символ</strong> <strong>Сущность</strong><br /> < &lt;<br /> > &gt;<br /> & &amp;<br /> " &quot;<br /> \' &apos;</p> <p><em>Пример:<br /><component type="CFormData::mtWeb" componentId="&lt;Web Component&gt;">... </component></em></p> <p><em>Приведенное описание определяет компонент с имененем <Web Component>.</em></p> <p>Идентификатор компонента отображается в ESSO Консоли в настройках приложения.</p> <p><strong><em><componentWeb></em></strong><br />Структура описывает Web-компонент приложения.</p> <p><strong><em><url></em></strong><br />URL страницы Web-приложения.</p> <p>Задает адрес, по которому будет выполняться матчинг Web-приложения.</p> <p>Значение может быть задано в виде текста или регулярного выражения (определяется флагом <em>isRegex</em>).</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><em><strong>isRegex</strong></em><br />Флаг представления URL страницы в виде регулярного выражения.</p> <p>Возможные значения:<br />0 - URL определяется текстом;<br />1 - URL определяется регулярным выражением.</p> <p><strong><em><componentWin32></em></strong><br />Структура описывает Win32-компонент приложения.</p> <p><strong><em><paths></em></strong><br />Структура задает пути исполняемых файлов компонентов приложения.</p> <p>Матчинг компонентов приложения выполняется по заданным путям.</p> <p>Параметр опциональный. Значение по умолчанию: пусто (нет путей).</p> <p><strong><em><path></em></strong><br />Путь исполняемого файла компонента приложения для матчинга.</p> <p><strong><em><crcs></em></strong><br />Структура задает контрольные суммы исполняемых файлов компонентов приложения.</p> <p>Значения структуры представлены парами <em><CRC, размер файла></em>.</p> <p>Параметр опциональный. Значение по умолчанию: пусто (нет пар <em><CRC, размер файла></em>).</p> <p><strong><em><crc></em></strong><br />Контрольная сумма исполняемого файла компонента приложения. Получить значение контрольной суммы для файла можно с помощью утилиты <em>IndeedID.App.Info.exe</em> (поставляется в составе дистрибутива Indeed-Id).</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><strong><em>fileSizeBytes</em></strong><br />Размер исполняемого файла компонента приложения.</p> <p>Получить размер файла можно с помощью утилиты <em>IndeedID.App.Info.exe</em> (поставляется в составе дистрибутива Indeed-Id).</p> <p><strong><em><fileDescription></em></strong><br />Описание исполняемого файла, указанное в его свойствах (в Version Info).</p> <p>Значение параметра может быть пустым, если описание не задано в свойствах файла или выполнять проверку описания не требуется.<br /><br /></p> <p>Описание параметров матчинга Win32- и Web-компонентов приложения:</p> <div class="codebox"> <pre><code><matchingDetails> <components> <component type="CFormData::mtWin32" componentId="&lt;Win32Component&gt;"> <componentWin32> <paths> <path>%ProgramFiles%\\Indeed-Id\\Enterprise SSO\\IndeedID.SSO.Test.App.exe</path> <path>C:\\IndeedID.SSO.Test.App.exe</path> </paths> <crcs> <crc fileSizeBytes="270848">4135804682</crc> </crcs> <fileDescription>Indeed-ID SSO test application</fileDescription> </componentWin32> </component> <component type="CFormData::mtWeb" componentId="WebComponent"> <componentWeb> <url isRegex="1">(.*)\\\\IndeedID\\.SSO\\.web\\.Test\\.App\\\\(.*)\\.htm.*</url> </componentWeb> </component> </components> </matchingDetails></code></pre> </div> <p>Описание форм входа для Win32- и Web-компонентов приложения (описания форм разблокировки и смены пароля аналогичны):</p> <div class="codebox"> <pre><code><opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{BC52204D-6573-418A-ABE3-2200910AC97B}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="#32770" componentId="&lt;Win32Component&gt;"> ... </matchingWin32> </matching> </formData> <formData id="{C3EBEB43-3561-4DD6-8A15-0E5F7E26756A}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWeb"> <matchingWeb componentId="WebComponent"> ... </matchingWeb> </matching> </formData> </forms> </opLogon></code></pre> </div> <p>В приведенном примере матчинг Win32-компонента приложения выполняется по двум путям (<em>%ProgramFiles%\\Indeed-Id\\Enterprise SSO\\IndeedID.SSO.Test.App.exe, C:\\IndeedID.SSO.Test.App.exe</em>), контрольной сумме, размеру и описанию исполняемого файла приложения. К компоненту привязана форма входа.</p> <p>Матчинг Web-компонента приложения выполняется по URL-адресу страницы, соответсвующему заданному регулярному выражению. К компоненту привязана форма входа.</p>'
contentstext = '_МАТЧИНГОМ ПРИЛОЖЕНИЯ_ называется процесс определения целевого приложения ESSO Агентом. Механизм матчинга целевого приложения ESSO Агентом основан на сопоставлении данных, указанных в шаблоне, с данными приложения. После загрузки шаблона в систему ESSO,...'
kbarticleid = '143'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Не работает поддержка web-приложений в IE в Windows Server 2008+'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1599'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457952609'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Не работает Indeed-ID Enterprise SSO в Internet Explorer на Windows Server 2008 и старше</p> <p><strong><span class="bbu">Ответ</span></strong><br />По умолчанию в настройках IE запрещена загрузка сторонних расширений.</p> <p>См. tools\\internet options\\advanced\\enable third-paty browser extensions.<br />Если ее включить, то после перезапуска браузера, все заработает.</p> <p>Централизовано этой галкой можно управлять через политики:<br />User configuration\\policies\\administrative templates\\windows components\\internet explorer\\internet control pane\\advanced page\\allow third-paty browser extensions.</p> <p>Статья в Microsoft: <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;298931">http://support.microsoft.com/default.as … -us;298931</a></p>'
contentstext = 'ВОПРОС Не работает Indeed-ID Enterprise SSO в Internet Explorer на Windows Server 2008 и старше ОТВЕТ По умолчанию в настройках IE запрещена загрузка сторонних расширений. См. toolsinternet optionsadvancedenable third-paty browser extensions. Если ее ...'
141 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Не работает поддержка web-приложений в IE в Windows Server 2008+'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1599'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457952609'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><strong><span class="bbu">Вопрос</span></strong><br />Не работает Indeed-ID Enterprise SSO в Internet Explorer на Windows Server 2008 и старше</p> <p><strong><span class="bbu">Ответ</span></strong><br />По умолчанию в настройках IE запрещена загрузка сторонних расширений.</p> <p>См. tools\\internet options\\advanced\\enable third-paty browser extensions.<br />Если ее включить, то после перезапуска браузера, все заработает.</p> <p>Централизовано этой галкой можно управлять через политики:<br />User configuration\\policies\\administrative templates\\windows components\\internet explorer\\internet control pane\\advanced page\\allow third-paty browser extensions.</p> <p>Статья в Microsoft: <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;298931">http://support.microsoft.com/default.as … -us;298931</a></p>'
contentstext = 'ВОПРОС Не работает Indeed-ID Enterprise SSO в Internet Explorer на Windows Server 2008 и старше ОТВЕТ По умолчанию в настройках IE запрещена загрузка сторонних расширений. См. toolsinternet optionsadvancedenable third-paty browser extensions. Если ее ...'
kbarticleid = '141'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Ограничения генерируемых паролей'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '7038'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457950343'
articlestatus = '1'
articlerating = '2'
ratinghits = '3'
ratingcount = '5'
seosubject = null
contents = '<p><strong>СИНТАКСИС</strong></p> <pre><code><passwordRestrictions length=”<em>длина пароля</em>” eachCharacterOccurenceMax=”<em>макс. количество вхождений</em>”><br /> <acceptableCharacters></code><br /><code> <characterGroup type=”<em>тип группы 1</em>” customCharacters=”<em>кастомные символы группы 1</em>”/></code><br /><code> …</code><br /><code> <characterGroup type=”<em>тип группы N</em>” customCharacters=”<em>кастомные символы группы N</em>”/></code><br /><code> </acceptableCharacters><br /> <characterOccurences></code><br /><code> <characterOccurence anyCharacterOccurenceMin=”<em>мин. количество вхождений из группы 1</em>”></code><br /><code> <characterGroup type="<em>тип группы 1</em>" customCharacters="<em>кастомные символы группы 1</em>"/></code><br /><code> </characterOccurence></code><br /><code> …</code><br /><code> <characterOccurence anyCharacterOccurenceMin=”<em>мин. количество вхождений из группы N</em>”></code><br /><code> <characterGroup type="<em>тип группы N</em>" customCharacters="<em>кастомные символы группы N</em>"/></code><br /><code> </characterOccurence></code><br /><code> </characterOccurences><br /></passwordRestrictions></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><em><strong><passwordRestrictions></strong></em><br />Структура задает ограничения и определяет требования к качеству генерируемых паролей для ESSO-приложений.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>length</em></strong><br />Длина генерируемого пароля в символах.</p> <p>Если также заданы требования вхождения символов (структура <strong><em><characterOccurences></em></strong>), параметр определяет минимальную длину пароля. В этом случае при генерации пароля сначала выполняются требования вхождения символов. Если после выполнения требований вхождения длина сгенерированного пароля окажется больше заданной, пароль будет иметь длину, соответствующую выполненным требованиям вхождения (т.е. пароль не будет обрезан).</p> <p>Опциональный параметр. Значение по умолчанию: 0</p> <p><em><strong>eachCharacterOccurenceMax</strong></em><br />Максимальное количество вхождений каждого символа (независимо от того, в какую группу символов он входит) в сгенерированный пароль.</p> <p>Опциональный параметр. Значение по умолчанию: 0</p> <p><em>Пример:</em></p> <div class="codebox"> <pre><code><passwordRestrictions length="8" eachCharacterOccurenceMax="2"> ... </passwordRestrictions></code></pre> </div> <p><em>Приведенное описание обозначает, что сгенерированный пароль будет содержать не более двух одинаковых символов (независимо от того, в какую группу символов они входят).</em></p> <p><em><strong><acceptableCharacters></strong></em><br />Структура задает множество допустимых символов для генерации пароля.</p> <p>Опциональный параметр. Значение по умолчанию: пусто. В этом случае при генерации пароля выполняются следующие условия:</p> <ul> <li> <p>пароль содержит символы из следующих групп:</p> </li> </ul> <p> - цифры (0...9);<br /> - латинские строчные буквы (a...z);<br /> - латинские прописные буквы (A...Z);<br /> - специальные символы (`~!@#$%^&*()_-+={}[]\\|:;"\'<>,.?/,пробел);</p> <ul> <li> <p>количество вхождений символов в пароль определяется структурой <strong><em><characterOccurences></em></strong>.</p> </li> </ul> <p><em><strong><characterGroup></strong></em><br />Структура описывает допустимые группы символов, которые могут входить в состав пароля при генерации.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>type</em></strong><br />Тип группы допустимых символов.</p> <p>Возможные значения:<br /> <em>cgtCustom</em> пользовательская группа символов (группа символов, определяемая пользователем)<br /> <em>cgtLatins</em> латинские буквы (A...Z, a…z)<br /> <em>cgtLatinsLower</em> латинские строчные буквы (a…z)<br /> <em>cgtLatinsUpper </em> латинские прописные буквы (A...Z)<br /> <em>cgtDigits </em> цифры (0…9)<br /> <em>cgtSpecial </em> неалфавитные символы (` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \\ | : ; " \'<> , . ? /, пробел и др.)<br /> <em>cgtAcceptableByDefault</em> латинские буквы (A...Z, a…z), цифры (0…9), специальные символы (` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \\ | : ; " \'<> , . ? /, пробел и др.)</p> <p>Значение по умолчанию (если не задано ни одной группы допустимых символов): <em>cgtAcceptableByDefault</em>.</p> <p><em><strong>customCharacters</strong></em><br />Множество символов пользовательской группы.</p> <p>Опциональный параметр. Значение по умолчанию: пусто.</p> <p>Задание атрибута имеет смысл только для пользовательской группы символов, т.е. только в том случае, когда атрибут<strong><em>type</em></strong> имеет значение <em><strong>cgtCustom</strong></em>: </p> <div class="codebox"> <pre><code><characterGroup type="cgtCustom" customCharacters=",.<>/?[]{}=+-_\\\\|!@#$%^&*() " /></code></pre> </div> <p>Если тип группы отличается от <em><strong>cgtCustom</strong></em>, значение атрибута при обработке шаблона не учитывается.</p> <p>Значение атрибута задается в виде строки, в которой перечислены все символы, входящие в пользовательскую группу, при этом необходимо соблюдать следующие правила перечисления пользовательских символов:</p> <ul> <li> <p>для задания специальных символов используются сущности, определенные в формате XML, а именно:</p> </li> </ul> <p><strong>Символ</strong> <strong>Сущность</strong><br /> < &lt;<br /> > &gt;<br /> & &amp;<br /> " &quot;<br /> \' &apos;<br /><em>Пример:</em></p> <div class="codebox"> <pre><code><characterGroup type="cgtCustom" customCharacters="!@#$%*() " /></code></pre> </div> <p><em>Приведенное описание определяет пользовательскую группу со следующим множеством символов: ,.<strong><></strong>/?[]{}=+-_!@#$%^<strong>&</strong>*() "</em></p> <p><em><strong><characterOccurences></strong></em><br />Стуктура задает требования вхождения символов в пароль.</p> <p>Опциональный параметр. Значение по умолчанию: пусто. В этом случае при генерации пароля выполняются следующие условия:</p> <ul> <li> <p>длина генерируемого пароля определяется значением атрибута <strong><em>length</em></strong> тега <strong><em><passwordRestrictions></em></strong>;</p> </li> <li> <p>если задано множество допустимых символов для генерации пароля (т.е. описана структура<em><strong><acceptableCharacters></strong></em>), пароль содержит символы из заданного множества, при этом количество вхождений символов из каждой группы определяется случайным образом.</p> </li> </ul> <p><strong><em><characterOccurence></em></strong><br />Структура задает требования вхождения в пароль символов заданной группы.</p> <p>Если для допустимой группы символов требования вхождения в пароль не определены, количество вхождений для символов этой группы определяется случайным образом с учетом заданных требований вхождений для других допустимых групп символов.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><em><strong>anyCharacterOccurenceMin</strong></em><br />Минимальное число вхождений символов из заданной группы в генеририуемый пароль.</p> <p><em>Пример:</em></p> <div class="codebox"> <pre><code><characterOccurences> <characterOccurence anyCharacterOccurenceMin="3"> <characterGroup type="cgtLatinsLower" /> </characterOccurence> ... </characterOccurences></code></pre> </div> <p><em>Приведенное описание обозначает, что сгенерированный пароль должен содержать не менее трех латинских строчных букв.</em></p> <p><strong>ПРИМЕРЫ</strong></p> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение групп допустимых символов для генерации пароля (в том числе определение пользовательской группы символов);</em></p> </li> <li> <p><em>описание требований вхождения символов в пароль;</em></p> </li> <li> <p><em>определение количества вхождений символов заданной группы в пароль.</em></p> </li> </ul> <p>Пароль в ESSO-приложении должен удовлетворять следующим требованиям: </p> <ul> <li> <p>пароль должен состоять не менее чем из 10 символов;</p> </li> <li> <p>пароль может содержать не более двух одинаковых символов;</p> </li> <li> <p>в пароле должны присутствовать символы хотя бы трех групп из числа следующих четырех:</p> </li> </ul> <p> - прописные буквы английского алфавита от A до Z;<br /> - строчные буквы английского алфавита от a до z;<br /> - десятичные цифры (от 0 до 9);<br /> - неалфавитные символы (например, !, $, #, %).</p> <p>Описание ограничений генерируемых паролей:</p> <div class="codebox"> <pre><code> <passwordRestrictions length="10" eachCharacterOccurenceMax="2"> <acceptableCharacters> <characterGroup type="cgtLatinsLower" /> <characterGroup type="cgtLatinsUpper" /> <characterGroup type="cgtDigits" /> <characterGroup type="cgtCustom" customCharacters="!@#$%^&*()_+" /> </acceptableCharacters> <characterOccurences> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsLower" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsUpper" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtDigits" /> </characterOccurence> </characterOccurences> </passwordRestrictions></code></pre> </div> <p>Сгенерированные пароли будут: </p> <ul> <li> <p>состоять из 10 символов;</p> </li> <li> <p>содержать по 2 или более символа каждой из групп: прописные буквы английского алфавита, строчные буквы английского алфавита, цифры;</p> </li> <li> <p>содержать от 0 до 4 неалфавитных символов;</p> </li> <li> <p>содержать не более двух одинаковых символов.</p> </li> </ul> <p>Например: <em>g3)rAd5yDC</em>, <em>rzvrS9D7NE</em>, <em>4i+Xh)xDh4</em></p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.PswRest.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует:<br /></em></p> <ul> <li> <p><em>определение пользовательской группы символов для генерации пароля; <br /></em></p> </li> <li> <p><em>описание требований вхождения символов пользовательской группы в пароль; <br /></em></p> </li> <li> <p><em>определение длины пароля в соответствии с требованиями вхождения символов в <br />пароль.</em></p> </li> </ul> <p>Пароль в ESSO-приложении должен удовлетворять следующим требованиям: </p> <ul> <li> <p>пароль должен состоять не менее чем из 6 символов;</p> </li> <li> <p>пароль не должен содержать одинаковых символов;</p> </li> <li> <p>пароль должен содержать хотя бы 2 символа каждой из групп:</p> </li> </ul> <p> - прописные буквы английского алфавита от A до Z;<br /> - строчные буквы английского алфавита от a до z;<br /> - десятичные цифры (от 0 до 9);<br /> - неалфавитные символы (например, !, $, #, %).</p> <p>Описание ограничений генерируемых паролей:</p> <div class="codebox"> <pre><code> <passwordRestrictions length="6" eachCharacterOccurenceMax="1"> <acceptableCharacters> <characterGroup type="cgtLatinsLower" /> <characterGroup type="cgtLatinsUpper" /> <characterGroup type="cgtDigits" /> <characterGroup type="cgtCustom" customCharacters=",.&lt;&gt;/?[]{}=+-_!@#$%^&amp;*() " /> </acceptableCharacters> <characterOccurences> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsLower" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsUpper" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtDigits" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtCustom" customCharacters=",.&lt;&gt;/?[]{}=+-_!@#$%^&amp;*() " /> </characterOccurence> </characterOccurences> </passwordRestrictions></code></pre> </div> <p>Сгенерированные пароли: </p> <ul> <li> <p>будут стоять из 8 символов (в данном случае длина пароля определяется требованиями вхождения символов в пароль);</p> </li> <li> <p>будут содержать по 2 символа каждой из групп: прописные буквы английского алфавита, строчные буквы английского алфавита, цифры, неалфавитные символы;</p> </li> <li> <p>не могут содержать повторяющиеся символов.</p> </li> </ul> <p>Например: <em><Kw5Lh>4</em>, <em>7vA0k+W?</em>, <em>d%Y8o)V6</em></p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.PswRest.Example2.app</em>).</p>'
contentstext = 'СИНТАКСИС <passwordRestrictions length="_длина пароля_" eachCharacterOccurenceMax="_макс. количество вхождений_"> <acceptableCharacters> <characterGroup type="_тип группы 1_" customCharacters="_кастомные символы группы 1_"/> … <characterGroup type="...'
136 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Ограничения генерируемых паролей'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '7038'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457950343'
articlestatus = '1'
articlerating = '2'
ratinghits = '3'
ratingcount = '5'
seosubject = null
contents = '<p><strong>СИНТАКСИС</strong></p> <pre><code><passwordRestrictions length=”<em>длина пароля</em>” eachCharacterOccurenceMax=”<em>макс. количество вхождений</em>”><br /> <acceptableCharacters></code><br /><code> <characterGroup type=”<em>тип группы 1</em>” customCharacters=”<em>кастомные символы группы 1</em>”/></code><br /><code> …</code><br /><code> <characterGroup type=”<em>тип группы N</em>” customCharacters=”<em>кастомные символы группы N</em>”/></code><br /><code> </acceptableCharacters><br /> <characterOccurences></code><br /><code> <characterOccurence anyCharacterOccurenceMin=”<em>мин. количество вхождений из группы 1</em>”></code><br /><code> <characterGroup type="<em>тип группы 1</em>" customCharacters="<em>кастомные символы группы 1</em>"/></code><br /><code> </characterOccurence></code><br /><code> …</code><br /><code> <characterOccurence anyCharacterOccurenceMin=”<em>мин. количество вхождений из группы N</em>”></code><br /><code> <characterGroup type="<em>тип группы N</em>" customCharacters="<em>кастомные символы группы N</em>"/></code><br /><code> </characterOccurence></code><br /><code> </characterOccurences><br /></passwordRestrictions></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><em><strong><passwordRestrictions></strong></em><br />Структура задает ограничения и определяет требования к качеству генерируемых паролей для ESSO-приложений.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>length</em></strong><br />Длина генерируемого пароля в символах.</p> <p>Если также заданы требования вхождения символов (структура <strong><em><characterOccurences></em></strong>), параметр определяет минимальную длину пароля. В этом случае при генерации пароля сначала выполняются требования вхождения символов. Если после выполнения требований вхождения длина сгенерированного пароля окажется больше заданной, пароль будет иметь длину, соответствующую выполненным требованиям вхождения (т.е. пароль не будет обрезан).</p> <p>Опциональный параметр. Значение по умолчанию: 0</p> <p><em><strong>eachCharacterOccurenceMax</strong></em><br />Максимальное количество вхождений каждого символа (независимо от того, в какую группу символов он входит) в сгенерированный пароль.</p> <p>Опциональный параметр. Значение по умолчанию: 0</p> <p><em>Пример:</em></p> <div class="codebox"> <pre><code><passwordRestrictions length="8" eachCharacterOccurenceMax="2"> ... </passwordRestrictions></code></pre> </div> <p><em>Приведенное описание обозначает, что сгенерированный пароль будет содержать не более двух одинаковых символов (независимо от того, в какую группу символов они входят).</em></p> <p><em><strong><acceptableCharacters></strong></em><br />Структура задает множество допустимых символов для генерации пароля.</p> <p>Опциональный параметр. Значение по умолчанию: пусто. В этом случае при генерации пароля выполняются следующие условия:</p> <ul> <li> <p>пароль содержит символы из следующих групп:</p> </li> </ul> <p> - цифры (0...9);<br /> - латинские строчные буквы (a...z);<br /> - латинские прописные буквы (A...Z);<br /> - специальные символы (`~!@#$%^&*()_-+={}[]\\|:;"\'<>,.?/,пробел);</p> <ul> <li> <p>количество вхождений символов в пароль определяется структурой <strong><em><characterOccurences></em></strong>.</p> </li> </ul> <p><em><strong><characterGroup></strong></em><br />Структура описывает допустимые группы символов, которые могут входить в состав пароля при генерации.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>type</em></strong><br />Тип группы допустимых символов.</p> <p>Возможные значения:<br /> <em>cgtCustom</em> пользовательская группа символов (группа символов, определяемая пользователем)<br /> <em>cgtLatins</em> латинские буквы (A...Z, a…z)<br /> <em>cgtLatinsLower</em> латинские строчные буквы (a…z)<br /> <em>cgtLatinsUpper </em> латинские прописные буквы (A...Z)<br /> <em>cgtDigits </em> цифры (0…9)<br /> <em>cgtSpecial </em> неалфавитные символы (` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \\ | : ; " \'<> , . ? /, пробел и др.)<br /> <em>cgtAcceptableByDefault</em> латинские буквы (A...Z, a…z), цифры (0…9), специальные символы (` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \\ | : ; " \'<> , . ? /, пробел и др.)</p> <p>Значение по умолчанию (если не задано ни одной группы допустимых символов): <em>cgtAcceptableByDefault</em>.</p> <p><em><strong>customCharacters</strong></em><br />Множество символов пользовательской группы.</p> <p>Опциональный параметр. Значение по умолчанию: пусто.</p> <p>Задание атрибута имеет смысл только для пользовательской группы символов, т.е. только в том случае, когда атрибут<strong><em>type</em></strong> имеет значение <em><strong>cgtCustom</strong></em>: </p> <div class="codebox"> <pre><code><characterGroup type="cgtCustom" customCharacters=",.<>/?[]{}=+-_\\\\|!@#$%^&*() " /></code></pre> </div> <p>Если тип группы отличается от <em><strong>cgtCustom</strong></em>, значение атрибута при обработке шаблона не учитывается.</p> <p>Значение атрибута задается в виде строки, в которой перечислены все символы, входящие в пользовательскую группу, при этом необходимо соблюдать следующие правила перечисления пользовательских символов:</p> <ul> <li> <p>для задания специальных символов используются сущности, определенные в формате XML, а именно:</p> </li> </ul> <p><strong>Символ</strong> <strong>Сущность</strong><br /> < &lt;<br /> > &gt;<br /> & &amp;<br /> " &quot;<br /> \' &apos;<br /><em>Пример:</em></p> <div class="codebox"> <pre><code><characterGroup type="cgtCustom" customCharacters="!@#$%*() " /></code></pre> </div> <p><em>Приведенное описание определяет пользовательскую группу со следующим множеством символов: ,.<strong><></strong>/?[]{}=+-_!@#$%^<strong>&</strong>*() "</em></p> <p><em><strong><characterOccurences></strong></em><br />Стуктура задает требования вхождения символов в пароль.</p> <p>Опциональный параметр. Значение по умолчанию: пусто. В этом случае при генерации пароля выполняются следующие условия:</p> <ul> <li> <p>длина генерируемого пароля определяется значением атрибута <strong><em>length</em></strong> тега <strong><em><passwordRestrictions></em></strong>;</p> </li> <li> <p>если задано множество допустимых символов для генерации пароля (т.е. описана структура<em><strong><acceptableCharacters></strong></em>), пароль содержит символы из заданного множества, при этом количество вхождений символов из каждой группы определяется случайным образом.</p> </li> </ul> <p><strong><em><characterOccurence></em></strong><br />Структура задает требования вхождения в пароль символов заданной группы.</p> <p>Если для допустимой группы символов требования вхождения в пароль не определены, количество вхождений для символов этой группы определяется случайным образом с учетом заданных требований вхождений для других допустимых групп символов.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><em><strong>anyCharacterOccurenceMin</strong></em><br />Минимальное число вхождений символов из заданной группы в генеририуемый пароль.</p> <p><em>Пример:</em></p> <div class="codebox"> <pre><code><characterOccurences> <characterOccurence anyCharacterOccurenceMin="3"> <characterGroup type="cgtLatinsLower" /> </characterOccurence> ... </characterOccurences></code></pre> </div> <p><em>Приведенное описание обозначает, что сгенерированный пароль должен содержать не менее трех латинских строчных букв.</em></p> <p><strong>ПРИМЕРЫ</strong></p> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение групп допустимых символов для генерации пароля (в том числе определение пользовательской группы символов);</em></p> </li> <li> <p><em>описание требований вхождения символов в пароль;</em></p> </li> <li> <p><em>определение количества вхождений символов заданной группы в пароль.</em></p> </li> </ul> <p>Пароль в ESSO-приложении должен удовлетворять следующим требованиям: </p> <ul> <li> <p>пароль должен состоять не менее чем из 10 символов;</p> </li> <li> <p>пароль может содержать не более двух одинаковых символов;</p> </li> <li> <p>в пароле должны присутствовать символы хотя бы трех групп из числа следующих четырех:</p> </li> </ul> <p> - прописные буквы английского алфавита от A до Z;<br /> - строчные буквы английского алфавита от a до z;<br /> - десятичные цифры (от 0 до 9);<br /> - неалфавитные символы (например, !, $, #, %).</p> <p>Описание ограничений генерируемых паролей:</p> <div class="codebox"> <pre><code> <passwordRestrictions length="10" eachCharacterOccurenceMax="2"> <acceptableCharacters> <characterGroup type="cgtLatinsLower" /> <characterGroup type="cgtLatinsUpper" /> <characterGroup type="cgtDigits" /> <characterGroup type="cgtCustom" customCharacters="!@#$%^&*()_+" /> </acceptableCharacters> <characterOccurences> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsLower" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsUpper" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtDigits" /> </characterOccurence> </characterOccurences> </passwordRestrictions></code></pre> </div> <p>Сгенерированные пароли будут: </p> <ul> <li> <p>состоять из 10 символов;</p> </li> <li> <p>содержать по 2 или более символа каждой из групп: прописные буквы английского алфавита, строчные буквы английского алфавита, цифры;</p> </li> <li> <p>содержать от 0 до 4 неалфавитных символов;</p> </li> <li> <p>содержать не более двух одинаковых символов.</p> </li> </ul> <p>Например: <em>g3)rAd5yDC</em>, <em>rzvrS9D7NE</em>, <em>4i+Xh)xDh4</em></p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.PswRest.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует:<br /></em></p> <ul> <li> <p><em>определение пользовательской группы символов для генерации пароля; <br /></em></p> </li> <li> <p><em>описание требований вхождения символов пользовательской группы в пароль; <br /></em></p> </li> <li> <p><em>определение длины пароля в соответствии с требованиями вхождения символов в <br />пароль.</em></p> </li> </ul> <p>Пароль в ESSO-приложении должен удовлетворять следующим требованиям: </p> <ul> <li> <p>пароль должен состоять не менее чем из 6 символов;</p> </li> <li> <p>пароль не должен содержать одинаковых символов;</p> </li> <li> <p>пароль должен содержать хотя бы 2 символа каждой из групп:</p> </li> </ul> <p> - прописные буквы английского алфавита от A до Z;<br /> - строчные буквы английского алфавита от a до z;<br /> - десятичные цифры (от 0 до 9);<br /> - неалфавитные символы (например, !, $, #, %).</p> <p>Описание ограничений генерируемых паролей:</p> <div class="codebox"> <pre><code> <passwordRestrictions length="6" eachCharacterOccurenceMax="1"> <acceptableCharacters> <characterGroup type="cgtLatinsLower" /> <characterGroup type="cgtLatinsUpper" /> <characterGroup type="cgtDigits" /> <characterGroup type="cgtCustom" customCharacters=",.&lt;&gt;/?[]{}=+-_!@#$%^&amp;*() " /> </acceptableCharacters> <characterOccurences> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsLower" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtLatinsUpper" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtDigits" /> </characterOccurence> <characterOccurence anyCharacterOccurenceMin="2"> <characterGroup type="cgtCustom" customCharacters=",.&lt;&gt;/?[]{}=+-_!@#$%^&amp;*() " /> </characterOccurence> </characterOccurences> </passwordRestrictions></code></pre> </div> <p>Сгенерированные пароли: </p> <ul> <li> <p>будут стоять из 8 символов (в данном случае длина пароля определяется требованиями вхождения символов в пароль);</p> </li> <li> <p>будут содержать по 2 символа каждой из групп: прописные буквы английского алфавита, строчные буквы английского алфавита, цифры, неалфавитные символы;</p> </li> <li> <p>не могут содержать повторяющиеся символов.</p> </li> </ul> <p>Например: <em><Kw5Lh>4</em>, <em>7vA0k+W?</em>, <em>d%Y8o)V6</em></p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedId.SSO.Test.App.PswRest.Example2.app</em>).</p>'
contentstext = 'СИНТАКСИС <passwordRestrictions length="_длина пароля_" eachCharacterOccurenceMax="_макс. количество вхождений_"> <acceptableCharacters> <characterGroup type="_тип группы 1_" customCharacters="_кастомные символы группы 1_"/> … <characterGroup type="...'
kbarticleid = '136'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Операции в SSO шаблонах'
isedited = '1'
editeddateline = '1457946870'
editedstaffid = '5'
views = '1800'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457944956'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Описание структуры операций в SSO шаблонах, их синтаксис параметры и атрибуты, примеры описания операций. <br /><strong><br />СИНТАКСИС</strong></p> <pre><code><[операция] timeoutMs=”таймаут” failureReaction=”реакция на ошибку” rematchAttemptsLimit=”лимит попыток рематчинга”>> <forms></code><br /><code> <formData></code><br /><code> [данные формы 1]</code><br /><code> </formData></code><br /><code> …</code><br /><code> <formData></code><br /><code> [данные формы N]</code><br /><code> </formData></code><br /><code> </forms><br /> <resultSigns></code><br /><code> <formsOpOk></code><br /><code> [данные формы]</code><br /><code> </formsOpOk></code><br /><code> <formsOpFailed></code><br /><code> [данные формы]</code><br /><code> </formsOpFailed></code><br /><code> </resultSigns><br /> <failureReactionAskingDetails isDefaultOptionDisabled="флаг”></code><br /><code> <disabledOptions></code><br /><code> <failureReaction>[опция 1]</failureReaction></code><br /><code> …</code><br /><code> <failureReaction>[опция M]</failureReaction></code><br /><code> </disabledOptions></code><br /><code> </failureReactionAskingDetails><br /></[операция]></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><[операция]></em></strong><br />Структура описывает операцию.</p> <p>Возможные значения: <br /><em>opLogon</em> - операция входа <br /><em>opPasswordChange</em> - операция смены пароля <br /><em>opUnlock</em> - операция разблокировки</p> <p>Пример:</p> <p>Описание операции входа:</p> <div class="codebox"> <pre><code><opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <failureReactionAskingDetails isDefaultOptionDisabled="1"> <disabledOptions> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opLogon></code></pre> </div> <p>Описание операции смены пароля:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <failureReactionAskingDetails isDefaultOptionDisabled="1"> <disabledOptions> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opPasswordChange></code></pre> </div> <p>Описание операции разблокировки:</p> <div class="codebox"> <pre><code><opUnlock failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <failureReactionAskingDetails isDefaultOptionDisabled="1"> <disabledOptions> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opUnlock></code></pre> </div> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>timeoutMs</em></strong><br />Таймаут операции (в миллисекундах).</p> <p>Параметр имеет смысл только для операций с заданной формой-признаком ошибки.</p> <p>Операция завершается ошибкой после матчинга формы-признака ошибки по истечении заданного времени.</p> <p>Если таймаут операции не задан, операция завершается ошибкой сразу после матчинга формы-признака ошибки.</p> <p>После завершения операции с ошибкой выполняется дейсвие, заданное в качестве реакции на ошибку (атрибут <em>failureReaction</em>).</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><strong><em>failureReaction</em></strong><br />Реакция на ошибку операции.</p> <p>Описывает действие, которое должно быть выполнено в том случае, если операция завершилась ошибкой.</p> <p>Возможные значения:</p> <p><em>frRematchTargetForm</em> - выполнять рематчинг (повторный матчинг) формы<br />При завершении операции с ошибкой будет выполнен повторный матчинг формы (если она продолжает существовать) и начато выполнение новой операции.<br />Количество попыток рематчинга определяется значением атрибута <em>rematchAttemptsLimit</em>. По истечению лимита попыток рематчинга агент запрашивает действие реакции на ошибку у юзера.</p> <p><em>frCancelTargetForm</em> - завершить матчинг формы <br />При завершении операции с ошибкой процесс матчинга формы будет завершен и форма будет закрыта. Приложение при этом закрыто не будет.</p> <p><em>frTerminateApplication</em> - закрыть приложение <br />При завершении операции с ошибкой приложение будет закрыто.</p> <p><em>frAskUser</em> запросить у пользователя способ реакции на ошибку <br />При завершении операции с ошибкой появляется запрос действия, которое необходимо выполнить в качестве реакции на возникшую ошибку. Доступность действий определяется состоянием приложения на момент появления запроса.</p> <p>Опциональный параметр. Значение по умолчанию: <em>frAskUser</em>.</p> <p><strong><em>rematchAttemptsLimit</em></strong><br />Лимит попыток рематчинга формы.</p> <p>Определяет число повторных попыток матчинга формы. Значение атрибута имеет смысл только в том случае, если атрибут<em>failureReaction</em> имеет значение <em>frRematchTargetForm</em>. В остальных случаях значение атрибута не учитывается.</p> <p>После истечения лимита попыток рематчинга формы ESSO Агент запрашивает у пользователя способ реакции на ошибку.</p> <p>Опциональный параметр. Значение по умолчанию: 0 (число повторных попыток не ограничено).</p> <p>Пример:</p> <p>Описание операции входа:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="3"> ... </opPasswordChange></code></pre> </div> <p>В приведенном примере допускается три попытки рематчинга формы смены пароля.</p> <p><strong><em><forms></em></strong><br />Структура задает список целевых форм операции.</p> <p><strong><em><formData></em></strong><br />Структура описывает целевую форму операции.</p> <p>Описание структуры приведено в разделе "Формы приложения".</p> <p><strong><em><resultSigns></em></strong><br />Структура задает данные для распознавания результата выполнения операции.</p> <p>Опциональный параметр. Значение по умолчанию: пусто (нет данных). В этом случае результат выполнения операции всегда считается успешным и данные операции сохраняются в базу данных SSO.</p> <p><strong><em><formsOpOk></em></strong><br />Структура задает список форм-признаков успешного завершения операции.</p> <p>Описание структуры приведено в разделе "Формы приложения".</p> <p>Обязательный параметр (в рамках структуры <em><resultSigns></em>). Если в структуре <em><resultSigns></em> формы-признаки успеха не описаны, данные операции не будут сохранены в базу данных SSO.</p> <p><strong><em><formsOpFailed></em></strong><br />Структура задает список форм-признаков успешного завершения операции.</p> <p>Описание структуры приведено в разделе "Формы приложения".</p> <p>Обязательный параметр (в рамках структуры <em><resultSigns></em>).</p> <p><strong><em><failureReactionAskingDetails></em></strong><br />Структура задает данные для окна ESSO Агента с запросом способа реакции на ошибку операции.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>isDefaultOptionDisabled</em></strong><br />Флаг запрета отображения действия, предусмотренного по умолчанию, для окна ESSO Агента с запросом способа реакции на ошибку операции.</p> <p>При включенном значении флага действие, предусмотренное по умолчанию для данной ситуации, выделяется в интерфейсе.</p> <p>В качестве действия по умолчанию установлены следующие реакции ESSO Агента:</p> <ul> <li> <p>для приложений SSO-only (тип запуска приложения “Только Indeed-Id ESSO Агент”) - завершить приложение;</p> </li> <li> <p>для остальных приложений - игнорировать (ничего не делать).</p> </li> </ul> <p>Возможные значения:<br />0 - флаг выключен (отображать действие по умолчанию)<br />1 - флаг включен (не отображать действие по умолчанию)</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><strong><em>disabledOptions</em></strong><br />Структура задает список запрещенных действий для окна ESSO Агента с запросом способа реакции на ошибку операции.</p> <p>Опциональный параметр. Значение по умолчанию: пусто (нет запрещенных опций).</p> <p><strong><em>failureReaction</em></strong><br />Тег задает запрещенную опцию реакции на ошибку операции.</p> <p>Кнопка, предназначенная для выполнения соответствующего действия, в окне ESSO Агента с запросом способа реакции на ошибку операции будет неактивна.</p> <p>Возможные значения: <br /><em>frRematchTargetForm</em> - запретить повторный рематчинг(повторный матчинг) формы. <br /><em>frCancelTargetForm</em> - запретить закрытие формы приложения. <br /><em>frTerminateApplication</em> - запретить завершение приложения. <br /><em>frNone</em> - запретить игнорировать ошибку операции.<br /><br /></p> <p><strong>ПРИМЕРЫ</strong></p> <p>Данный раздел содержит примеры описания операций и соответствующие готовые шаблоны для тестового приложения<a href="http://community.indeed-id.com/viewtopic.php?id=300">"Indeed-Id SSO Test Application"</a> для демонстрации работы приведенных примеров.</p> <p>Для просмотра работы примеров необходимо выполнить следующие действия:</p> <ul> <li> <p><a href="http://community.indeed-id.com/viewtopic.php?pid=348#p348">настроить тестовое приложение "Indeed-Id Test App"</a> (в ESSO Консоли задать для приложения тип запуска "Только Indeed-Id ESSO Агент");</p> </li> <li> <p>обновить данные на ESSO Агенте;</p> </li> <li> <p>запустить тестовое приложение;</p> </li> <li> <p>открыть форму смены пароля.</p> </li> </ul> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>описание нескольких операций в одном шаблоне (в шаблоне описаны операции входа, смены пароля, разблокировки);</em></p> </li> <li> <p><em>настройку параметров операции: реакция на ошибку операции, лимит попыток рематчинга формы (на примере операции смены пароля);</em></p> </li> <li> <p><em>распознавание результата выполнения операции: описание форм-признаков успеха и ошибки операции (на примере операции смены пароля).</em></p> </li> </ul> <p>Описание операции, целевой формы (формы смены пароля), форм-признаков успеха и ошибки операции:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <resultSigns> <formsOpOk> <formData id="{3E25563A-4853-428E-A33E-8763A57CF864}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="#32770" componentId="&lt;Win32Component&gt;"> ... </matchingWin32> </matching> <fillingAlgorithm> ... </fillingAlgorithm> </formData> </formsOpOk> <formsOpFailed> <formData id="{F377315E-CF1B-4902-A4B3-84ACCA39E10A}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> ... </matching> <fillingAlgorithm> ... </fillingAlgorithm> </formData> </formsOpFailed> </resultSigns> ... </opPasswordChange></code></pre> </div> <p>В приведенном примере при завершении операции смены пароля ошибкой (для тестового приложения – при имуляции данной ситуации) появляется окно с сообщением об ошибке (форма-признак ошибки операции). ESSO Агент закрывает это окно нажатием кнопки "OK" (это действие описано в алгоритме заполнения формы-признака ошибки операции).</p> <p>После этого происходит повторный матчинг окна смены пароля. Повторный матчинг будет выполнен не более 2 раз. По истечении количества попыток появится окно ESSO Агента с запросом способа обработки ошибки. <br />При успешном выполнении операции открывается окно с сообщением об успешной смене пароля.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.operations.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение данных для интерфейса реакции на ошибку (на примере операции смены пароля), а именно: отображение действия, предусмотренного по умолчанию, определение запрещенных опций.</em></p> </li> </ul> <p>Описание операции, целевой формы (формы смены пароля), форм-признаков успеха и ошибки операции:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <resultSigns> <formsOpOk> ... </formsOpOk> <formsOpFailed> ... </formsOpFailed> </resultSigns> <failureReactionAskingDetails isDefaultOptionDisabled="0"> <disabledOptions> <failureReaction>frRematchTargetForm</failureReaction> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opPasswordChange></code></pre> </div> <p>В приведенном примере по истечении количества попыток рематчинга окна смены пароля появляется окно ESSO Агента с запросом способа обработки ошибки. При этом в окне запроса выделено действие по умолчанию (для приложений с типом запуска "Только Indeed-Id ESSO Агент" – это завершение приложения), повторный матчинг окна и игнорирование ошибки запрещены.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.operations.Example2.app</em>).</p>'
contentstext = 'Описание структуры операций в SSO шаблонах, их синтаксис параметры и атрибуты, примеры описания операций. СИНТАКСИС <[операция] timeoutMs="таймаут" failureReaction="реакция на ошибку" rematchAttemptsLimit="лимит попыток рематчинга">> <forms> <formDat...'
137 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Операции в SSO шаблонах'
isedited = '1'
editeddateline = '1457946870'
editedstaffid = '5'
views = '1800'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457944956'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Описание структуры операций в SSO шаблонах, их синтаксис параметры и атрибуты, примеры описания операций. <br /><strong><br />СИНТАКСИС</strong></p> <pre><code><[операция] timeoutMs=”таймаут” failureReaction=”реакция на ошибку” rematchAttemptsLimit=”лимит попыток рематчинга”>> <forms></code><br /><code> <formData></code><br /><code> [данные формы 1]</code><br /><code> </formData></code><br /><code> …</code><br /><code> <formData></code><br /><code> [данные формы N]</code><br /><code> </formData></code><br /><code> </forms><br /> <resultSigns></code><br /><code> <formsOpOk></code><br /><code> [данные формы]</code><br /><code> </formsOpOk></code><br /><code> <formsOpFailed></code><br /><code> [данные формы]</code><br /><code> </formsOpFailed></code><br /><code> </resultSigns><br /> <failureReactionAskingDetails isDefaultOptionDisabled="флаг”></code><br /><code> <disabledOptions></code><br /><code> <failureReaction>[опция 1]</failureReaction></code><br /><code> …</code><br /><code> <failureReaction>[опция M]</failureReaction></code><br /><code> </disabledOptions></code><br /><code> </failureReactionAskingDetails><br /></[операция]></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><[операция]></em></strong><br />Структура описывает операцию.</p> <p>Возможные значения: <br /><em>opLogon</em> - операция входа <br /><em>opPasswordChange</em> - операция смены пароля <br /><em>opUnlock</em> - операция разблокировки</p> <p>Пример:</p> <p>Описание операции входа:</p> <div class="codebox"> <pre><code><opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <failureReactionAskingDetails isDefaultOptionDisabled="1"> <disabledOptions> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opLogon></code></pre> </div> <p>Описание операции смены пароля:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <failureReactionAskingDetails isDefaultOptionDisabled="1"> <disabledOptions> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opPasswordChange></code></pre> </div> <p>Описание операции разблокировки:</p> <div class="codebox"> <pre><code><opUnlock failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <failureReactionAskingDetails isDefaultOptionDisabled="1"> <disabledOptions> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opUnlock></code></pre> </div> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>timeoutMs</em></strong><br />Таймаут операции (в миллисекундах).</p> <p>Параметр имеет смысл только для операций с заданной формой-признаком ошибки.</p> <p>Операция завершается ошибкой после матчинга формы-признака ошибки по истечении заданного времени.</p> <p>Если таймаут операции не задан, операция завершается ошибкой сразу после матчинга формы-признака ошибки.</p> <p>После завершения операции с ошибкой выполняется дейсвие, заданное в качестве реакции на ошибку (атрибут <em>failureReaction</em>).</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><strong><em>failureReaction</em></strong><br />Реакция на ошибку операции.</p> <p>Описывает действие, которое должно быть выполнено в том случае, если операция завершилась ошибкой.</p> <p>Возможные значения:</p> <p><em>frRematchTargetForm</em> - выполнять рематчинг (повторный матчинг) формы<br />При завершении операции с ошибкой будет выполнен повторный матчинг формы (если она продолжает существовать) и начато выполнение новой операции.<br />Количество попыток рематчинга определяется значением атрибута <em>rematchAttemptsLimit</em>. По истечению лимита попыток рематчинга агент запрашивает действие реакции на ошибку у юзера.</p> <p><em>frCancelTargetForm</em> - завершить матчинг формы <br />При завершении операции с ошибкой процесс матчинга формы будет завершен и форма будет закрыта. Приложение при этом закрыто не будет.</p> <p><em>frTerminateApplication</em> - закрыть приложение <br />При завершении операции с ошибкой приложение будет закрыто.</p> <p><em>frAskUser</em> запросить у пользователя способ реакции на ошибку <br />При завершении операции с ошибкой появляется запрос действия, которое необходимо выполнить в качестве реакции на возникшую ошибку. Доступность действий определяется состоянием приложения на момент появления запроса.</p> <p>Опциональный параметр. Значение по умолчанию: <em>frAskUser</em>.</p> <p><strong><em>rematchAttemptsLimit</em></strong><br />Лимит попыток рематчинга формы.</p> <p>Определяет число повторных попыток матчинга формы. Значение атрибута имеет смысл только в том случае, если атрибут<em>failureReaction</em> имеет значение <em>frRematchTargetForm</em>. В остальных случаях значение атрибута не учитывается.</p> <p>После истечения лимита попыток рематчинга формы ESSO Агент запрашивает у пользователя способ реакции на ошибку.</p> <p>Опциональный параметр. Значение по умолчанию: 0 (число повторных попыток не ограничено).</p> <p>Пример:</p> <p>Описание операции входа:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="3"> ... </opPasswordChange></code></pre> </div> <p>В приведенном примере допускается три попытки рематчинга формы смены пароля.</p> <p><strong><em><forms></em></strong><br />Структура задает список целевых форм операции.</p> <p><strong><em><formData></em></strong><br />Структура описывает целевую форму операции.</p> <p>Описание структуры приведено в разделе "Формы приложения".</p> <p><strong><em><resultSigns></em></strong><br />Структура задает данные для распознавания результата выполнения операции.</p> <p>Опциональный параметр. Значение по умолчанию: пусто (нет данных). В этом случае результат выполнения операции всегда считается успешным и данные операции сохраняются в базу данных SSO.</p> <p><strong><em><formsOpOk></em></strong><br />Структура задает список форм-признаков успешного завершения операции.</p> <p>Описание структуры приведено в разделе "Формы приложения".</p> <p>Обязательный параметр (в рамках структуры <em><resultSigns></em>). Если в структуре <em><resultSigns></em> формы-признаки успеха не описаны, данные операции не будут сохранены в базу данных SSO.</p> <p><strong><em><formsOpFailed></em></strong><br />Структура задает список форм-признаков успешного завершения операции.</p> <p>Описание структуры приведено в разделе "Формы приложения".</p> <p>Обязательный параметр (в рамках структуры <em><resultSigns></em>).</p> <p><strong><em><failureReactionAskingDetails></em></strong><br />Структура задает данные для окна ESSO Агента с запросом способа реакции на ошибку операции.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><strong><em>isDefaultOptionDisabled</em></strong><br />Флаг запрета отображения действия, предусмотренного по умолчанию, для окна ESSO Агента с запросом способа реакции на ошибку операции.</p> <p>При включенном значении флага действие, предусмотренное по умолчанию для данной ситуации, выделяется в интерфейсе.</p> <p>В качестве действия по умолчанию установлены следующие реакции ESSO Агента:</p> <ul> <li> <p>для приложений SSO-only (тип запуска приложения “Только Indeed-Id ESSO Агент”) - завершить приложение;</p> </li> <li> <p>для остальных приложений - игнорировать (ничего не делать).</p> </li> </ul> <p>Возможные значения:<br />0 - флаг выключен (отображать действие по умолчанию)<br />1 - флаг включен (не отображать действие по умолчанию)</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><strong><em>disabledOptions</em></strong><br />Структура задает список запрещенных действий для окна ESSO Агента с запросом способа реакции на ошибку операции.</p> <p>Опциональный параметр. Значение по умолчанию: пусто (нет запрещенных опций).</p> <p><strong><em>failureReaction</em></strong><br />Тег задает запрещенную опцию реакции на ошибку операции.</p> <p>Кнопка, предназначенная для выполнения соответствующего действия, в окне ESSO Агента с запросом способа реакции на ошибку операции будет неактивна.</p> <p>Возможные значения: <br /><em>frRematchTargetForm</em> - запретить повторный рематчинг(повторный матчинг) формы. <br /><em>frCancelTargetForm</em> - запретить закрытие формы приложения. <br /><em>frTerminateApplication</em> - запретить завершение приложения. <br /><em>frNone</em> - запретить игнорировать ошибку операции.<br /><br /></p> <p><strong>ПРИМЕРЫ</strong></p> <p>Данный раздел содержит примеры описания операций и соответствующие готовые шаблоны для тестового приложения<a href="http://community.indeed-id.com/viewtopic.php?id=300">"Indeed-Id SSO Test Application"</a> для демонстрации работы приведенных примеров.</p> <p>Для просмотра работы примеров необходимо выполнить следующие действия:</p> <ul> <li> <p><a href="http://community.indeed-id.com/viewtopic.php?pid=348#p348">настроить тестовое приложение "Indeed-Id Test App"</a> (в ESSO Консоли задать для приложения тип запуска "Только Indeed-Id ESSO Агент");</p> </li> <li> <p>обновить данные на ESSO Агенте;</p> </li> <li> <p>запустить тестовое приложение;</p> </li> <li> <p>открыть форму смены пароля.</p> </li> </ul> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>описание нескольких операций в одном шаблоне (в шаблоне описаны операции входа, смены пароля, разблокировки);</em></p> </li> <li> <p><em>настройку параметров операции: реакция на ошибку операции, лимит попыток рематчинга формы (на примере операции смены пароля);</em></p> </li> <li> <p><em>распознавание результата выполнения операции: описание форм-признаков успеха и ошибки операции (на примере операции смены пароля).</em></p> </li> </ul> <p>Описание операции, целевой формы (формы смены пароля), форм-признаков успеха и ошибки операции:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <resultSigns> <formsOpOk> <formData id="{3E25563A-4853-428E-A33E-8763A57CF864}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="#32770" componentId="&lt;Win32Component&gt;"> ... </matchingWin32> </matching> <fillingAlgorithm> ... </fillingAlgorithm> </formData> </formsOpOk> <formsOpFailed> <formData id="{F377315E-CF1B-4902-A4B3-84ACCA39E10A}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> <matching matchingType="CFormData::mtWin32"> ... </matching> <fillingAlgorithm> ... </fillingAlgorithm> </formData> </formsOpFailed> </resultSigns> ... </opPasswordChange></code></pre> </div> <p>В приведенном примере при завершении операции смены пароля ошибкой (для тестового приложения – при имуляции данной ситуации) появляется окно с сообщением об ошибке (форма-признак ошибки операции). ESSO Агент закрывает это окно нажатием кнопки "OK" (это действие описано в алгоритме заполнения формы-признака ошибки операции).</p> <p>После этого происходит повторный матчинг окна смены пароля. Повторный матчинг будет выполнен не более 2 раз. По истечении количества попыток появится окно ESSO Агента с запросом способа обработки ошибки. <br />При успешном выполнении операции открывается окно с сообщением об успешной смене пароля.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.operations.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>определение данных для интерфейса реакции на ошибку (на примере операции смены пароля), а именно: отображение действия, предусмотренного по умолчанию, определение запрещенных опций.</em></p> </li> </ul> <p>Описание операции, целевой формы (формы смены пароля), форм-признаков успеха и ошибки операции:</p> <div class="codebox"> <pre><code><opPasswordChange failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> ... </forms> <resultSigns> <formsOpOk> ... </formsOpOk> <formsOpFailed> ... </formsOpFailed> </resultSigns> <failureReactionAskingDetails isDefaultOptionDisabled="0"> <disabledOptions> <failureReaction>frRematchTargetForm</failureReaction> <failureReaction>frNone</failureReaction> </disabledOptions> </failureReactionAskingDetails> </opPasswordChange></code></pre> </div> <p>В приведенном примере по истечении количества попыток рематчинга окна смены пароля появляется окно ESSO Агента с запросом способа обработки ошибки. При этом в окне запроса выделено действие по умолчанию (для приложений с типом запуска "Только Indeed-Id ESSO Агент" – это завершение приложения), повторный матчинг окна и игнорирование ошибки запрещены.</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.operations.Example2.app</em>).</p>'
contentstext = 'Описание структуры операций в SSO шаблонах, их синтаксис параметры и атрибуты, примеры описания операций. СИНТАКСИС <[операция] timeoutMs="таймаут" failureReaction="реакция на ошибку" rematchAttemptsLimit="лимит попыток рематчинга">> <forms> <formDat...'
kbarticleid = '137'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Операции и формы: Общие сведения'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1599'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457946971'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><em><strong>Операцией </strong></em>называется процесс выполнения действий, необходимых для аутентификации (вход в приложение, смена пароля, разблокировка).</p> <p>Шаблоны позволяют задать три операции: операция входа, операция смены пароля, операция разблокировки. Все операции являются опциональными. Описания всех операций одинаковы за исключением непосредственно названия операции.</p> <p>В ходе выполнения операции происходят изменения в пользовательском интерфейсе приложения: в нем появляются и исчезают окна, изменяется их содержимое и т.д.</p> <p>Операция начинается с матчинга целевой формы приложения. <em><strong>Целевой формой приложения</strong></em> называется окно SSO-приложения, требующее ввода аутентификационных данных. Как правило, такими формами в приложениях являются форма входа, форма смены пароля, форма разблокировки. При этом в описании одной операции может быть задана одна или несколько целевых форм. Например, некоторые приложения имеют несколько форм входа. В этом случае в операции входа необходимо описать все формы, обработку которых требуется выполнять.</p> <p><strong><em>Матчингом (целевой) формы приложения</em></strong> называется процесс определения (целевой) формы ESSO Агентом.</p> <p>После матчинга формы выполняется алгоритм заполнения данной формы ESSO Агентом (если он задан). Данные для заполнения формы могут быть взяты из базы данных SSO, сгенерированы ESSO Агентом или запрошены у пользователя в ходе выполнения операции.</p> <p>После заполнения формы происходит обработка введенных данных. При этом интерфейс приложения может изменяться: могут появляться новые или изменяться существующие формы. Формы, по матчингу которых определяется успешное окончание операции, называются <strong><em>формами-признаками успеха операции</em></strong>. Формы, по матчингу которых определяется ошибка операции, – <strong><em>формами-признаками ошибки операции</em></strong>.</p> <p>Операция завершается ошибкой в следующих случаях:</p> <ul> <li> <p>при выполнении алгоритма заполнения возникла ошибка (например, ESSO Агенту не удалось найти контрол для ввода данных);</p> </li> <li> <p>если матчится форма-признак ошибки и для операции не задан таймаут;</p> </li> <li> <p>если для операции задан таймаут, матчится форма-признак ошибки и с момента матчинга проходит время, равное таймауту (т.е. истекает таймаут операции после первого матчинга признака ошибки).</p> </li> </ul> <p>При этом данные операции теряются. При начале новой операции такого же типа с этой же учетной записью данные снова будут запрошены у пользователя или сгенерированы ESSO Агентом.</p> <p>При завершении операции с ошибкой выполняется действие, заданное в качестве реакции на ошибку в описании операции. ESSO Агент выполняет определенное действие или запрашивает действие у пользователя (в зависимости от описания операции).</p> <p>Операция завершается успешно, если матчится форма-признак успеха. В этом случае данные операции сохраняются в базу данных SSO.</p>'
contentstext = '_ОПЕРАЦИЕЙ _называется процесс выполнения действий, необходимых для аутентификации (вход в приложение, смена пароля, разблокировка). Шаблоны позволяют задать три операции: операция входа, операция смены пароля, операция разблокировки. Все операции являю...'
138 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Операции и формы: Общие сведения'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1599'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457946971'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><em><strong>Операцией </strong></em>называется процесс выполнения действий, необходимых для аутентификации (вход в приложение, смена пароля, разблокировка).</p> <p>Шаблоны позволяют задать три операции: операция входа, операция смены пароля, операция разблокировки. Все операции являются опциональными. Описания всех операций одинаковы за исключением непосредственно названия операции.</p> <p>В ходе выполнения операции происходят изменения в пользовательском интерфейсе приложения: в нем появляются и исчезают окна, изменяется их содержимое и т.д.</p> <p>Операция начинается с матчинга целевой формы приложения. <em><strong>Целевой формой приложения</strong></em> называется окно SSO-приложения, требующее ввода аутентификационных данных. Как правило, такими формами в приложениях являются форма входа, форма смены пароля, форма разблокировки. При этом в описании одной операции может быть задана одна или несколько целевых форм. Например, некоторые приложения имеют несколько форм входа. В этом случае в операции входа необходимо описать все формы, обработку которых требуется выполнять.</p> <p><strong><em>Матчингом (целевой) формы приложения</em></strong> называется процесс определения (целевой) формы ESSO Агентом.</p> <p>После матчинга формы выполняется алгоритм заполнения данной формы ESSO Агентом (если он задан). Данные для заполнения формы могут быть взяты из базы данных SSO, сгенерированы ESSO Агентом или запрошены у пользователя в ходе выполнения операции.</p> <p>После заполнения формы происходит обработка введенных данных. При этом интерфейс приложения может изменяться: могут появляться новые или изменяться существующие формы. Формы, по матчингу которых определяется успешное окончание операции, называются <strong><em>формами-признаками успеха операции</em></strong>. Формы, по матчингу которых определяется ошибка операции, – <strong><em>формами-признаками ошибки операции</em></strong>.</p> <p>Операция завершается ошибкой в следующих случаях:</p> <ul> <li> <p>при выполнении алгоритма заполнения возникла ошибка (например, ESSO Агенту не удалось найти контрол для ввода данных);</p> </li> <li> <p>если матчится форма-признак ошибки и для операции не задан таймаут;</p> </li> <li> <p>если для операции задан таймаут, матчится форма-признак ошибки и с момента матчинга проходит время, равное таймауту (т.е. истекает таймаут операции после первого матчинга признака ошибки).</p> </li> </ul> <p>При этом данные операции теряются. При начале новой операции такого же типа с этой же учетной записью данные снова будут запрошены у пользователя или сгенерированы ESSO Агентом.</p> <p>При завершении операции с ошибкой выполняется действие, заданное в качестве реакции на ошибку в описании операции. ESSO Агент выполняет определенное действие или запрашивает действие у пользователя (в зависимости от описания операции).</p> <p>Операция завершается успешно, если матчится форма-признак успеха. В этом случае данные операции сохраняются в базу данных SSO.</p>'
contentstext = '_ОПЕРАЦИЕЙ _называется процесс выполнения действий, необходимых для аутентификации (вход в приложение, смена пароля, разблокировка). Шаблоны позволяют задать три операции: операция входа, операция смены пароля, операция разблокировки. Все операции являю...'
kbarticleid = '138'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Описание приложения'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1646'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457947193'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Описание приложения необходимо для идентификации приложения и отображения информации о нем в системе ESSO. Обычно в качестве описания используют название приложения.</p> <p>Описание приложения должно быть уникальным (в противном случае при загрузке шаблона возникнет ошибка).</p> <p>Указанное описание отображается в заголовке записи приложения в списке зарегистрированных приложений в ESSO Консоли и в списке приложений в окне быстрого запуска.</p> <p><strong>СИНТАКСИС</strong></p> <p><userDescription><em>пользовательское описание приложения</em></userDescription></p> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><userDescription></em></strong><br />Описание приложения.</p> <p>Описание представляет собой произвольную строку, уникальную во множестве описаний зарегистрированных приложений.</p> <p>Описание может содержать специальные символы, для задания которых используются сущности, определенные в формате XML, а именно:</p> <p><strong>Символ</strong> <strong>Сущность</strong><br /> < &lt;<br /> > &gt;<br /> & &amp;<br /> " &quot;<br /> \' &apos;<br /><br /><strong>ПРИМЕР</strong></p> <p>Описание приложения:</p> <div class="codebox"> <pre><code><userDescription>&lt;Indeed-Id Test App&gt;</userDescription></code></pre> </div> <p>В приведенном примере идентификатором приложения в ESSO является строка <em><Indeed-Id Test App></em>. Она же отображается в списке зарегистрированных приложений в ESSO Консоли и в окне быстрого запуска.</p>'
contentstext = 'Описание приложения необходимо для идентификации приложения и отображения информации о нем в системе ESSO. Обычно в качестве описания используют название приложения. Описание приложения должно быть уникальным (в противном случае при загрузке шаблона воз...'
112 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Описание приложения'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1646'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457947193'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Описание приложения необходимо для идентификации приложения и отображения информации о нем в системе ESSO. Обычно в качестве описания используют название приложения.</p> <p>Описание приложения должно быть уникальным (в противном случае при загрузке шаблона возникнет ошибка).</p> <p>Указанное описание отображается в заголовке записи приложения в списке зарегистрированных приложений в ESSO Консоли и в списке приложений в окне быстрого запуска.</p> <p><strong>СИНТАКСИС</strong></p> <p><userDescription><em>пользовательское описание приложения</em></userDescription></p> <p><strong>ПАРАМЕТРЫ</strong></p> <p><strong><em><userDescription></em></strong><br />Описание приложения.</p> <p>Описание представляет собой произвольную строку, уникальную во множестве описаний зарегистрированных приложений.</p> <p>Описание может содержать специальные символы, для задания которых используются сущности, определенные в формате XML, а именно:</p> <p><strong>Символ</strong> <strong>Сущность</strong><br /> < &lt;<br /> > &gt;<br /> & &amp;<br /> " &quot;<br /> \' &apos;<br /><br /><strong>ПРИМЕР</strong></p> <p>Описание приложения:</p> <div class="codebox"> <pre><code><userDescription>&lt;Indeed-Id Test App&gt;</userDescription></code></pre> </div> <p>В приведенном примере идентификатором приложения в ESSO является строка <em><Indeed-Id Test App></em>. Она же отображается в списке зарегистрированных приложений в ESSO Консоли и в окне быстрого запуска.</p>'
contentstext = 'Описание приложения необходимо для идентификации приложения и отображения информации о нем в системе ESSO. Обычно в качестве описания используют название приложения. Описание приложения должно быть уникальным (в противном случае при загрузке шаблона воз...'
kbarticleid = '112'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Параметры запуска Web Шаблонизатора'
isedited = '1'
editeddateline = '1492525086'
editedstaffid = '5'
views = '1962'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457531862'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><span style="text-decoration: underline;"><strong>Для формы:</strong></span></p> <p><strong>Url страницы:</strong> параметр содержит url адрес страницы, обрабатываемой шаблонизатором. В шаблоне содержится в теге <url>. Обратите внимание, что url целевой страницы может изменяться, например, отличия в URL страницы авторизации Google:</p> <blockquote> <pre><code>https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DFQ17U4SQIISdwAPwkoF4 https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DpRJ7U9ToNZK-wAPkyYGIBA</code></pre> </blockquote> <div>В данном примере необходимо использовать регулярное выражение, например:<br /><br /></div> <blockquote> <pre><code> https://accounts\\.google\\.com/ServiceLogin.*</code></pre> </blockquote> <p><strong>Заголовок страницы:</strong> значения атрибута title страницы обрабатываемой шаблонизатором. В шаблоне содержится в теге <title>. Обратите внимание на страницы с динамически изменяемыми заголовками, для таких страниц необходимо либо отказаться от использования параметра title либо использовать регулярное выражение.</p> <p>Пример:</p> <div> <blockquote> <pre><code>Вход<span data-mce-bogus="1" class="mce-nbsp"> </span>– Google Аккаунты</code></pre> </blockquote> </div> <p><span style="text-decoration: underline;"><strong>Для контролов формы:</strong></span><br />Все атрибуты и теги элемента формы в шаблоне содержатся в теге webNode</p> <p><strong>Имя тега:</strong> параметр содержит имя элемента. В шаблоне содержится в атрибуте tagName тега webNode.<br />Рекомендуется к использованию<br />Пример:</p> <div> <blockquote> <pre>tagName="DIV"</pre> </blockquote> </div> <p><strong>Текст:</strong> текст элемента. В шаблоне содержится в теге <text>. При использовании данного параметра рекомендуется проверить получившийся шаблон - массив текста в шаблоне может превышать ожидаемый, что приведёт к проблеме с матчингом и усложнит редактирование шаблона. <br />Пример:</p> <div> <blockquote> <pre><code> <text>Вход в систему</text></code></pre> </blockquote> </div> <p><strong>Атрибут id:</strong> значение атрибута id элемента. В шаблоне содержится в теге <id>.<br />Рекомендуется к использованию. <br />Пример:</p> <div> <blockquote> <pre><code><id>gaia_loginform</id></code></pre> </blockquote> </div> <p> <br /><strong>Атрибут name:</strong> значение атрибута name элемента. В шаблоне содержится в теге <name>. <br />Рекомендуется к использованию.<br />Пример:</p> <div> <blockquote> <pre><code><name>Email</name></code></pre> </blockquote> </div> <p><strong>Другие атрибуты:</strong> при выборе данного параметра необходимо выбрать атрибуты из списка, которые необходимо использовать в шаблоне. В шаблоне описания выбранных атрибутов содержится в теге attributes.<br />Описание отдельного атрибута находится в теге <attribute>, содержащем значение name - имя атрибута и <value> - значение атрибута. <br />Данную параметр рекомендуется использовать, когда остальные параметры не могут однозначно описать элемент формы.</p> <p>Пример:</p> <div> <blockquote> <pre><code><attributes> <attribute name="class"> <value></value> </attribute> <attribute name="closure_lm_121920"> <value>[object Object]</value> </attribute> <attribute name="placeholder"> <value>Эл. почта</value> </attribute> <attribute name="spellcheck"> <value>false</value> </attribute> </attributes></code></pre> </blockquote> </div> <p><br /><br /></p> <p>Стилевые атрибуты: при выборе данного параметра необходимо выбрать стилевые атрибуты из списка, которые необходимо использовать в шаблоне. В шаблоне описания выбранных стилевых атрибутов содержится в теге styleAttributes. Описание отдельного стилевого атрибута находится в теге <attribute>, содержащем значение name - имя стилевого атрибута и <value> - значение стилевого атрибута.<br />Данные параметр следует использовать только тогда, когда все остальные параметры не могут однозначно описать элемент формы. </p> <p>Пример:</p> <div> <blockquote> <pre><code> <styleAttributes> <attribute name="visibility"> <value>inherit</value> </attribute> <attribute name="width"> <value>100%</value> </attribute> <attribute name="wordBreak"> <value>normal</value> </attribute> <attribute name="zIndex"> <value>1</value> </attribute> </styleAttributes></code></pre> </blockquote> </div> <p><strong>Если есть id, подавлять всё остальное:</strong> Если у веб элемента есть атрибут id, то все другие атрибуты для данного элемента не будут сохранены в шаблон. Можно применить, если атрибут id - основной параметр по которому будет происходить матчинг целевой формы.</p> <p><strong>Использовать текст, только когда нет других:</strong> атрибут текст будет использован, только если никаких других указанных атрибутов для данного элемента не будет найдено. В противном случае, атрибут text не будет записан в шаблон. рекомендуется к использованию.</p> <p><span style="text-decoration: underline;"><strong>Алгоритм заполнения:</strong></span></p> <p><strong>Нет:</strong> в шаблоне не будет алгоритма заполнения</p> <p><strong>На основе fillWebCtrl:</strong> при выборе данного пункта, шаблонизатор запросит у пользователя указать 3 контрола на веб форме с помощью сочетания клавиш Ctrl+Shift+T и сгенерирует 3 команды в алгоритме заполнения для данных элементов:<br />первая команда - заполнение веб контрола значением логина пользователя;<br />вторая команда - заполнение веб значением пароля учетной записи SSO;<br />третья команда - нажатие на кнопку "ОК".<br />В каждой команде содержится данные об элементе на форме, с которым данная команда работает.</p> <p>Пример Алгоритма заполнения:</p> <div> <blockquote> <pre><code><fillingAlgorithm> <command type="ctFillWebCtrl"> <description>Ввести имя пользователя</description> <dataFillWebCtrl fillingType="cftSetText"> <webCtrl> <path> <webNode> <webNode> <webNode> <webNode> <id>gaia_loginform</id> <webNode> <id>Email</id> </webNode> </webNode> </webNode> </webNode> </webNode> </path> </webCtrl> <fieldValueInfo field="ffUserName"/> </dataFillWebCtrl> </command> <command type="ctFillWebCtrl"> <description>Ввести пароль</description> <dataFillWebCtrl fillingType="cftSetText"> <webCtrl> <path> <webNode> <webNode> <webNode> <webNode> <id>gaia_loginform</id> <webNode> <id>Passwd</id> </webNode> </webNode> </webNode> </webNode> </webNode> </path> </webCtrl> <fieldValueInfo field="ffPassword"/> </dataFillWebCtrl> </command> <command type="ctFillWebCtrl"> <description>Нажать на OK</description> <dataFillWebCtrl fillingType="cftClickButton"> <webCtrl> <path> <webNode> <webNode> <webNode> <webNode> <id>gaia_loginform</id> <webNode> <id>signIn</id> </webNode> </webNode> </webNode> </webNode> </webNode> </path> </webCtrl> <fieldValueInfo field="ffNoData"/> </dataFillWebCtrl> </command> </fillingAlgorithm></code></pre> </blockquote> </div> <p>Рекомендованный набор параметров<br /><br /><img src="https://support.indeed-id.ru/__swift/files/149252507102cccebe6cc1ae919b118b07c23bd42b9d54ce35.png" /></p>'
contentstext = 'ДЛЯ ФОРМЫ: URL СТРАНИЦЫ: параметр содержит url адрес страницы, обрабатываемой шаблонизатором. В шаблоне содержится в теге <url>. Обратите внимание, что url целевой страницы может изменяться, например, отличия в URL страницы авторизации Google: > https...'
104 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Параметры запуска Web Шаблонизатора'
isedited = '1'
editeddateline = '1492525086'
editedstaffid = '5'
views = '1962'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457531862'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p><span style="text-decoration: underline;"><strong>Для формы:</strong></span></p> <p><strong>Url страницы:</strong> параметр содержит url адрес страницы, обрабатываемой шаблонизатором. В шаблоне содержится в теге <url>. Обратите внимание, что url целевой страницы может изменяться, например, отличия в URL страницы авторизации Google:</p> <blockquote> <pre><code>https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DFQ17U4SQIISdwAPwkoF4 https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DpRJ7U9ToNZK-wAPkyYGIBA</code></pre> </blockquote> <div>В данном примере необходимо использовать регулярное выражение, например:<br /><br /></div> <blockquote> <pre><code> https://accounts\\.google\\.com/ServiceLogin.*</code></pre> </blockquote> <p><strong>Заголовок страницы:</strong> значения атрибута title страницы обрабатываемой шаблонизатором. В шаблоне содержится в теге <title>. Обратите внимание на страницы с динамически изменяемыми заголовками, для таких страниц необходимо либо отказаться от использования параметра title либо использовать регулярное выражение.</p> <p>Пример:</p> <div> <blockquote> <pre><code>Вход<span data-mce-bogus="1" class="mce-nbsp"> </span>– Google Аккаунты</code></pre> </blockquote> </div> <p><span style="text-decoration: underline;"><strong>Для контролов формы:</strong></span><br />Все атрибуты и теги элемента формы в шаблоне содержатся в теге webNode</p> <p><strong>Имя тега:</strong> параметр содержит имя элемента. В шаблоне содержится в атрибуте tagName тега webNode.<br />Рекомендуется к использованию<br />Пример:</p> <div> <blockquote> <pre>tagName="DIV"</pre> </blockquote> </div> <p><strong>Текст:</strong> текст элемента. В шаблоне содержится в теге <text>. При использовании данного параметра рекомендуется проверить получившийся шаблон - массив текста в шаблоне может превышать ожидаемый, что приведёт к проблеме с матчингом и усложнит редактирование шаблона. <br />Пример:</p> <div> <blockquote> <pre><code> <text>Вход в систему</text></code></pre> </blockquote> </div> <p><strong>Атрибут id:</strong> значение атрибута id элемента. В шаблоне содержится в теге <id>.<br />Рекомендуется к использованию. <br />Пример:</p> <div> <blockquote> <pre><code><id>gaia_loginform</id></code></pre> </blockquote> </div> <p> <br /><strong>Атрибут name:</strong> значение атрибута name элемента. В шаблоне содержится в теге <name>. <br />Рекомендуется к использованию.<br />Пример:</p> <div> <blockquote> <pre><code><name>Email</name></code></pre> </blockquote> </div> <p><strong>Другие атрибуты:</strong> при выборе данного параметра необходимо выбрать атрибуты из списка, которые необходимо использовать в шаблоне. В шаблоне описания выбранных атрибутов содержится в теге attributes.<br />Описание отдельного атрибута находится в теге <attribute>, содержащем значение name - имя атрибута и <value> - значение атрибута. <br />Данную параметр рекомендуется использовать, когда остальные параметры не могут однозначно описать элемент формы.</p> <p>Пример:</p> <div> <blockquote> <pre><code><attributes> <attribute name="class"> <value></value> </attribute> <attribute name="closure_lm_121920"> <value>[object Object]</value> </attribute> <attribute name="placeholder"> <value>Эл. почта</value> </attribute> <attribute name="spellcheck"> <value>false</value> </attribute> </attributes></code></pre> </blockquote> </div> <p><br /><br /></p> <p>Стилевые атрибуты: при выборе данного параметра необходимо выбрать стилевые атрибуты из списка, которые необходимо использовать в шаблоне. В шаблоне описания выбранных стилевых атрибутов содержится в теге styleAttributes. Описание отдельного стилевого атрибута находится в теге <attribute>, содержащем значение name - имя стилевого атрибута и <value> - значение стилевого атрибута.<br />Данные параметр следует использовать только тогда, когда все остальные параметры не могут однозначно описать элемент формы. </p> <p>Пример:</p> <div> <blockquote> <pre><code> <styleAttributes> <attribute name="visibility"> <value>inherit</value> </attribute> <attribute name="width"> <value>100%</value> </attribute> <attribute name="wordBreak"> <value>normal</value> </attribute> <attribute name="zIndex"> <value>1</value> </attribute> </styleAttributes></code></pre> </blockquote> </div> <p><strong>Если есть id, подавлять всё остальное:</strong> Если у веб элемента есть атрибут id, то все другие атрибуты для данного элемента не будут сохранены в шаблон. Можно применить, если атрибут id - основной параметр по которому будет происходить матчинг целевой формы.</p> <p><strong>Использовать текст, только когда нет других:</strong> атрибут текст будет использован, только если никаких других указанных атрибутов для данного элемента не будет найдено. В противном случае, атрибут text не будет записан в шаблон. рекомендуется к использованию.</p> <p><span style="text-decoration: underline;"><strong>Алгоритм заполнения:</strong></span></p> <p><strong>Нет:</strong> в шаблоне не будет алгоритма заполнения</p> <p><strong>На основе fillWebCtrl:</strong> при выборе данного пункта, шаблонизатор запросит у пользователя указать 3 контрола на веб форме с помощью сочетания клавиш Ctrl+Shift+T и сгенерирует 3 команды в алгоритме заполнения для данных элементов:<br />первая команда - заполнение веб контрола значением логина пользователя;<br />вторая команда - заполнение веб значением пароля учетной записи SSO;<br />третья команда - нажатие на кнопку "ОК".<br />В каждой команде содержится данные об элементе на форме, с которым данная команда работает.</p> <p>Пример Алгоритма заполнения:</p> <div> <blockquote> <pre><code><fillingAlgorithm> <command type="ctFillWebCtrl"> <description>Ввести имя пользователя</description> <dataFillWebCtrl fillingType="cftSetText"> <webCtrl> <path> <webNode> <webNode> <webNode> <webNode> <id>gaia_loginform</id> <webNode> <id>Email</id> </webNode> </webNode> </webNode> </webNode> </webNode> </path> </webCtrl> <fieldValueInfo field="ffUserName"/> </dataFillWebCtrl> </command> <command type="ctFillWebCtrl"> <description>Ввести пароль</description> <dataFillWebCtrl fillingType="cftSetText"> <webCtrl> <path> <webNode> <webNode> <webNode> <webNode> <id>gaia_loginform</id> <webNode> <id>Passwd</id> </webNode> </webNode> </webNode> </webNode> </webNode> </path> </webCtrl> <fieldValueInfo field="ffPassword"/> </dataFillWebCtrl> </command> <command type="ctFillWebCtrl"> <description>Нажать на OK</description> <dataFillWebCtrl fillingType="cftClickButton"> <webCtrl> <path> <webNode> <webNode> <webNode> <webNode> <id>gaia_loginform</id> <webNode> <id>signIn</id> </webNode> </webNode> </webNode> </webNode> </webNode> </path> </webCtrl> <fieldValueInfo field="ffNoData"/> </dataFillWebCtrl> </command> </fillingAlgorithm></code></pre> </blockquote> </div> <p>Рекомендованный набор параметров<br /><br /><img src="https://support.indeed-id.ru/__swift/files/149252507102cccebe6cc1ae919b118b07c23bd42b9d54ce35.png" /></p>'
contentstext = 'ДЛЯ ФОРМЫ: URL СТРАНИЦЫ: параметр содержит url адрес страницы, обрабатываемой шаблонизатором. В шаблоне содержится в теге <url>. Обратите внимание, что url целевой страницы может изменяться, например, отличия в URL страницы авторизации Google: > https...'
kbarticleid = '104'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Параметры запуска Win32 Шаблонизатора'
isedited = '1'
editeddateline = '1492525124'
editedstaffid = '5'
views = '1966'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457090127'
articlestatus = '1'
articlerating = '5'
ratinghits = '1'
ratingcount = '5'
seosubject = null
contents = '<p><span class="bbu"><strong>Настройки генерации шаблона:</strong></span></p> <ul> <li> <p><strong>Глубина просмотра контролов формы</strong> - данный параметр задаёт насколько глубоко по уровню вложенности шаблонизатор будет собирать данные о контролах. Данный параметр задаётся вручную при создании шаблона.<br />Если параметр равен 0, то шаблонизатор соберёт информацию только о невложенных контролах, <br />Если параметр равен 1, то шаблонизатор соберёт данные о невложенных контрролах и о контролах 1 уровня вложенности.<br />и т.д.</p> </li> <li> <p><strong>Глубина контролов выбранной формы</strong> - данный параметр отображает максимальную глубину контролов на выбранной форме, т.е. сколько уровней вложенности контролов существует на форме. При выставлении параметра "Глубина просмотра контролов формы" рекомендуется ориентироваться на этот параметр.</p> </li> </ul> <p><strong><span class="bbu">Для формы:</span></strong></p> <ul> <li> <p><strong>Заголовок</strong> - Параметр содержащий заголовок формы. В шаблоне значение заголовка находится в теге <caption>. Рекомендуется использовать данный параметр в шаблоне, кроме случаев, когда заголовок динамически изменяется.</p> <br /> <p>Пример: <caption>Заголовок Формы</caption>.</p> </li> <li> <p><strong>Имя класса окна</strong> - Параметр, содержащий имя класса окна. В шаблоне имя класса окна находится в параметре className в теге <matchingWin32>. Рекомендуется использовать данный параметр в шаблоне.</p> <br /> <p>Пример: className="FormClassName"</p> </li> <li> <p><strong>Размеры</strong> - Параметр, содержащий размеры целевой формы. Полученные данные хранятся в параметрах cx и cy тега <size> который находится в теге <matchingWin32>. Рекомендуем использовать данный параметр только в случаях, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.</p> <br /> <p>Пример: <size cx="1000" cy="500"></p> </li> </ul> <p><em>Пример из шаблона, в котором использованы все три параметра:</em></p> <div class="codebox"> <pre><code> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="FormClassName" componentId="Test"> <caption>Заголовок Формы</caption> <size cx="1000" cy="500"/> <ctrls> ... </ctrls> </matchingWin32> </matching></code></pre> </div> <p> <br /> <br /><strong><span class="bbu">Для контролов формы:</span></strong></p> <ul> <li> <p><strong>CtrlId </strong>- Id контрола, в шаблоне данное значение находится в параметре ctrlId тега <ctrl>.<br />Рекомендуем использовать данный параметр, кроме случаев когда Id контролов на форме генерируется автоматически (как понять что id контролов на форме генерируются автоматически - создайте два шаблона с помощью шаблонизатора с включенным параметром CtrlId и сравните полученные значения Id контролов для соответствующих контролов. В некоторых случаях может потребоваться выход из приложения или перезагрузка для генерации нового набора контролов).</p> <br /> <p>Пример: ctrlId="1003"</p> <br /> <p> </p> </li> <li> <p><strong>Имя класса окна</strong> - класс контрола. В шаблоне данный параметр находится в параметре className тега <ctrl>. Класс контрола часто помогает администратору Indeed-Id понять какой контрол описан в шаблоне. Рекомендуется для использования в шаблоне.</p> <br /> <p>Пример: className="Button"</p> </li> <li> <p><strong>Текст</strong> - текст содержащийся в свойстве text контрола. В шаблоне содержится в теге <text>.</p> <p>Внимание:При создании шаблона обращайте внимание на текст контрола - при различных обстоятельствах (смена языка в системе, смена языка в приложении, изменение версии приложение, смена пользователя и тд.) Текст в контроле изменится, что может помешать процедуре матчига приложения. Не используйте динамически изменяющийся текст в шаблоне, либо учитывайте все возможные варианты данного параметра.</p> <br /> <p>Пример: <text>OK</text>.</p> </li> <li> <p><strong>Размеры</strong> - параметр контрола Size содержащий значение длины и ширины контрола. В шаблоне данные значения хранятся в параметрах cx и cy в теге <size> - длина и ширина контрола соответственно. <br />Данный параметр рекомендуется использовать в случае, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.</p> <br /> <p>Пример: <size cx="189" cy="16"/></p> </li> <li> <p><strong>Позиция</strong> - параметр контрола Location, содержащий позицию левого верхнего угла элемента управления относительно левого верхнего угла контейнера. В шаблоне данные значения хранятся в параметрах x и y в теге <position>. <br />Данный параметр рекомендуется использовать в случае, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.</p> <br /> <p>Пример: <position x="159" y="202"/></p> </li> <li> <p><strong>Visible </strong>- параметр контрола Visible, указывающее, отображаются ли контрол и все его дочерние контролы. В шаблоне содержится в параметре visible тега <ctrl>. Visible="1" контрол видим для пользователя, Visible="0" контрол невидим для пользователя.</p> <p>Внимание: значение данного контрола на форме может изменятся. Невидимые контролы на форме могут становиться видимыми по различным причинам (например: происходит ошибка и текст сообщения об ошибке становится видимым на форме (visible="1")). Рекомендуем обратить внимание на контролы с параметром visible=0, чтобы верно обработать ситуацию, когда они станут видимыми.</p> <br /> <p>Пример: visible="1".</p> </li> <li> <p><strong>Enable</strong> - параметр контрола Enabled показывающий, сможет ли элемент управления отвечать на действия пользователя. В шаблоне содержится в параметре Enabled тега <ctrl>. <br />Enable="0" - контрол отключен и не отвечает на действия пользователя;<br />Enable="1" - контрол отвечает на действия пользователей.</p> <p>Внимание: параметр Enable контрола может меняться в зависимости от различных обстоятельств. (Например: форма входа содержит контрол ввода имени пользователя, контрол ввода пароля и кнопку "ОК". кнопка "ОК" будет недоступной (Enable="0") пока хотя бы одно из полей ввода остаётся пустым. Когда оба поля заполнены кнопка становится доступной (Enabled="1"). В данной примере рекомендуется убрать параметр Enabled для контрола кнопки "ОК", чтобы избежать проблемы при матчинге и заполнении).</p> <br /> <p>Пример: enabled="1".</p> </li> </ul> <p><em>Пример описания контрола, в котором использованы все параметры:</em></p> <div class="codebox"> <pre><code> <ctrl className="Button" ctrlId="1003" enabled="1" visible="1"> <text>Ok</text> <position x="159" y="202"/> <size cx="189" cy="16"/> </ctrl></code></pre> </div> <p><span class="bbu"><strong>Алгоритм заполнения:</strong></span></p> <ul> <li> <p><strong>Нет</strong> - Алгоритм заполнения не будет сгенерирован в шаблоне, тег <fillingAlgorithm> будет отсутствовать в шаблоне.</p> </li> <li> <p><strong>На основе settext</strong> - Шаблонизатор сгенерирует команды заполнения поля логина, заполнения поля пароля и нажатия кнопки "ОК". Каждая команда будет содержать данные контрола, к которому она должна быть применена, данные по контролом шаблонизатор получает в результате выполнения инструкций шаблонизатора пользователем, указывающим последовательность контролов логина, контрол пароля и кнопку ок. Заполнения контролов будет происходит стандартным методом SetText.<br />Рекомендуется использовать данный алгоритм заполнения.</p> <br /> <p>Пример:<br /> <code><fillingAlgorithm></code><br /><code> <command type="ctFillCtrl"></code><br /><code> <description>Ввести имя пользователя</description></code><br /><code> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"></code><br /><code> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"></code><br /><code> <position x="159" y="15"/></code><br /><code> <size cx="189" cy="23"/></code><br /><code> </ctrl></code><br /><code> <fieldValueInfo field="ffUserName"/></code><br /><code> </dataFillCtrl></code><br /><code> </command></code><br /><code> <command type="ctFillCtrl"></code><br /><code> <description>Ввести пароль</description></code><br /><code> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"></code><br /><code> <ctrl className="Edit" ctrlId="1002" enabled="1" visible="1"></code><br /><code> <position x="159" y="76"/></code><br /><code> <size cx="189" cy="23"/></code><br /><code> </ctrl></code><br /><code> <fieldValueInfo field="ffPassword"/></code><br /><code> </dataFillCtrl></code><br /><code> </command></code><br /><code> <command type="ctFillCtrl"></code><br /><code> <description>Нажать на OK</description></code><br /><code> <dataFillCtrl fillingType="cftClickButton" clearCtrlText="1"></code><br /><code> <ctrl className="Edit" ctrlId="1005" enabled="1" visible="1"></code><br /><code> <position x="0" y="125"/></code><br /><code> <size cx="159" cy="23"/></code><br /><code> </ctrl></code><br /><code> <fieldValueInfo field="ffNoData"/></code><br /><code> </dataFillCtrl></code><br /><code> </command></code><br /><code> </fillingAlgorithm></code></p> </li> <li> <p><strong>Эмуляция ввода</strong> - шаблонизатор сгенерирует команды установки фокуса в поле логина, заполнения поля логина, заполнения поля пароля, нажатия кнопки "ОК", команды перехода между контролами и команды паузы. Первой командой будет команда установки фокуса на контроле имени пользователя (первом контроле, который укажет пользователь при создании шаблона). Команды заполнения не будут содержать описание контролов, а их действие будет проводиться с текущим контролом в фокусе. Само заполнение будет происходит с помощью эмуляции нажатия клавиш клавиатуры. Переход фокуса между контролами будут осуществляться эмуляцией нажатия клавиши Tab. В алгоритме заполнения также будут присутствовать команды паузы в 50 миллисекунд между прочими командами.<br />Рекомендуется к использованию в шаблонах для приложений, в которых использование метода settext невозможно или затруднено. </p> <br /> <p>Пример: <br /><fillingAlgorithm><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctPosition"><br /> <description>Перейти на контрол имени пользователя</description><br /> <dataPosition waitIntervalMs="50"><br /> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"><br /> <position x="159" y="15"/><br /> <size cx="189" cy="23"/><br /> </ctrl><br /> </dataPosition><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctFillCurrentCtrl"><br /> <description>Ввести имя пользователя</description><br /> <dataFillCurrentCtrl clearCtrlText="1"><br /> <fieldValueInfo field="ffUserName"/><br /> </dataFillCurrentCtrl><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctControl"><br /> <description>Перейти на следующий контрол</description><br /> <dataControl type="cctTab" waitIntervalMs="50"/><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctFillCurrentCtrl"><br /> <description>Ввести пароль</description><br /> <dataFillCurrentCtrl clearCtrlText="1"><br /> <fieldValueInfo field="ffPassword"/><br /> </dataFillCurrentCtrl><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctControl"><br /> <description>Перейти на следующий контрол</description><br /> <dataControl type="cctTab" waitIntervalMs="50"/><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctControl"><br /> <description>Нажать на OK</description><br /> <dataControl type="cctEnter" waitIntervalMs="50"/><br /> </command><br /> </fillingAlgorithm></p> </li> </ul> <p>Внимание:<br />Полученные шаблонизатором алгоритмы заполнения практически всегда требуют дополнительных изменений, сделанных вручную, для корректного заполнения целевой формы.</p> <p> </p> <p>Пример окна шаблонизатора с выбранными рекомендованными параметрами:<br /><img src="https://support.indeed-id.ru/__swift/files/1492525105e755876c94a9c07eff3ac4df9112cd8dc24961ce.png" /></p>'
contentstext = 'НАСТРОЙКИ ГЕНЕРАЦИИ ШАБЛОНА: * ГЛУБИНА ПРОСМОТРА КОНТРОЛОВ ФОРМЫ - данный параметр задаёт насколько глубоко по уровню вложенности шаблонизатор будет собирать данные о контролах. Данный параметр задаётся вручную при создании шаблона. Если параметр ра...'
311 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Параметры запуска Win32 Шаблонизатора'
isedited = '1'
editeddateline = '1492525124'
editedstaffid = '5'
views = '1966'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457090127'
articlestatus = '1'
articlerating = '5'
ratinghits = '1'
ratingcount = '5'
seosubject = null
contents = '<p><span class="bbu"><strong>Настройки генерации шаблона:</strong></span></p> <ul> <li> <p><strong>Глубина просмотра контролов формы</strong> - данный параметр задаёт насколько глубоко по уровню вложенности шаблонизатор будет собирать данные о контролах. Данный параметр задаётся вручную при создании шаблона.<br />Если параметр равен 0, то шаблонизатор соберёт информацию только о невложенных контролах, <br />Если параметр равен 1, то шаблонизатор соберёт данные о невложенных контрролах и о контролах 1 уровня вложенности.<br />и т.д.</p> </li> <li> <p><strong>Глубина контролов выбранной формы</strong> - данный параметр отображает максимальную глубину контролов на выбранной форме, т.е. сколько уровней вложенности контролов существует на форме. При выставлении параметра "Глубина просмотра контролов формы" рекомендуется ориентироваться на этот параметр.</p> </li> </ul> <p><strong><span class="bbu">Для формы:</span></strong></p> <ul> <li> <p><strong>Заголовок</strong> - Параметр содержащий заголовок формы. В шаблоне значение заголовка находится в теге <caption>. Рекомендуется использовать данный параметр в шаблоне, кроме случаев, когда заголовок динамически изменяется.</p> <br /> <p>Пример: <caption>Заголовок Формы</caption>.</p> </li> <li> <p><strong>Имя класса окна</strong> - Параметр, содержащий имя класса окна. В шаблоне имя класса окна находится в параметре className в теге <matchingWin32>. Рекомендуется использовать данный параметр в шаблоне.</p> <br /> <p>Пример: className="FormClassName"</p> </li> <li> <p><strong>Размеры</strong> - Параметр, содержащий размеры целевой формы. Полученные данные хранятся в параметрах cx и cy тега <size> который находится в теге <matchingWin32>. Рекомендуем использовать данный параметр только в случаях, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.</p> <br /> <p>Пример: <size cx="1000" cy="500"></p> </li> </ul> <p><em>Пример из шаблона, в котором использованы все три параметра:</em></p> <div class="codebox"> <pre><code> <matching matchingType="CFormData::mtWin32"> <matchingWin32 className="FormClassName" componentId="Test"> <caption>Заголовок Формы</caption> <size cx="1000" cy="500"/> <ctrls> ... </ctrls> </matchingWin32> </matching></code></pre> </div> <p> <br /> <br /><strong><span class="bbu">Для контролов формы:</span></strong></p> <ul> <li> <p><strong>CtrlId </strong>- Id контрола, в шаблоне данное значение находится в параметре ctrlId тега <ctrl>.<br />Рекомендуем использовать данный параметр, кроме случаев когда Id контролов на форме генерируется автоматически (как понять что id контролов на форме генерируются автоматически - создайте два шаблона с помощью шаблонизатора с включенным параметром CtrlId и сравните полученные значения Id контролов для соответствующих контролов. В некоторых случаях может потребоваться выход из приложения или перезагрузка для генерации нового набора контролов).</p> <br /> <p>Пример: ctrlId="1003"</p> <br /> <p> </p> </li> <li> <p><strong>Имя класса окна</strong> - класс контрола. В шаблоне данный параметр находится в параметре className тега <ctrl>. Класс контрола часто помогает администратору Indeed-Id понять какой контрол описан в шаблоне. Рекомендуется для использования в шаблоне.</p> <br /> <p>Пример: className="Button"</p> </li> <li> <p><strong>Текст</strong> - текст содержащийся в свойстве text контрола. В шаблоне содержится в теге <text>.</p> <p>Внимание:При создании шаблона обращайте внимание на текст контрола - при различных обстоятельствах (смена языка в системе, смена языка в приложении, изменение версии приложение, смена пользователя и тд.) Текст в контроле изменится, что может помешать процедуре матчига приложения. Не используйте динамически изменяющийся текст в шаблоне, либо учитывайте все возможные варианты данного параметра.</p> <br /> <p>Пример: <text>OK</text>.</p> </li> <li> <p><strong>Размеры</strong> - параметр контрола Size содержащий значение длины и ширины контрола. В шаблоне данные значения хранятся в параметрах cx и cy в теге <size> - длина и ширина контрола соответственно. <br />Данный параметр рекомендуется использовать в случае, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.</p> <br /> <p>Пример: <size cx="189" cy="16"/></p> </li> <li> <p><strong>Позиция</strong> - параметр контрола Location, содержащий позицию левого верхнего угла элемента управления относительно левого верхнего угла контейнера. В шаблоне данные значения хранятся в параметрах x и y в теге <position>. <br />Данный параметр рекомендуется использовать в случае, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.</p> <br /> <p>Пример: <position x="159" y="202"/></p> </li> <li> <p><strong>Visible </strong>- параметр контрола Visible, указывающее, отображаются ли контрол и все его дочерние контролы. В шаблоне содержится в параметре visible тега <ctrl>. Visible="1" контрол видим для пользователя, Visible="0" контрол невидим для пользователя.</p> <p>Внимание: значение данного контрола на форме может изменятся. Невидимые контролы на форме могут становиться видимыми по различным причинам (например: происходит ошибка и текст сообщения об ошибке становится видимым на форме (visible="1")). Рекомендуем обратить внимание на контролы с параметром visible=0, чтобы верно обработать ситуацию, когда они станут видимыми.</p> <br /> <p>Пример: visible="1".</p> </li> <li> <p><strong>Enable</strong> - параметр контрола Enabled показывающий, сможет ли элемент управления отвечать на действия пользователя. В шаблоне содержится в параметре Enabled тега <ctrl>. <br />Enable="0" - контрол отключен и не отвечает на действия пользователя;<br />Enable="1" - контрол отвечает на действия пользователей.</p> <p>Внимание: параметр Enable контрола может меняться в зависимости от различных обстоятельств. (Например: форма входа содержит контрол ввода имени пользователя, контрол ввода пароля и кнопку "ОК". кнопка "ОК" будет недоступной (Enable="0") пока хотя бы одно из полей ввода остаётся пустым. Когда оба поля заполнены кнопка становится доступной (Enabled="1"). В данной примере рекомендуется убрать параметр Enabled для контрола кнопки "ОК", чтобы избежать проблемы при матчинге и заполнении).</p> <br /> <p>Пример: enabled="1".</p> </li> </ul> <p><em>Пример описания контрола, в котором использованы все параметры:</em></p> <div class="codebox"> <pre><code> <ctrl className="Button" ctrlId="1003" enabled="1" visible="1"> <text>Ok</text> <position x="159" y="202"/> <size cx="189" cy="16"/> </ctrl></code></pre> </div> <p><span class="bbu"><strong>Алгоритм заполнения:</strong></span></p> <ul> <li> <p><strong>Нет</strong> - Алгоритм заполнения не будет сгенерирован в шаблоне, тег <fillingAlgorithm> будет отсутствовать в шаблоне.</p> </li> <li> <p><strong>На основе settext</strong> - Шаблонизатор сгенерирует команды заполнения поля логина, заполнения поля пароля и нажатия кнопки "ОК". Каждая команда будет содержать данные контрола, к которому она должна быть применена, данные по контролом шаблонизатор получает в результате выполнения инструкций шаблонизатора пользователем, указывающим последовательность контролов логина, контрол пароля и кнопку ок. Заполнения контролов будет происходит стандартным методом SetText.<br />Рекомендуется использовать данный алгоритм заполнения.</p> <br /> <p>Пример:<br /> <code><fillingAlgorithm></code><br /><code> <command type="ctFillCtrl"></code><br /><code> <description>Ввести имя пользователя</description></code><br /><code> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"></code><br /><code> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"></code><br /><code> <position x="159" y="15"/></code><br /><code> <size cx="189" cy="23"/></code><br /><code> </ctrl></code><br /><code> <fieldValueInfo field="ffUserName"/></code><br /><code> </dataFillCtrl></code><br /><code> </command></code><br /><code> <command type="ctFillCtrl"></code><br /><code> <description>Ввести пароль</description></code><br /><code> <dataFillCtrl fillingType="cftSetText" clearCtrlText="1"></code><br /><code> <ctrl className="Edit" ctrlId="1002" enabled="1" visible="1"></code><br /><code> <position x="159" y="76"/></code><br /><code> <size cx="189" cy="23"/></code><br /><code> </ctrl></code><br /><code> <fieldValueInfo field="ffPassword"/></code><br /><code> </dataFillCtrl></code><br /><code> </command></code><br /><code> <command type="ctFillCtrl"></code><br /><code> <description>Нажать на OK</description></code><br /><code> <dataFillCtrl fillingType="cftClickButton" clearCtrlText="1"></code><br /><code> <ctrl className="Edit" ctrlId="1005" enabled="1" visible="1"></code><br /><code> <position x="0" y="125"/></code><br /><code> <size cx="159" cy="23"/></code><br /><code> </ctrl></code><br /><code> <fieldValueInfo field="ffNoData"/></code><br /><code> </dataFillCtrl></code><br /><code> </command></code><br /><code> </fillingAlgorithm></code></p> </li> <li> <p><strong>Эмуляция ввода</strong> - шаблонизатор сгенерирует команды установки фокуса в поле логина, заполнения поля логина, заполнения поля пароля, нажатия кнопки "ОК", команды перехода между контролами и команды паузы. Первой командой будет команда установки фокуса на контроле имени пользователя (первом контроле, который укажет пользователь при создании шаблона). Команды заполнения не будут содержать описание контролов, а их действие будет проводиться с текущим контролом в фокусе. Само заполнение будет происходит с помощью эмуляции нажатия клавиш клавиатуры. Переход фокуса между контролами будут осуществляться эмуляцией нажатия клавиши Tab. В алгоритме заполнения также будут присутствовать команды паузы в 50 миллисекунд между прочими командами.<br />Рекомендуется к использованию в шаблонах для приложений, в которых использование метода settext невозможно или затруднено. </p> <br /> <p>Пример: <br /><fillingAlgorithm><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctPosition"><br /> <description>Перейти на контрол имени пользователя</description><br /> <dataPosition waitIntervalMs="50"><br /> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"><br /> <position x="159" y="15"/><br /> <size cx="189" cy="23"/><br /> </ctrl><br /> </dataPosition><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctFillCurrentCtrl"><br /> <description>Ввести имя пользователя</description><br /> <dataFillCurrentCtrl clearCtrlText="1"><br /> <fieldValueInfo field="ffUserName"/><br /> </dataFillCurrentCtrl><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctControl"><br /> <description>Перейти на следующий контрол</description><br /> <dataControl type="cctTab" waitIntervalMs="50"/><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctFillCurrentCtrl"><br /> <description>Ввести пароль</description><br /> <dataFillCurrentCtrl clearCtrlText="1"><br /> <fieldValueInfo field="ffPassword"/><br /> </dataFillCurrentCtrl><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctControl"><br /> <description>Перейти на следующий контрол</description><br /> <dataControl type="cctTab" waitIntervalMs="50"/><br /> </command><br /> <command type="ctWait"><br /> <description>Подождать</description><br /> <dataWait periodMs="50"/><br /> </command><br /> <command type="ctControl"><br /> <description>Нажать на OK</description><br /> <dataControl type="cctEnter" waitIntervalMs="50"/><br /> </command><br /> </fillingAlgorithm></p> </li> </ul> <p>Внимание:<br />Полученные шаблонизатором алгоритмы заполнения практически всегда требуют дополнительных изменений, сделанных вручную, для корректного заполнения целевой формы.</p> <p> </p> <p>Пример окна шаблонизатора с выбранными рекомендованными параметрами:<br /><img src="https://support.indeed-id.ru/__swift/files/1492525105e755876c94a9c07eff3ac4df9112cd8dc24961ce.png" /></p>'
contentstext = 'НАСТРОЙКИ ГЕНЕРАЦИИ ШАБЛОНА: * ГЛУБИНА ПРОСМОТРА КОНТРОЛОВ ФОРМЫ - данный параметр задаёт насколько глубоко по уровню вложенности шаблонизатор будет собирать данные о контролах. Данный параметр задаётся вручную при создании шаблона. Если параметр ра...'
kbarticleid = '311'
creator = '2'
creatorid = '1'
author = ''
email = ''
subject = 'Перехват и заполение окон Windows Security для Basic/Digest аутен...'
isedited = '1'
editeddateline = '1705929779'
editedstaffid = '31'
views = '3782'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1490017751'
articlestatus = '1'
articlerating = '5'
ratinghits = '2'
ratingcount = '10'
seosubject = 'perexvat-i-zapolenie-okon-windows-security-dlya-basicdigest-autentifikacii-v-internet-explorer-agentom-sso'
contents = '<p>В данной статье мы рассмотрим процедуру добавления в SSO шаблон обработки окна "Безопасность Windows" ("Windows Security") для механизма Basic/Digest аутентификации в Internet Explorer.<br /><br />Речь идет о следующем окне:<br /><img src="http://cdn.indeed-id.com/community.indeed-id.com_screens/SSOIEBasicAuthWindow/WindowsSecurityBasicAuth.png" alt="" height="497" width="720" /><br /><br />Данное окно появляется при входе в web-приложение, если для доступа к нему настроена Basic/Digest проверка подлинности. <br /><br />В отличие от окна с запросом учетной записи для проверки подлинности Windows, для которого отрабатывает Credential Provider Indeed-Id, входящий в состав Indeed-Id Windows Logon, окно Basic/Digest аутентификации не позволяет использовать сторонний Credential Provider для аутентификации. В связи с этим перехват и заполнение данного окна должны быть организованы средствами Indeed-Id ESSO Агента.<br /><br />Проблема заключается в том, что стандартными средствами Агента SSO невозможно получить содержимое данного окна (за исключением заголовка), что не позволяет реализовать механизм матчинга и заполнения.<br /><br />Начиная с версии <strong>5.4.21</strong> в Агент SSO добавлен механизм, который позволяет корректно перехватывать и заполнять данный тип окон "Безопасность Windows".<br /><br />Для того, чтобы Агент SSO корректно перехватывал и заполнял подобные окна необходимо в шаблоне добавить соответствующий Web-компонент с указанием URL целевой Web-страницы, а в разделе матчинга добавить тэг FormData, без описания матчинга элементов формы и без указания алгоритма заполнения.<br /><br /><em>…</em><br /><em> <formData id="{F8DA6B54-9EB0-42cc-9CA4-AF78F7864F8A}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"></em><br /><em> <matching matchingType="CFormData::mtWeb"></em><br /><em> <matchingWeb componentId="Идентификатор компонента" /></em><br /><em> </matching></em><br /><em> </formData></em><br /><em>…<br /><br /><br /></em><strong>Пример:<br /></strong>Для приложения IndeedID.SSO.Demo.App, которое опубликовано на IIS по адресу <em><a href="http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm">http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm</a> </em>и для которого настроена проверка подлинности Basic, необходимо настроить вход средствами Indeed-Id Enterprise SSO.<br /><br /><img src="data:image/png;base64,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84qAJDmvSBeA89g3ExUxUA4oB5QDyoGClAMFYHpWF4JEQJIcJLBqVgREQAREQAREQAREwLkEJMnOHTtFLgIiIAIiIAIiIAIiECQCkuQggVWzIiACIiACIiACIiACziUgSXbu2ClyERABERABERABERCBIBGQJAcJrJoVAREQAREQAREQARFwLgFJsnPHTpGLgAiIgAiIgAiIgAgEiYAkOUhg1awIiIAIiIAIiIAIiIBzCUiSnTt2ilwEREAEREAEREAERCBIBCTJQQKrZkVABERABERABERABJxLQJLs3LFT5CIgAiIgAiIgAiIgAkEiIEkOElg1KwIiIAIiIAIiIAIi4FwCkmTnjp0iFwEREAEREAEREAERCBIBSXKQwKpZERABERABERABERAB5xKQJDt37BS5CIiACIiACIiACIhAkAhIkoMEVs2KgAiIgAiIgAiIgAg4l4Ak2bljp8hFQAREQAREQAREQASCRECSHCSwalYEREAEREAEREAERMC5BCTJzh07RS4CIiACIiACIiACIhAkApLkIIFVsyIgAiIgAiIgAiIgAs4lIEl27tgpchEQAREQAREQAREQgSARkCQHCayaFQEREAEREAEREAERcC4BSbJzx06Ri4AIiIAIiIAIiIAIBImAJDlIYNWsCIiACIiACIiACIiAcwlIkp07dopcBERABERABERABEQgSAQkyUECq2ZFQAREQAREQAREQAScS0CS7NyxU+QiIAIiIAIiIAIiIAJBIiBJDhJYNSsCIiACIiACIiACIuBcApJk546dIhcBERABERABERABEQgSAUlykMCqWREQAREQAREQAREQAecSkCQ7d+wUuQiIgAiIgAiIgAiIQJAISJKDBFbNioAIiIAIiIAIiIAIOJeAJNm5Y6fIRUAEREAEREAEREAEgkRAkhwksGpWBERABERABERABETAuQQkyc4dO0UuAiIgAiIgAiIgAiIQJAKS5CCBVbMiIAIiIAIiIAIiIALOJSBJdu7YKXIREAEREAEREAEREIEgEZAkBwmsmhUBERABERABERABEXAuAUmyc8dOkYuACIiACIiACIiACASJgCQ5SGDVrAiIgAiIgAiIgAiIgHMJSJKdO3aKXAREQAREQAREQAREIEgEJMlBAqtmRUAEREAEREAEREAEnEtAkuzcsVPkIiACIiACIiACIiACQSIgSQ4SWDUrAiIgAiIgAiIgAiLgXAKSZOeOnSIXAREQAREQAREQAREIEgFJcpDAqlkREAEREAEREAEREAHnEpAkO3fsFLkIiIAIiIAIiIAIiECQCEiSgwRWzYqACIiACIiACIiACDiXgCTZuWOnyEVABERABERABERABIJEQJIcJLBqVgREQAREQAREQAREwLkEJMnOHTtFLgIiIAIiIAIiIAIiECQCkuQggVWzIiACIiACIiACIiACziUgSXbu2ClyERABERABERABERCBIBGQJAcJrJoVAREQAREQAREQARFwLgFJsnPHTpGLgAiIgAiIgAiIgAgEiYAkOUhg1awIiIAIiIAIiIAIiIBzCUiSnTt2ilwEREAEREAEREAERCBIBCTJQQKrZkVABERABERABERABJxLQJLs3LFT5CIgAiIgAiIgAiIgAkEiIEkOElg1KwIiIAIiIAIiIAIi4FwCkmTnjp0iFwEREAEREAEREAERCBIBSXKQwKpZERABERABERABERAB5xKQJDt37BS5CIiACIiACIiACIhAkAhIkoMEVs2KgAiIgAiIgAiIgAg4l4Ak2bljp8hFQAREQAREQAREQASCRECSHCSwalYEREAEREAEREAERMC5BCTJzh07RS4CIiACIiACIiACIhAkApLkIIFVsyIgAiIgAiIgAiIgAs4lIEl27tgpchEQAREQAREQAREQgSARkCQHCayaFQEREAEREAEREAERcC4BSbJzx06Ri4AIiIAIiIAIiIAIBImAJDlIYNWsCIiACIiACIiACIiAcwlIkp07dopcBERABERABERABEQgSAQkyUECq2ZFQAREQAREQAREQAScS0CS7NyxU+QiIAIiIAIiIAIiIAJBIiBJDhJYNSsCIiACIiACIiACIuBcApJk546dIhcBERABERABERABEQgSAUlykMCqWREQAREQAREQAREQAecSkCQ7d+wUuQiIgAiIgAiIgAiIQJAISJKDBFbNioAIiIAIiIAIiIAIOJeAJNm5Y6fIRUAEREAEREAEREAEgkRAkhwksGpWBERABERABERABETAuQQkyc4dO0UuAiIgAiIgAiIgAiIQJAKS5CCBVbMiIAIiIAIiIAIiIALOJSBJdu7YKXIREAEREAEREAEREIEgEZAkBwmsmhUBERABERABERABEXAuAUmyc8dOkYuACIiACIiACIiACASJgCQ5SGDVrAiIgAiIgAiIgAiIgHMJSJKdO3aKXAREQAREQAREQAREIEgEJMlBAqtmRUAEREAEREAEREAEnEtAkuzcsVPkIiACIiACIiACIiACQSIgSQ4SWDUrAiIgAiIgAiIgAiLgXAKSZOeOnSIXAREQAREQAREQAREIEgFJcpDAqlkREAEREAEREAEREAHnEpAkO3fsFLkIiIAIiIAIiIAIiECQCAQkyWeqpH3JiIEYKAeUA8oB5YByQDmgHAifHDAa7PAZbI21xlo5oBxQDigHlAPKAeVAYDkgSd4TGCgllDgpB5QDygHlgHJAOaAcCJ8ckCRLkrWURDmgHFAOKAeUA8oB5YByIFsOSJKzAdFfiOHzF6LGWmOtHFAOKAeUA8oB5cDZcuD/Af9m5Fn4EKYBAAAAAElFTkSuQmCC" /><br /><br />Шаблон в данном случае будет выглядеть следующим образом (файл шаблона прикреплен к статье):<br /><br /><em><indeedIDSSOData></em><br /><br /><em> <applications></em><br /><em> <application ssoPermissions="spSsoOnly" forceReauthentication="1" id="{F5BD3DB6-80B0-4827-B85A-845C61FE5DB3}"></em><br /><em> <matchingDetails></em><br /><em> <components></em><br /><strong><em> <component type="CFormData::mtWeb" componentId="Demo Web Application"></em></strong><br /><strong><em> <componentWeb></em></strong><br /><strong><em> <url>http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm</url></em></strong><br /><strong><em> </componentWeb></em></strong><br /><strong><em> </component></em></strong><br /><em> </components></em><br /><em> </matchingDetails></em><br /><em> <userDescription>Демонстрационное Web-приложение Indeed-Id</userDescription></em><br /><em> <opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"></em><br /><em> <forms></em><br /><strong><em> <formData id="{65CE3008-855A-479D-BD39-9B8617F0153F}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"></em></strong><br /><strong><em> <matching matchingType="CFormData::mtWeb"></em></strong><br /><strong><em> <matchingWeb componentId="Demo Web Application"></em></strong><br /><strong><em> </matchingWeb></em></strong><br /><strong><em> </matching></em></strong><br /><strong><em> </formData></em></strong><br /><em> </forms></em><br /><em> <failureReactionAskingDetails isDefaultOptionDisabled="1"></em><br /><em> <disabledOptions></em><br /><em> <failureReaction>frNone</failureReaction></em><br /><em> </disabledOptions></em><br /><em> </failureReactionAskingDetails></em><br /><em> </opLogon></em><br /><em> <passwordRestrictions length="8"></em><br /><em> </passwordRestrictions></em><br /><em> <launcherDetails></em><br /><em> <launcherApplications></em><br /><em> <applicationDetails></em><br /><em> <cmdLine>"%ProgramFiles%\\Internet Explorer\\iexplore.exe" "http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm"</cmdLine></em><br /><em> </applicationDetails></em><br /><em> </launcherApplications></em><br /><em> </launcherDetails></em><br /><em> </em><br /><em> </application></em><br /><em> </applications></em><br /><br /><em></indeedIDSSOData><br /><br /></em>Жирным выделены соответствующие Web-компонент и описание формы.</p>'
contentstext = 'В данной статье мы рассмотрим процедуру добавления в SSO шаблон обработки окна "Безопасность Windows" ("Windows Security") для механизма Basic/Digest аутентификации в Internet Explorer. Речь идет о следующем окне: Данное окно появляется при входе в web-...'
305 (array):creator = '2'
creatorid = '1'
author = ''
email = ''
subject = 'Перехват и заполение окон Windows Security для Basic/Digest аутен...'
isedited = '1'
editeddateline = '1705929779'
editedstaffid = '31'
views = '3782'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1490017751'
articlestatus = '1'
articlerating = '5'
ratinghits = '2'
ratingcount = '10'
seosubject = 'perexvat-i-zapolenie-okon-windows-security-dlya-basicdigest-autentifikacii-v-internet-explorer-agentom-sso'
contents = '<p>В данной статье мы рассмотрим процедуру добавления в SSO шаблон обработки окна "Безопасность Windows" ("Windows Security") для механизма Basic/Digest аутентификации в Internet Explorer.<br /><br />Речь идет о следующем окне:<br /><img src="http://cdn.indeed-id.com/community.indeed-id.com_screens/SSOIEBasicAuthWindow/WindowsSecurityBasicAuth.png" alt="" height="497" width="720" /><br /><br />Данное окно появляется при входе в web-приложение, если для доступа к нему настроена Basic/Digest проверка подлинности. <br /><br />В отличие от окна с запросом учетной записи для проверки подлинности Windows, для которого отрабатывает Credential Provider Indeed-Id, входящий в состав Indeed-Id Windows Logon, окно Basic/Digest аутентификации не позволяет использовать сторонний Credential Provider для аутентификации. В связи с этим перехват и заполнение данного окна должны быть организованы средствами Indeed-Id ESSO Агента.<br /><br />Проблема заключается в том, что стандартными средствами Агента SSO невозможно получить содержимое данного окна (за исключением заголовка), что не позволяет реализовать механизм матчинга и заполнения.<br /><br />Начиная с версии <strong>5.4.21</strong> в Агент SSO добавлен механизм, который позволяет корректно перехватывать и заполнять данный тип окон "Безопасность Windows".<br /><br />Для того, чтобы Агент SSO корректно перехватывал и заполнял подобные окна необходимо в шаблоне добавить соответствующий Web-компонент с указанием URL целевой Web-страницы, а в разделе матчинга добавить тэг FormData, без описания матчинга элементов формы и без указания алгоритма заполнения.<br /><br /><em>…</em><br /><em> <formData id="{F8DA6B54-9EB0-42cc-9CA4-AF78F7864F8A}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"></em><br /><em> <matching matchingType="CFormData::mtWeb"></em><br /><em> <matchingWeb componentId="Идентификатор компонента" /></em><br /><em> </matching></em><br /><em> </formData></em><br /><em>…<br /><br /><br /></em><strong>Пример:<br /></strong>Для приложения IndeedID.SSO.Demo.App, которое опубликовано на IIS по адресу <em><a href="http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm">http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm</a> </em>и для которого настроена проверка подлинности Basic, необходимо настроить вход средствами Indeed-Id Enterprise SSO.<br /><br /><img src="data:image/png;base64,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84qAJDmvSBeA89g3ExUxUA4oB5QDyoGClAMFYHpWF4JEQJIcJLBqVgREQAREQAREQAREwLkEJMnOHTtFLgIiIAIiIAIiIAIiECQCkuQggVWzIiACIiACIiACIiACziUgSXbu2ClyERABERABERABERCBIBGQJAcJrJoVAREQAREQAREQARFwLgFJsnPHTpGLgAiIgAiIgAiIgAgEiYAkOUhg1awIiIAIiIAIiIAIiIBzCUiSnTt2ilwEREAEREAEREAERCBIBCTJQQKrZkVABERABERABERABJxLQJLs3LFT5CIgAiIgAiIgAiIgAkEiIEkOElg1KwIiIAIiIAIiIAIi4FwCkmTnjp0iFwEREAEREAEREAERCBIBSXKQwKpZERABERABERABERAB5xKQJDt37BS5CIiACIiACIiACIhAkAhIkoMEVs2KgAiIgAiIgAiIgAg4l4Ak2bljp8hFQAREQAREQAREQASCRECSHCSwalYEREAEREAEREAERMC5BCTJzh07RS4CIiACIiACIiACIhAkApLkIIFVsyIgAiIgAiIgAiIgAs4lIEl27tgpchEQAREQAREQAREQgSARkCQHCayaFQEREAEREAEREAERcC4BSbJzx06Ri4AIiIAIiIAIiIAIBImAJDlIYNWsCIiACIiACIiACIiAcwlIkp07dopcBERABERABERABEQgSAQkyUECq2ZFQAREQAREQAREQAScS0CS7NyxU+QiIAIiIAIiIAIiIAJBIiBJDhJYNSsCIiACIiACIiACIuBcApJk546dIhcBERABERABERABEQgSAUlykMCqWREQAREQAREQAREQAecSkCQ7d+wUuQiIgAiIgAiIgAiIQJAISJKDBFbNioAIiIAIiIAIiIAIOJeAJNm5Y6fIRUAEREAEREAEREAEgkRAkhwksGpWBERABERABERABETAuQQkyc4dO0UuAiIgAiIgAiIgAiIQJAKS5CCBVbMiIAIiIAIiIAIiIALOJSBJdu7YKXIREAEREAEREAEREIEgEZAkBwmsmhUBERABERABERABEXAuAUmyc8dOkYuACIiACIiACIiACASJgCQ5SGDVrAiIgAiIgAiIgAiIgHMJSJKdO3aKXAREQAREQAREQAREIEgEJMlBAqtmRUAEREAEREAEREAEnEtAkuzcsVPkIiACIiACIiACIiACQSIgSQ4SWDUrAiIgAiIgAiIgAiLgXAKSZOeOnSIXAREQAREQAREQAREIEgFJcpDAqlkREAEREAEREAEREAHnEpAkO3fsFLkIiIAIiIAIiIAIiECQCEiSgwRWzYqACIiACIiACIiACDiXgCTZuWOnyEVABERABERABERABIJEQJIcJLBqVgREQAREQAREQAREwLkEJMnOHTtFLgIiIAIiIAIiIAIiECQCkuQggVWzIiACIiACIiACIiACziUgSXbu2ClyERABERABERABERCBIBGQJAcJrJoVAREQAREQAREQARFwLgFJsnPHTpGLgAiIgAiIgAiIgAgEiYAkOUhg1awIiIAIiIAIiIAIiIBzCUiSnTt2ilwEREAEREAEREAERCBIBCTJQQKrZkVABERABERABERABJxLQJLs3LFT5CIgAiIgAiIgAiIgAkEiIEkOElg1KwIiIAIiIAIiIAIi4FwCkmTnjp0iFwEREAEREAEREAERCBIBSXKQwKpZERABERABERABERAB5xKQJDt37BS5CIiACIiACIiACIhAkAhIkoMEVs2KgAiIgAiIgAiIgAg4l4Ak2bljp8hFQAREQAREQAREQASCRECSHCSwalYEREAEREAEREAERMC5BCTJzh07RS4CIiACIiACIiACIhAkApLkIIFVsyIgAiIgAiIgAiIgAs4lIEl27tgpchEQAREQAREQAREQgSARkCQHCayaFQEREAEREAEREAERcC4BSbJzx06Ri4AIiIAIiIAIiIAIBImAJDlIYNWsCIiACIiACIiACIiAcwlIkp07dopcBERABERABERABEQgSAQkyUECq2ZFQAREQAREQAREQAScS0CS7NyxU+QiIAIiIAIiIAIiIAJBIiBJDhJYNSsCIiACIiACIiACIuBcApJk546dIhcBERABERABERABEQgSAUlykMCqWREQAREQAREQAREQAecSkCQ7d+wUuQiIgAiIgAiIgAiIQJAISJKDBFbNioAIiIAIiIAIiIAIOJeAJNm5Y6fIRUAEREAEREAEREAEgkRAkhwksGpWBERABERABERABETAuQQkyc4dO0UuAiIgAiIgAiIgAiIQJAKS5CCBVbMiIAIiIAIiIAIiIALOJSBJdu7YKXIREAEREAEREAEREIEgEZAkBwmsmhUBERABERABERABEXAuAUmyc8dOkYuACIiACIiACIiACASJgCQ5SGDVrAiIgAiIgAiIgAiIgHMJSJKdO3aKXAREQAREQAREQAREIEgEJMlBAqtmRUAEREAEREAEREAEnEtAkuzcsVPkIiACIiACIiACIiACQSIgSQ4SWDUrAiIgAiIgAiIgAiLgXAKSZOeOnSIXAREQAREQAREQAREIEgFJcpDAqlkREAEREAEREAEREAHnEpAkO3fsFLkIiIAIiIAIiIAIiECQCAQkyWeqpH3JiIEYKAeUA8oB5YByQDmgHAifHDAa7PAZbI21xlo5oBxQDigHlAPKAeVAYDkgSd4TGCgllDgpB5QDygHlgHJAOaAcCJ8ckCRLkrWURDmgHFAOKAeUA8oB5YByIFsOSJKzAdFfiOHzF6LGWmOtHFAOKAeUA8oB5cDZcuD/Af9m5Fn4EKYBAAAAAElFTkSuQmCC" /><br /><br />Шаблон в данном случае будет выглядеть следующим образом (файл шаблона прикреплен к статье):<br /><br /><em><indeedIDSSOData></em><br /><br /><em> <applications></em><br /><em> <application ssoPermissions="spSsoOnly" forceReauthentication="1" id="{F5BD3DB6-80B0-4827-B85A-845C61FE5DB3}"></em><br /><em> <matchingDetails></em><br /><em> <components></em><br /><strong><em> <component type="CFormData::mtWeb" componentId="Demo Web Application"></em></strong><br /><strong><em> <componentWeb></em></strong><br /><strong><em> <url>http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm</url></em></strong><br /><strong><em> </componentWeb></em></strong><br /><strong><em> </component></em></strong><br /><em> </components></em><br /><em> </matchingDetails></em><br /><em> <userDescription>Демонстрационное Web-приложение Indeed-Id</userDescription></em><br /><em> <opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"></em><br /><em> <forms></em><br /><strong><em> <formData id="{65CE3008-855A-479D-BD39-9B8617F0153F}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"></em></strong><br /><strong><em> <matching matchingType="CFormData::mtWeb"></em></strong><br /><strong><em> <matchingWeb componentId="Demo Web Application"></em></strong><br /><strong><em> </matchingWeb></em></strong><br /><strong><em> </matching></em></strong><br /><strong><em> </formData></em></strong><br /><em> </forms></em><br /><em> <failureReactionAskingDetails isDefaultOptionDisabled="1"></em><br /><em> <disabledOptions></em><br /><em> <failureReaction>frNone</failureReaction></em><br /><em> </disabledOptions></em><br /><em> </failureReactionAskingDetails></em><br /><em> </opLogon></em><br /><em> <passwordRestrictions length="8"></em><br /><em> </passwordRestrictions></em><br /><em> <launcherDetails></em><br /><em> <launcherApplications></em><br /><em> <applicationDetails></em><br /><em> <cmdLine>"%ProgramFiles%\\Internet Explorer\\iexplore.exe" "http://iiddemoserver.indeed-id.local/IndeedID.SSO.Demo.App/IndeedID.SSO.Demo.App.htm"</cmdLine></em><br /><em> </applicationDetails></em><br /><em> </launcherApplications></em><br /><em> </launcherDetails></em><br /><em> </em><br /><em> </application></em><br /><em> </applications></em><br /><br /><em></indeedIDSSOData><br /><br /></em>Жирным выделены соответствующие Web-компонент и описание формы.</p>'
contentstext = 'В данной статье мы рассмотрим процедуру добавления в SSO шаблон обработки окна "Безопасность Windows" ("Windows Security") для механизма Basic/Digest аутентификации в Internet Explorer. Речь идет о следующем окне: Данное окно появляется при входе в web-...'
kbarticleid = '305'
creator = '2'
creatorid = '1'
author = ''
email = ''
subject = 'Поддерживаемые в Indeed Enterprise SSO версии браузеров (в том чи...'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1699'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1486106322'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<strong>Вопрос:</strong><br />Прошу пояснить, какие браузеры поддерживаются Indeed-Id с точки зрения создания и работы веб шаблонов SSO?<br /><br /><strong>Ответ:</strong><br />Поддерживаемые версии браузеров для web-приложений (Агент SSO отслеживает, перехватывает и заполняет формы web-приложений):<br />• Microsoft Internet Explorer 8 и выше<br />• Mozilla Firefox 4 и выше<br /><br />Создание шаблонов с помощью шаблонизатора возможно только в <strong>Microsoft Internet Explorer 8 и выше </strong>. В Firefox шаблонизатор не работает.'
contentstext = 'ВОПРОС: Прошу пояснить, какие браузеры поддерживаются Indeed-Id с точки зрения создания и работы веб шаблонов SSO? ОТВЕТ: Поддерживаемые версии браузеров для web-приложений (Агент SSO отслеживает, перехватывает и заполняет формы web-приложений): • Micros...'
124 (array):creator = '2'
creatorid = '1'
author = ''
email = ''
subject = 'Поддерживаемые в Indeed Enterprise SSO версии браузеров (в том чи...'
isedited = '0'
editeddateline = '0'
editedstaffid = '0'
views = '1699'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1486106322'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<strong>Вопрос:</strong><br />Прошу пояснить, какие браузеры поддерживаются Indeed-Id с точки зрения создания и работы веб шаблонов SSO?<br /><br /><strong>Ответ:</strong><br />Поддерживаемые версии браузеров для web-приложений (Агент SSO отслеживает, перехватывает и заполняет формы web-приложений):<br />• Microsoft Internet Explorer 8 и выше<br />• Mozilla Firefox 4 и выше<br /><br />Создание шаблонов с помощью шаблонизатора возможно только в <strong>Microsoft Internet Explorer 8 и выше </strong>. В Firefox шаблонизатор не работает.'
contentstext = 'ВОПРОС: Прошу пояснить, какие браузеры поддерживаются Indeed-Id с точки зрения создания и работы веб шаблонов SSO? ОТВЕТ: Поддерживаемые версии браузеров для web-приложений (Агент SSO отслеживает, перехватывает и заполняет формы web-приложений): • Micros...'
kbarticleid = '124'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Регулярное выражения в шаблонах SSO'
isedited = '1'
editeddateline = '1457697854'
editedstaffid = '5'
views = '1925'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457697373'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Небольшая справка по регулярным выражением, примеры их использования в шаблонах SSO и полезные ссылки по теме.</p> <p><strong>Регулярные выражения</strong> - система обработки текста, основанная на специальной системе записи образцов для поиска.<br />Образец (англ. pattern), задающий правило поиска, по-русски также иногда называют «шаблоном», «маской». Образец состоит из символов и метасимволов.</p> <p>В шаблонах используются следующие <strong>метасимволы</strong> (символы обозначающие группы других символов)</p> <p><strong>\\</strong> - считать следующий метасимвол как обычный символ.<br /><strong>^</strong> - начало строки<br /><strong>.</strong> - один произвольный символ. Кроме \'\\n\' - конец строки.<br /><strong>$</strong> - конец строки<br /><strong>|</strong> - альтернатива (или)<br /><strong>()</strong> - группировка<br /><strong>[]</strong> - класс символов</p> <p><strong>Метасимволы</strong> имеют модификаторы (пишутся после <strong>метасимвола</strong>):<br /><strong>*</strong> - повторяется 0 или большее число раз<br /><strong>+</strong> - -//- 1 или большее число раз<br /><strong>?</strong> - 1 или 0 раз<br /><strong>{n}</strong> - точно n раз<br /><strong>{n,}</strong> - по меньшей мере раз<br /><strong>{n,m}</strong> - не меньше n, но и не больше m</p> <p>Множество возможных символов (класс) заключается в квадратные скобки \'[]\', это значит, что в данном месте может стоять один из указанных в скобках символов. Если первый символ в скобках это \'^\' - значит ни один из указанных символов не может стоять в данном месте выражения. Внутри класса можно употреблять символ \'-\', обозначающий диапазон символов. Например, a-z - один из малых букв латинского алфавита, 0-9 - цифра и т.д.</p> <p> </p> <p><strong>Примеры использования:</strong></p> <p>1. У двухязычного приложения есть страница авторизации с заголовками:<br /><em>"Добро пожаловать в ПриложениеПользователя версии 1.54321"</em> в русской версии<br /><em>"Welcome to UserApplication ver 1.54321"</em> в английской версии<br />Номер версии будет изменяться в следующих релизах приложения, остальной текст останется прежним</p> <p>Создадим регулярное выражение, которое можно будет подставить в шаблон для данного приложения:</p> <ul> <li> <p>Добавим оба текста как альтернативные используя метасимвол: |<br /><em>Добро пожаловать в ПриложениеПользователя версии 1.54321</em>|<em>Welcome to UserApplication ver 1.54321</em></p> </li> <li> <p>Заменим динамическую часть текста регулярным выражением .+ - одиночные символы колличеством 1 или больше:<br /><em>Добро пожаловать в ПриложениеПользователя версии.+|Welcome to UserApplication ver.+</em></p> </li> </ul> <p>Данное регулярное выражение будет соответствовать всем заголовкам новых версий приложения, однако не будет проверять текст, который будет содержать заголовок на месте номера версии, например:<br /><em>Добро пожаловать в ПриложениеПользователя версии Ошибка получения номера версии</em><br />Такой заголовок также будет соответствовать нашему регулярному выражению, поэтому усложним регулярное выражение, чтобы в случае сообщения "<em>Ошибка получения номера версии</em>" шаблон не срабатывал:</p> <ul> <li> <p>Заменим .+ на [0-9.]{3,7}<br /><em>Добро пожаловать в ПриложениеПользователя версии </em>[0-9.]{3,7}|<em>Welcome to UserApplication ver </em>[0-9.]{3,7}<br />[0-9.] - множества возможных символов "0-9" - цифры "." - точка<br />{3,7} - количеством не менее 3 и не более 7 раз. (минимальная длина номера версии равна трем, максимальная равна семи)</p> </li> </ul> <p> </p> <p>2. Изменим задачу - весь текст может изменяться, кроме имени приложения (<em>ПриложениеПользователя</em> или <em>UserApplication</em>)</p> <ul> <li> <p>Добавим оба текста как альтернативные используя метасимвол | :<br /><em>Добро пожаловать в ПриложениеПользователя версии 1.54321</em>|<em>Welcome to UserApplication ver 1.54321</em></p> </li> <li> <p>Заменим динамическую часть текста регулярным выражением .* - одиночные символом колличеством 0 или больше:<br />.*<em>ПриложениеПользователя</em>.*|.*<em>UserApplication</em>.*</p> </li> </ul> <p><br /><br /></p> <p>3. Создадим регулярное выражение для шаблона веб аутентификации в аккаунт google<br />Возьмем два url для страницы аутентификации</p> <div class="codebox"> <pre><code>https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3D_oeIU6ffEtPDNOOzgZgD https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DEYmIU_eEPM2DNOfKgOgF</code></pre> </div> <ul> <li> <p>Обратите внимание, что часть адреса изменяется, а часть является статичной. В качестве статичной возьмём часть URL до описания параметров<br /><em>"https://accounts.google.com/ServiceLogin"</em></p> </li> <li> <p>В url присутствуют символы ".", которые в регулярном выражении являются метасимволами, чтобы они воспринимались как символы точек, добавим метасимвол "\\" перед ними.<br /><em>https://accounts\\.google\\.com/ServiceLogin</em></p> </li> <li> <p>Заменим динамическую часть URL на .*<br /><em>https://accounts\\.google\\.com/ServiceLogin.*</em></p> </li> </ul> <p><br /><br /></p> <p><strong><span class="bbu">Полезные ссылки:</span></strong><br />Проверка регулярных выражений - <a href="http://www.regexe.com/">http://www.regexe.com</a>/</p> <p>Больше информации по регулярным выражениям - <a href="http://citforum.ru/internet/perl_tut/re.shtml">http://citforum.ru/internet/perl_tut/re.shtml</a> (Русский)<br /><a href="http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html">http://www.boost.org/doc/libs/1_47_0/li … yntax.html</a> (Английский)</p> <p>Готовые регулярные выражения с наглядным разбором - <a href="http://habrahabr.ru/post/66931/">http://habrahabr.ru/post/66931/</a></p>'
contentstext = 'Небольшая справка по регулярным выражением, примеры их использования в шаблонах SSO и полезные ссылки по теме. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ - система обработки текста, основанная на специальной системе записи образцов для поиска. Образец (англ. pattern), задающ...'
127 (array):creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Регулярное выражения в шаблонах SSO'
isedited = '1'
editeddateline = '1457697854'
editedstaffid = '5'
views = '1925'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '0'
dateline = '1457697373'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Небольшая справка по регулярным выражением, примеры их использования в шаблонах SSO и полезные ссылки по теме.</p> <p><strong>Регулярные выражения</strong> - система обработки текста, основанная на специальной системе записи образцов для поиска.<br />Образец (англ. pattern), задающий правило поиска, по-русски также иногда называют «шаблоном», «маской». Образец состоит из символов и метасимволов.</p> <p>В шаблонах используются следующие <strong>метасимволы</strong> (символы обозначающие группы других символов)</p> <p><strong>\\</strong> - считать следующий метасимвол как обычный символ.<br /><strong>^</strong> - начало строки<br /><strong>.</strong> - один произвольный символ. Кроме \'\\n\' - конец строки.<br /><strong>$</strong> - конец строки<br /><strong>|</strong> - альтернатива (или)<br /><strong>()</strong> - группировка<br /><strong>[]</strong> - класс символов</p> <p><strong>Метасимволы</strong> имеют модификаторы (пишутся после <strong>метасимвола</strong>):<br /><strong>*</strong> - повторяется 0 или большее число раз<br /><strong>+</strong> - -//- 1 или большее число раз<br /><strong>?</strong> - 1 или 0 раз<br /><strong>{n}</strong> - точно n раз<br /><strong>{n,}</strong> - по меньшей мере раз<br /><strong>{n,m}</strong> - не меньше n, но и не больше m</p> <p>Множество возможных символов (класс) заключается в квадратные скобки \'[]\', это значит, что в данном месте может стоять один из указанных в скобках символов. Если первый символ в скобках это \'^\' - значит ни один из указанных символов не может стоять в данном месте выражения. Внутри класса можно употреблять символ \'-\', обозначающий диапазон символов. Например, a-z - один из малых букв латинского алфавита, 0-9 - цифра и т.д.</p> <p> </p> <p><strong>Примеры использования:</strong></p> <p>1. У двухязычного приложения есть страница авторизации с заголовками:<br /><em>"Добро пожаловать в ПриложениеПользователя версии 1.54321"</em> в русской версии<br /><em>"Welcome to UserApplication ver 1.54321"</em> в английской версии<br />Номер версии будет изменяться в следующих релизах приложения, остальной текст останется прежним</p> <p>Создадим регулярное выражение, которое можно будет подставить в шаблон для данного приложения:</p> <ul> <li> <p>Добавим оба текста как альтернативные используя метасимвол: |<br /><em>Добро пожаловать в ПриложениеПользователя версии 1.54321</em>|<em>Welcome to UserApplication ver 1.54321</em></p> </li> <li> <p>Заменим динамическую часть текста регулярным выражением .+ - одиночные символы колличеством 1 или больше:<br /><em>Добро пожаловать в ПриложениеПользователя версии.+|Welcome to UserApplication ver.+</em></p> </li> </ul> <p>Данное регулярное выражение будет соответствовать всем заголовкам новых версий приложения, однако не будет проверять текст, который будет содержать заголовок на месте номера версии, например:<br /><em>Добро пожаловать в ПриложениеПользователя версии Ошибка получения номера версии</em><br />Такой заголовок также будет соответствовать нашему регулярному выражению, поэтому усложним регулярное выражение, чтобы в случае сообщения "<em>Ошибка получения номера версии</em>" шаблон не срабатывал:</p> <ul> <li> <p>Заменим .+ на [0-9.]{3,7}<br /><em>Добро пожаловать в ПриложениеПользователя версии </em>[0-9.]{3,7}|<em>Welcome to UserApplication ver </em>[0-9.]{3,7}<br />[0-9.] - множества возможных символов "0-9" - цифры "." - точка<br />{3,7} - количеством не менее 3 и не более 7 раз. (минимальная длина номера версии равна трем, максимальная равна семи)</p> </li> </ul> <p> </p> <p>2. Изменим задачу - весь текст может изменяться, кроме имени приложения (<em>ПриложениеПользователя</em> или <em>UserApplication</em>)</p> <ul> <li> <p>Добавим оба текста как альтернативные используя метасимвол | :<br /><em>Добро пожаловать в ПриложениеПользователя версии 1.54321</em>|<em>Welcome to UserApplication ver 1.54321</em></p> </li> <li> <p>Заменим динамическую часть текста регулярным выражением .* - одиночные символом колличеством 0 или больше:<br />.*<em>ПриложениеПользователя</em>.*|.*<em>UserApplication</em>.*</p> </li> </ul> <p><br /><br /></p> <p>3. Создадим регулярное выражение для шаблона веб аутентификации в аккаунт google<br />Возьмем два url для страницы аутентификации</p> <div class="codebox"> <pre><code>https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3D_oeIU6ffEtPDNOOzgZgD https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DEYmIU_eEPM2DNOfKgOgF</code></pre> </div> <ul> <li> <p>Обратите внимание, что часть адреса изменяется, а часть является статичной. В качестве статичной возьмём часть URL до описания параметров<br /><em>"https://accounts.google.com/ServiceLogin"</em></p> </li> <li> <p>В url присутствуют символы ".", которые в регулярном выражении являются метасимволами, чтобы они воспринимались как символы точек, добавим метасимвол "\\" перед ними.<br /><em>https://accounts\\.google\\.com/ServiceLogin</em></p> </li> <li> <p>Заменим динамическую часть URL на .*<br /><em>https://accounts\\.google\\.com/ServiceLogin.*</em></p> </li> </ul> <p><br /><br /></p> <p><strong><span class="bbu">Полезные ссылки:</span></strong><br />Проверка регулярных выражений - <a href="http://www.regexe.com/">http://www.regexe.com</a>/</p> <p>Больше информации по регулярным выражениям - <a href="http://citforum.ru/internet/perl_tut/re.shtml">http://citforum.ru/internet/perl_tut/re.shtml</a> (Русский)<br /><a href="http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html">http://www.boost.org/doc/libs/1_47_0/li … yntax.html</a> (Английский)</p> <p>Готовые регулярные выражения с наглядным разбором - <a href="http://habrahabr.ru/post/66931/">http://habrahabr.ru/post/66931/</a></p>'
contentstext = 'Небольшая справка по регулярным выражением, примеры их использования в шаблонах SSO и полезные ссылки по теме. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ - система обработки текста, основанная на специальной системе записи образцов для поиска. Образец (англ. pattern), задающ...'
kbarticleid = '127'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Формы приложения'
isedited = '1'
editeddateline = '1457946521'
editedstaffid = '5'
views = '1787'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457698443'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Описание структуры форм приложения в шаблонах SSO. Синтаксис, параметры и атрибуты форм в SSO шаблонах.<br /><br /><strong><br />СИНТАКСИС</strong></p> <pre><code><formData id=”идентификатор формы” isForceRematching=”флаг повторного матчинга” filledWndMarkDeletionTime=”время удаления пометки "заполнено"” isForReauthenticationOnly=”флаг предназначения формы только для реаутентификации”></code><br /><code> </code><br /><code><matching matchingType =”тип матчинга формы”></code><br /><code> [данные для матчинга формы]</code><br /><code> </matching></code><br /><code> </code><br /><code><fillingAlgorithm></code><br /><code> </code><br /><code> [данные алгоритма заполнения формы]</code><br /><code> </fillingAlgorithm></code><br /><code> <cancellingAlgorithm></code><br /><code> [данные алгоритма отмены формы]</code><br /><code> </cancellingAlgorithm></code><br /><code> </code><br /><code><targetPluginIds></code><br /><code> <pluginId value=”значение идентификатора плагина 1”/></code><br /><code> …</code><br /><code> <pluginId value=”значение идентификатора плагина N“/></code><br /><code></targetPluginIds></code><br /><code> </code><br /><code></formData></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><em><strong><formData></strong></em><br />Структура описывает форму приложения.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><em><strong>id</strong></em><br />Идентификатор формы (GUID).</p> <p>Идентификатор представляется в виде строки в формате: {00000000-0000-0000-0000-000000000000}</p> <p>Пример:</p> <div class="codebox"> <pre><code><formData id="{35CA5E88-3BB4-49E8-A453-E01F457653C6}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> ... </formData> </code></pre> </div> <p><em><strong>isForceRematching</strong></em><br />Флаг рематчинга (повторного матчинга) формы.</p> <p>Если для формы установлен флаг рематчинга, то после обработки этой формы (и снятия с нее пометки "заполнено"), ESSO Агент пытается повторно ее заматчить.</p> <p>Флаг следует устанавливать в том случае, если после заполнения формы, ESSO Агент не обнаруживает изменений в интерфейсе. Например, если сообщение об ошибке выводится в том же окне и после заполнения формы ESSO Агент не матчит сам форму как форму-признак ошибки.</p> <p>Возможные значения:<br />0 - рематчинг формы выключен<br />1 - рематчинг формы включен</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><em><strong>filledWndMarkDeletionTime</strong></em><br />Время удаления пометки "заполнено" с окна целевой формы.</p> <p>После заполнения окно целевой формы помечается как "заполненное". До тех пор, пока отметка "заполнено" не будет снята, ESSO Агент не будет матчить окно как окно целевой формы. Соответственно, ESSO Агент не сможет начать выполнение новой операции, для которой это окно является целевой формой.</p> <p>Возможные значения:<br /><em>fwmdtOnFillingFinished </em>- удалять пометку "заполнено" с окна целевой формы после завершения обработки заполненных данных (т.е. тогда, когда форма завершить обработку нажатия кнопки ОК)<br /><em>fwmdtOnOpFinished </em>- удалять пометку "заполнено" с окна целевой формы после завершения операции<br /><em>fwmdtNever </em>- никогда не удалять пометку "заполнено" с окна целевой формы</p> <p>Опциональный параметр. Значение по умолчанию: <em>fwmdtNever</em>.</p> <p>isForReauthenticationOnly<br />Флаг предназначения формы только для реаутентификации.</p> <p>Если аутентификация при доступе в приложение выключена в настройках учетной записи приложения или пользователя, установка флага позволяет включить аутентификацию для отдельной формы приложения.</p> <p>Если флаг выключен, аутентификация для формы выполняется согласно настройкам приложения или пользователя.</p> <p>Возможные значения:<br />0 - флаг выключен<br />1 - флаг включен (форма предназначена только для реаутентификации)</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><em><strong><matching></strong></em><br />Структура задает параметры матчинга формы.</p> <p>Описание структуры приведено в разделе "Матчинг форм приложения".</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><em><strong>matchingType</strong></em><br />Тип матчинга формы.</p> <p>Возможные значения:</p> <p><em>CFormData::mtWin32</em> - матчинг Win32-формы.</p> <p><em>CFormData::mtWeb</em> - матчинг Web-формы.</p> <p><em>CFormData::mtDisplayedText</em> - матчинг формы по способу отслеживания отображаемого текста. Используется для поддержки приложения Putty. В настоящее время для других приложений не используется.</p> <p><em>CFormData::mtTextDataStream</em> - матчинг формы по способу отслеживания потока текстовых данных. Используется для поддержки приложения Putty. В настоящее время для других приложений не используется.</p> <p><em>CFormData::mtNative</em> - матчинг формы по способу встроенного плагина. Используется для поддержки приложения Putty. В настоящее время для других приложений не используется.</p> <p><em><strong><fillingAlgorithm></strong></em><br />Структура задает параметры матчинга формы.</p> <p>Описание структуры приведено в разделе "Алгоритм заполнения формы".</p> <p><em><strong><cancellingAlgorithm></strong></em><br />Структура задает алгоритм отмены формы.</p> <p>Если алгоритм отмены формы задан, то для его выполнения необходимо, чтобы в качестве реакции на ошибку операции была указана отмена формы (т.е. когда в описании операции тег <em>failureReaction</em> имеет значение <em>frCancelTargetForm</em>).</p> <p>Если алгоритм не задан, то при отмене формы она будет просто закрыта.</p> <p>Отмена формы происходит в следующих случаях:</p> <ul> <li> <p>пользователь отменил любой диалог SSO, связанный с выполнением операции, которой принадлежит данная форма;</p> </li> <li> <p>произошла ошибка при выполнении алгоритма заполнения формы.</p> </li> </ul> <p>Описание данной структуры аналогично описанию структуры <em><fillingAlgorithm></em>.</p> <p>Опциональный параметр. Значение по умолчанию: пусто (алгоритм отсутствует).</p> <p><em><strong><targetPluginIds></strong></em><br />Структура задает множество идентификаторов плагинов, которым видна форма.</p> <p>Структура используется для поддержки приложения Putty. С Web- и Win32-шаблонами не применяется, с другими приложениями в настоящий момент не используется.</p> <p>Опциональный параметр. Значение по умолчанию: пусто.</p> <p><em><strong><pluginId></strong></em><br />Структура задает описание идентификатора плагина.</p> <p>Структура используется для поддержки приложения Putty. С Web- и Win32-шаблонами не применяется, с другими приложениями в настоящий момент не используется.<br /><br /></p> <p><strong>ПРИМЕРЫ</strong></p> <p>Данный раздел содержит примеры описания форм приложения и соответствующие готовые шаблоны для тестового приложения <a href="http://community.indeed-id.com/viewtopic.php?id=300">"Indeed-Id SSO Test Application"</a> для демонстрации работы приведенных примеров.</p> <p>Для загрузки шаблонов и просмотра приведенных примеров необходимо выполнить <a href="http://community.indeed-id.com/viewtopic.php?pid=348#p348">настройку тестового приложения</a>.</p> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>описание формы, предназначенной только для реаутентификации.</em></p> </li> </ul> <p><em>Примечание:<br />Для просмотра работы примера необходимо дополнительно выполнить следующие действия: </em></p> <ul> <li> <p><em>в учетной записи тестового приложения для настройки "Требовать аутентификацию при доступе в прилоежние" установить значение "Нет";</em></p> </li> <li> <p><em>в учетной записи пользователя для тестового приложения для настройки "Требовать аутентификацию при доступе в прилоежние" установить значение "Нет".</em></p> </li> </ul> <p>Описание формы входа:</p> <div class="codebox"> <pre><code><opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{BC52204D-6573-418A-ABE3-2200910AC97B}" filledWndMarkDeletionTime="fwmdtOnFillingFinished" isForReauthenticationOnly="1"> ... </formData> </forms> ... </opLogon></code></pre> </div> <p>Описание формы смены пароля:</p> <div class="codebox"> <pre><code><opPasswordChange timeoutMs="4000" failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{35CA5E88-3BB4-49E8-A453-E01F457653C6}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> ... </formData> </forms> ... </opPasswordChange></code></pre> </div> <p>Описание формы разблокировки:</p> <div class="codebox"> <pre><code><opUnlock failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{74034A01-12DA-424F-B081-BB88F8010BE0}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> ... </formData> </forms> ... </opUnlock></code></pre> </div> <p>В приведенном примере аутентификация требуется только для формы входа в приложение, для форм смены пароля и разблокировки аутентификация не требуется (при заданных настройках аутентификации для приложения и пользователя).</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.formData.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>описание алгоритма отмены формы.</em></p> </li> </ul> <p>Описание алгоритма отмены формы (на примере формы входа):</p> <div class="codebox"> <pre><code><forms> <formData id="{BC52204D-6573-418A-ABE3-2200910AC97B}" filledWndMarkDeletionTime="fwmdtOnFillingFinished" isForReauthenticationOnly="1"> … <cancellingAlgorithm> <command type="ctFillCtrl"> <description>Нажать на Invisible Window</description> <dataFillCtrl fillingType="cftClickButton" clearCtrlText="1"> <ctrl className="Button" ctrlId="1009"> </ctrl> <fieldValueInfo field="ffNoData"/> </dataFillCtrl> </command> </cancellingAlgorithm> </formData> </forms></code></pre> </div> <p>В приведенном примере при отмене формы входа (например, если нажать кнопку "Отмена" в окне SSO) в окне входа будет нажата кнопка "Invisible Window" (при этом название кнопки изменится на "Close Window").</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.formData.Example1.app</em>).</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><em><strong>value</strong></em><br />Значение идентификатора плагина.</p> <p>Опциональный параметр. Отсутствие означает некорректность соответсвующего описания идентификатора плагина.</p>'
contentstext = 'Описание структуры форм приложения в шаблонах SSO. Синтаксис, параметры и атрибуты форм в SSO шаблонах. СИНТАКСИС <formData id="идентификатор формы" isForceRematching="флаг повторного матчинга" filledWndMarkDeletionTime="время удаления пометки "заполне...'
creator = '2'
creatorid = '5'
author = ''
email = ''
subject = 'Формы приложения'
isedited = '1'
editeddateline = '1457946521'
editedstaffid = '5'
views = '1787'
isfeatured = '0'
allowcomments = '1'
totalcomments = '0'
hasattachments = '1'
dateline = '1457698443'
articlestatus = '1'
articlerating = '0'
ratinghits = '0'
ratingcount = '0'
seosubject = null
contents = '<p>Описание структуры форм приложения в шаблонах SSO. Синтаксис, параметры и атрибуты форм в SSO шаблонах.<br /><br /><strong><br />СИНТАКСИС</strong></p> <pre><code><formData id=”идентификатор формы” isForceRematching=”флаг повторного матчинга” filledWndMarkDeletionTime=”время удаления пометки "заполнено"” isForReauthenticationOnly=”флаг предназначения формы только для реаутентификации”></code><br /><code> </code><br /><code><matching matchingType =”тип матчинга формы”></code><br /><code> [данные для матчинга формы]</code><br /><code> </matching></code><br /><code> </code><br /><code><fillingAlgorithm></code><br /><code> </code><br /><code> [данные алгоритма заполнения формы]</code><br /><code> </fillingAlgorithm></code><br /><code> <cancellingAlgorithm></code><br /><code> [данные алгоритма отмены формы]</code><br /><code> </cancellingAlgorithm></code><br /><code> </code><br /><code><targetPluginIds></code><br /><code> <pluginId value=”значение идентификатора плагина 1”/></code><br /><code> …</code><br /><code> <pluginId value=”значение идентификатора плагина N“/></code><br /><code></targetPluginIds></code><br /><code> </code><br /><code></formData></code></pre> <p><strong>ПАРАМЕТРЫ</strong></p> <p><em><strong><formData></strong></em><br />Структура описывает форму приложения.</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><em><strong>id</strong></em><br />Идентификатор формы (GUID).</p> <p>Идентификатор представляется в виде строки в формате: {00000000-0000-0000-0000-000000000000}</p> <p>Пример:</p> <div class="codebox"> <pre><code><formData id="{35CA5E88-3BB4-49E8-A453-E01F457653C6}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> ... </formData> </code></pre> </div> <p><em><strong>isForceRematching</strong></em><br />Флаг рематчинга (повторного матчинга) формы.</p> <p>Если для формы установлен флаг рематчинга, то после обработки этой формы (и снятия с нее пометки "заполнено"), ESSO Агент пытается повторно ее заматчить.</p> <p>Флаг следует устанавливать в том случае, если после заполнения формы, ESSO Агент не обнаруживает изменений в интерфейсе. Например, если сообщение об ошибке выводится в том же окне и после заполнения формы ESSO Агент не матчит сам форму как форму-признак ошибки.</p> <p>Возможные значения:<br />0 - рематчинг формы выключен<br />1 - рематчинг формы включен</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><em><strong>filledWndMarkDeletionTime</strong></em><br />Время удаления пометки "заполнено" с окна целевой формы.</p> <p>После заполнения окно целевой формы помечается как "заполненное". До тех пор, пока отметка "заполнено" не будет снята, ESSO Агент не будет матчить окно как окно целевой формы. Соответственно, ESSO Агент не сможет начать выполнение новой операции, для которой это окно является целевой формой.</p> <p>Возможные значения:<br /><em>fwmdtOnFillingFinished </em>- удалять пометку "заполнено" с окна целевой формы после завершения обработки заполненных данных (т.е. тогда, когда форма завершить обработку нажатия кнопки ОК)<br /><em>fwmdtOnOpFinished </em>- удалять пометку "заполнено" с окна целевой формы после завершения операции<br /><em>fwmdtNever </em>- никогда не удалять пометку "заполнено" с окна целевой формы</p> <p>Опциональный параметр. Значение по умолчанию: <em>fwmdtNever</em>.</p> <p>isForReauthenticationOnly<br />Флаг предназначения формы только для реаутентификации.</p> <p>Если аутентификация при доступе в приложение выключена в настройках учетной записи приложения или пользователя, установка флага позволяет включить аутентификацию для отдельной формы приложения.</p> <p>Если флаг выключен, аутентификация для формы выполняется согласно настройкам приложения или пользователя.</p> <p>Возможные значения:<br />0 - флаг выключен<br />1 - флаг включен (форма предназначена только для реаутентификации)</p> <p>Опциональный параметр. Значение по умолчанию: 0.</p> <p><em><strong><matching></strong></em><br />Структура задает параметры матчинга формы.</p> <p>Описание структуры приведено в разделе "Матчинг форм приложения".</p> <p><span class="bbu"><strong>Атрибуты</strong></span></p> <p><em><strong>matchingType</strong></em><br />Тип матчинга формы.</p> <p>Возможные значения:</p> <p><em>CFormData::mtWin32</em> - матчинг Win32-формы.</p> <p><em>CFormData::mtWeb</em> - матчинг Web-формы.</p> <p><em>CFormData::mtDisplayedText</em> - матчинг формы по способу отслеживания отображаемого текста. Используется для поддержки приложения Putty. В настоящее время для других приложений не используется.</p> <p><em>CFormData::mtTextDataStream</em> - матчинг формы по способу отслеживания потока текстовых данных. Используется для поддержки приложения Putty. В настоящее время для других приложений не используется.</p> <p><em>CFormData::mtNative</em> - матчинг формы по способу встроенного плагина. Используется для поддержки приложения Putty. В настоящее время для других приложений не используется.</p> <p><em><strong><fillingAlgorithm></strong></em><br />Структура задает параметры матчинга формы.</p> <p>Описание структуры приведено в разделе "Алгоритм заполнения формы".</p> <p><em><strong><cancellingAlgorithm></strong></em><br />Структура задает алгоритм отмены формы.</p> <p>Если алгоритм отмены формы задан, то для его выполнения необходимо, чтобы в качестве реакции на ошибку операции была указана отмена формы (т.е. когда в описании операции тег <em>failureReaction</em> имеет значение <em>frCancelTargetForm</em>).</p> <p>Если алгоритм не задан, то при отмене формы она будет просто закрыта.</p> <p>Отмена формы происходит в следующих случаях:</p> <ul> <li> <p>пользователь отменил любой диалог SSO, связанный с выполнением операции, которой принадлежит данная форма;</p> </li> <li> <p>произошла ошибка при выполнении алгоритма заполнения формы.</p> </li> </ul> <p>Описание данной структуры аналогично описанию структуры <em><fillingAlgorithm></em>.</p> <p>Опциональный параметр. Значение по умолчанию: пусто (алгоритм отсутствует).</p> <p><em><strong><targetPluginIds></strong></em><br />Структура задает множество идентификаторов плагинов, которым видна форма.</p> <p>Структура используется для поддержки приложения Putty. С Web- и Win32-шаблонами не применяется, с другими приложениями в настоящий момент не используется.</p> <p>Опциональный параметр. Значение по умолчанию: пусто.</p> <p><em><strong><pluginId></strong></em><br />Структура задает описание идентификатора плагина.</p> <p>Структура используется для поддержки приложения Putty. С Web- и Win32-шаблонами не применяется, с другими приложениями в настоящий момент не используется.<br /><br /></p> <p><strong>ПРИМЕРЫ</strong></p> <p>Данный раздел содержит примеры описания форм приложения и соответствующие готовые шаблоны для тестового приложения <a href="http://community.indeed-id.com/viewtopic.php?id=300">"Indeed-Id SSO Test Application"</a> для демонстрации работы приведенных примеров.</p> <p>Для загрузки шаблонов и просмотра приведенных примеров необходимо выполнить <a href="http://community.indeed-id.com/viewtopic.php?pid=348#p348">настройку тестового приложения</a>.</p> <p><strong>Пример 1</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>описание формы, предназначенной только для реаутентификации.</em></p> </li> </ul> <p><em>Примечание:<br />Для просмотра работы примера необходимо дополнительно выполнить следующие действия: </em></p> <ul> <li> <p><em>в учетной записи тестового приложения для настройки "Требовать аутентификацию при доступе в прилоежние" установить значение "Нет";</em></p> </li> <li> <p><em>в учетной записи пользователя для тестового приложения для настройки "Требовать аутентификацию при доступе в прилоежние" установить значение "Нет".</em></p> </li> </ul> <p>Описание формы входа:</p> <div class="codebox"> <pre><code><opLogon failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{BC52204D-6573-418A-ABE3-2200910AC97B}" filledWndMarkDeletionTime="fwmdtOnFillingFinished" isForReauthenticationOnly="1"> ... </formData> </forms> ... </opLogon></code></pre> </div> <p>Описание формы смены пароля:</p> <div class="codebox"> <pre><code><opPasswordChange timeoutMs="4000" failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{35CA5E88-3BB4-49E8-A453-E01F457653C6}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> ... </formData> </forms> ... </opPasswordChange></code></pre> </div> <p>Описание формы разблокировки:</p> <div class="codebox"> <pre><code><opUnlock failureReaction="frRematchTargetForm" rematchAttemptsLimit="2"> <forms> <formData id="{74034A01-12DA-424F-B081-BB88F8010BE0}" filledWndMarkDeletionTime="fwmdtOnFillingFinished"> ... </formData> </forms> ... </opUnlock></code></pre> </div> <p>В приведенном примере аутентификация требуется только для формы входа в приложение, для форм смены пароля и разблокировки аутентификация не требуется (при заданных настройках аутентификации для приложения и пользователя).</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.formData.Example1.app</em>).</p> <p><strong>Пример 2</strong></p> <p><em>Пример демонстрирует: </em></p> <ul> <li> <p><em>описание алгоритма отмены формы.</em></p> </li> </ul> <p>Описание алгоритма отмены формы (на примере формы входа):</p> <div class="codebox"> <pre><code><forms> <formData id="{BC52204D-6573-418A-ABE3-2200910AC97B}" filledWndMarkDeletionTime="fwmdtOnFillingFinished" isForReauthenticationOnly="1"> … <cancellingAlgorithm> <command type="ctFillCtrl"> <description>Нажать на Invisible Window</description> <dataFillCtrl fillingType="cftClickButton" clearCtrlText="1"> <ctrl className="Button" ctrlId="1009"> </ctrl> <fieldValueInfo field="ffNoData"/> </dataFillCtrl> </command> </cancellingAlgorithm> </formData> </forms></code></pre> </div> <p>В приведенном примере при отмене формы входа (например, если нажать кнопку "Отмена" в окне SSO) в окне входа будет нажата кнопка "Invisible Window" (при этом название кнопки изменится на "Close Window").</p> <p>Посмотреть работу примера можно с помощью готового шаблона (<em>IndeedID.Test.App.formData.Example1.app</em>).</p> <p><span class="bbu"><strong>Атрибуты</strong></span><br /><em><strong>value</strong></em><br />Значение идентификатора плагина.</p> <p>Опциональный параметр. Отсутствие означает некорректность соответсвующего описания идентификатора плагина.</p>'
contentstext = 'Описание структуры форм приложения в шаблонах SSO. Синтаксис, параметры и атрибуты форм в SSO шаблонах. СИНТАКСИС <formData id="идентификатор формы" isForceRematching="флаг повторного матчинга" filledWndMarkDeletionTime="время удаления пометки "заполне...'
_showEmptyViewWarning = false
_hasNoCategories = true
_knowledgebaseArticleContainer_Popular (array):_knowledgebaseArticleContainer_Recent (array):_pageTitle = 'База знаний'
_widgetContainer (array):
0 (array):
_errorContainer (array):_infoContainer (array):_alertContainer (array):_language (object: SWIFT_TemplateLanguageArray):widgetid = '1'
dateline = '1452346614'
defaulttitle = 'Главная'
appname = 'base'
widgetlink = 'https://support.indeed-company.ru/Core/Default/Index'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_home_small.png'
displayorder = '1'
displayinnavbar = '1'
displayinindex = '0'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'home'
staffid = '0'
isactive = false
1 (array):dateline = '1452346614'
defaulttitle = 'Главная'
appname = 'base'
widgetlink = 'https://support.indeed-company.ru/Core/Default/Index'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_home_small.png'
displayorder = '1'
displayinnavbar = '1'
displayinindex = '0'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'home'
staffid = '0'
isactive = false
widgetid = '12'
dateline = '1550573134'
defaulttitle = 'С чего начать?'
appname = 'base'
widgetlink = 'https://support.indeed-company.ru/Knowledgebase/List/Index/49/s-chego-nachat'
defaulticon = 'https://support.indeed-company.ru/__swift/files/file_83c98p0xgv24gp2.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '2'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '0'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = ''
staffid = '1'
isactive = false
2 (array):dateline = '1550573134'
defaulttitle = 'С чего начать?'
appname = 'base'
widgetlink = 'https://support.indeed-company.ru/Knowledgebase/List/Index/49/s-chego-nachat'
defaulticon = 'https://support.indeed-company.ru/__swift/files/file_83c98p0xgv24gp2.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '2'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '0'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = ''
staffid = '1'
isactive = false
widgetid = '2'
dateline = '1452346614'
defaulttitle = 'Зарегистрироваться'
appname = 'base'
widgetlink = 'https://support.indeed-company.ru/Base/UserRegistration/Register'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_register.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_register_small.png'
displayorder = '3'
displayinnavbar = '0'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '3'
uservisibilitycustom = '0'
widgetname = 'register'
staffid = '0'
isactive = false
3 (array):dateline = '1452346614'
defaulttitle = 'Зарегистрироваться'
appname = 'base'
widgetlink = 'https://support.indeed-company.ru/Base/UserRegistration/Register'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_register.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_register_small.png'
displayorder = '3'
displayinnavbar = '0'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '3'
uservisibilitycustom = '0'
widgetname = 'register'
staffid = '0'
isactive = false
widgetid = '6'
dateline = '1452346623'
defaulttitle = 'Отправить заявку'
appname = 'tickets'
widgetlink = 'https://support.indeed-company.ru/Tickets/Submit'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_submitticket.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_submitticket_small.png'
displayorder = '5'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'submitticket'
staffid = '0'
isactive = false
4 (array):dateline = '1452346623'
defaulttitle = 'Отправить заявку'
appname = 'tickets'
widgetlink = 'https://support.indeed-company.ru/Tickets/Submit'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_submitticket.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_submitticket_small.png'
displayorder = '5'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'submitticket'
staffid = '0'
isactive = false
widgetid = '11'
dateline = '1548660980'
defaulttitle = 'Документация'
appname = 'base'
widgetlink = 'https://docs.indeed-company.ru/'
defaulticon = 'https://support.indeed-company.ru/__swift/files/file_2tjo4yorba4z5yq.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '6'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '0'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = ''
staffid = '33'
isactive = false
5 (array):dateline = '1548660980'
defaulttitle = 'Документация'
appname = 'base'
widgetlink = 'https://docs.indeed-company.ru/'
defaulticon = 'https://support.indeed-company.ru/__swift/files/file_2tjo4yorba4z5yq.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '6'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '0'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = ''
staffid = '33'
isactive = false
widgetid = '3'
dateline = '1452346618'
defaulttitle = 'База знаний'
appname = 'knowledgebase'
widgetlink = 'https://support.indeed-company.ru/Knowledgebase/List'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_knowledgebase.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '7'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'knowledgebase'
staffid = '1'
isactive = true
6 (array):dateline = '1452346618'
defaulttitle = 'База знаний'
appname = 'knowledgebase'
widgetlink = 'https://support.indeed-company.ru/Knowledgebase/List'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_knowledgebase.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '7'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'knowledgebase'
staffid = '1'
isactive = true
widgetid = '5'
dateline = '1452346622'
defaulttitle = 'Новости'
appname = 'news'
widgetlink = 'https://support.indeed-company.ru/News/List'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_news.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '8'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'news'
staffid = '1'
isactive = false
7 (array):dateline = '1452346622'
defaulttitle = 'Новости'
appname = 'news'
widgetlink = 'https://support.indeed-company.ru/News/List'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_news.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '8'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'news'
staffid = '1'
isactive = false
widgetid = '4'
dateline = '1452346620'
defaulttitle = 'Устранение неполадок'
appname = 'troubleshooter'
widgetlink = 'https://support.indeed-company.ru/Troubleshooter/List'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_troubleshooter.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '9'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'troubleshooter'
staffid = '1'
isactive = false
8 (array):dateline = '1452346620'
defaulttitle = 'Устранение неполадок'
appname = 'troubleshooter'
widgetlink = 'https://support.indeed-company.ru/Troubleshooter/List'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_troubleshooter.svg'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '9'
displayinnavbar = '1'
displayinindex = '1'
ismaster = '1'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = 'troubleshooter'
staffid = '1'
isactive = false
widgetid = '9'
dateline = '1470231362'
defaulttitle = 'Сайт компании'
appname = 'base'
widgetlink = 'https://indeed-company.ru'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '10'
displayinnavbar = '1'
displayinindex = '0'
ismaster = '0'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = ''
staffid = '1'
isactive = false
dateline = '1470231362'
defaulttitle = 'Сайт компании'
appname = 'base'
widgetlink = 'https://indeed-company.ru'
defaulticon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
defaultsmallicon = 'https://support.indeed-company.ru/__swift/themes/client/images/icon_widget_default.png'
displayorder = '10'
displayinnavbar = '1'
displayinindex = '0'
ismaster = '0'
isenabled = '1'
widgetvisibility = '1'
uservisibilitycustom = '0'
widgetname = ''
staffid = '1'
isactive = false
(protected) languageArray (array):
charset = 'UTF-8'
action_notreg = 'Мы столкнулись с проблемой (действие %s не зарегистрировано)'
app_notreg = '%s Приложение не зарегистрировано'
buttonback = 'Назад'
buttonnext = 'Вперед'
buttonsend = 'Отправить'
buttonsubmit = 'Отправить'
buttonupdate = 'Обновить'
bytes = 'Байт'
cancel = 'Отмена'
captchadesc = 'Пожалуйста, введите текст, находящийся на изображении, в текстовое поле ниже (этот метод используется для предотвращения отправки автоматических сообщений).'
captchaverification = 'Проверка CAPTCHA'
close = 'Закрыть'
commentconfirmation = 'Спасибо вам за ваши отзывы. Ваш комментарий появится после того, как будет одобрен.'
commentdata = 'Комментарии:'
commentemail = 'Email:'
commentfullname = 'Полное имя:'
comments = 'Комментарии'
creationfailed = 'Мы столкнулись с проблемой (ошибка создания объекта)'
defaulttimezone = '-- Часовой пояс по умолчанию --'
emailinvalid = 'Введеный адрес электронной почты не действителен'
errcaptchainvalid = 'CAPTCHA и фраза не совпадают.'
errorsmtpconnect = 'Мы столкнулись с проблемой (не удается подключиться к SMTP-серверу)'
event_notreg = 'Мы столкнулись с проблемой (действие %s не зарегистрировано)'
file = 'Файл'
filterkb = 'База знаний'
filternews = 'Категории новостей'
gb = 'ГБ'
generalinformation = 'Общая информация'
hidden = '[ Скрыто ]'
home = 'Главная'
invalidemail = 'Введеный адрес электронной почты не действителен'
invaliduser = 'неправильное имя пользователя или пароль'
invaliduseracc = 'Неверный пользователь. Такой учётной записи не существует.'
invaliduserdisabled = 'Вход невозможен. Учётная запись отключена'
invaliduserexpired = 'Вход невозможен. Срок действия учётной записи истёк'
invalidusertgroupres = 'Не удается войти в систему. У этой группы пользователей нет доступа к этой группе шаблонов.'
kb = 'кБ'
languagefield = 'Язык:'
latestupdates = 'Последние обновления'
loggedinfromstaff = 'Вошли как: %s'
login = 'Вход'
loginenteremail = 'Ваш email адрес'
logintocontinue = 'Пожалуйста, войдите чтобы продолжить'
logout = 'Выйти'
lostpassword = 'Забыли пароль'
machangepassword = 'Сменить пароль'
malogout = 'Выход'
maorganization = 'Моя Организация'
mapreferences = 'Настройки'
maprofile = 'Мой профиль'
mb = 'МБ'
msgcsrfhash = 'Мы столкнулись с проблемой (обнаружена подделка межсайтовых запросов); Пожалуйста, попробуйте снова'
myaccount = 'Учетная запись'
na = '- Нет данных -'
no = 'Нет'
noinfoinview = 'Информация не представлена'
nopermission = 'Продолжение невозможно. У Вас отсутствуют привилегии на совершение данного действия.'
nosearchresults = 'Результаты отсутствуют'
on = 'на'
pagination = 'Страница %s из %s'
pleasetypeyourquery = 'Как мы можем Вам помочь?'
pleasetypeyourquestion = 'Как мы можем Вам помочь?'
postedby = 'Автор'
postnewcomment = 'Добавить новый комментарий'
private = '[ Приватно ]'
readmore = 'Подробнее'
rememberme = 'Запомнить меня'
reply = 'Ответ'
replytocomment = 'Ответ на комментарий'
requiredfieldempty = 'Одно из обязательных для заполнения полей пустое'
rssfeed = 'RSS Лента'
salutationdr = 'Уважаемый.'
salutationmiss = 'Госпожа.'
salutationmr = 'Господин.'
salutationmrs = 'Уважаемая.'
searchbutton = 'ПОИСК'
searchresults = 'Результаты Поиска'
subscribe = 'Подписаться'
supportcenterfield = 'Центр поддержки:'
unable_to_execute = 'Невыполнимо %s'
unsubscribe = 'Отписаться'
vardate1 = '%dд %dч %dм'
vardate2 = '%dч %dм %dс'
vardate3 = '%dм %dс'
vardate4 = '%dс'
viewallnews = 'Все Новости'
widgethome = 'Главная'
widgetknowledgebase = 'База знаний'
widgetnews = 'Новости'
widgetregister = 'Зарегистрироваться'
widgetsubmitticket = 'Отправить заявку'
widgettroubleshooter = 'Устранение неполадок'
widgetviewtickets = 'Мои заявки'
yes = 'Да'
nwreadmore = 'Подробнее'
cookiepolicytext = 'На этом сайте используются куки-файлы, чтобы вы могли получить лучший опыт на нашем сайте. Для получения дополнительной информации о файлах cookie, пожалуйста, '
cookiepolicyagreement = 'Согласен'
regpolicyurl = 'политика конфиденциальности'
wrong_profile_image = 'Изображение профиля не обновлялось. Неверный формат.'
wrong_image_size = 'Размер изображения больше разрешенного размера загрузки.'
recaptchadesc = 'Пожалуйста, заполните нижеприведенную задачу (этот метод используется для предотвращения отправки автоматических сообщений).'
invalidhtmltags = 'Введен неверный HTML-тэг'
posted = 'Автор'
regpolicyareement = 'Политика конфиденциальности'
cookiepolicyurl = 'политика конфиденциальности'
widgetdocumentation = 'Документация'
widgetgettingstarted = 'С чего начать?'
widgetcompanysite = 'Сайт компании'
defaulttitle = 'Портал технической поддержки компании Индид'
copyright = 'Все права защищены © Компания Индид.'
poweredby = 'Портал технической поддержки'
regpolicytext = 'Я соглашаюсь, чтобы Индид обработал мои данные и согласился с условиями'
articlehelpful = 'Эта статья полезна'
articlenothelpful = 'Эта статья бесполезна'
articlevotes = 'голос(а)'
kbattachments = 'Вложения'
kbnopermission = 'Извините, но у Вас нет доступа для просмотра этой статьи или её просто не существует.'
knowledgebase = 'База знаний'
mostpopular = 'Популярное'
recentarticles = 'Последние добавленные статьи'
lastmodifiedby = 'Last modified by'
ratingstars = '%.1f из 5 звезд'
(protected) languageArrayEN (array):action_notreg = 'Мы столкнулись с проблемой (действие %s не зарегистрировано)'
app_notreg = '%s Приложение не зарегистрировано'
buttonback = 'Назад'
buttonnext = 'Вперед'
buttonsend = 'Отправить'
buttonsubmit = 'Отправить'
buttonupdate = 'Обновить'
bytes = 'Байт'
cancel = 'Отмена'
captchadesc = 'Пожалуйста, введите текст, находящийся на изображении, в текстовое поле ниже (этот метод используется для предотвращения отправки автоматических сообщений).'
captchaverification = 'Проверка CAPTCHA'
close = 'Закрыть'
commentconfirmation = 'Спасибо вам за ваши отзывы. Ваш комментарий появится после того, как будет одобрен.'
commentdata = 'Комментарии:'
commentemail = 'Email:'
commentfullname = 'Полное имя:'
comments = 'Комментарии'
creationfailed = 'Мы столкнулись с проблемой (ошибка создания объекта)'
defaulttimezone = '-- Часовой пояс по умолчанию --'
emailinvalid = 'Введеный адрес электронной почты не действителен'
errcaptchainvalid = 'CAPTCHA и фраза не совпадают.'
errorsmtpconnect = 'Мы столкнулись с проблемой (не удается подключиться к SMTP-серверу)'
event_notreg = 'Мы столкнулись с проблемой (действие %s не зарегистрировано)'
file = 'Файл'
filterkb = 'База знаний'
filternews = 'Категории новостей'
gb = 'ГБ'
generalinformation = 'Общая информация'
hidden = '[ Скрыто ]'
home = 'Главная'
invalidemail = 'Введеный адрес электронной почты не действителен'
invaliduser = 'неправильное имя пользователя или пароль'
invaliduseracc = 'Неверный пользователь. Такой учётной записи не существует.'
invaliduserdisabled = 'Вход невозможен. Учётная запись отключена'
invaliduserexpired = 'Вход невозможен. Срок действия учётной записи истёк'
invalidusertgroupres = 'Не удается войти в систему. У этой группы пользователей нет доступа к этой группе шаблонов.'
kb = 'кБ'
languagefield = 'Язык:'
latestupdates = 'Последние обновления'
loggedinfromstaff = 'Вошли как: %s'
login = 'Вход'
loginenteremail = 'Ваш email адрес'
logintocontinue = 'Пожалуйста, войдите чтобы продолжить'
logout = 'Выйти'
lostpassword = 'Забыли пароль'
machangepassword = 'Сменить пароль'
malogout = 'Выход'
maorganization = 'Моя Организация'
mapreferences = 'Настройки'
maprofile = 'Мой профиль'
mb = 'МБ'
msgcsrfhash = 'Мы столкнулись с проблемой (обнаружена подделка межсайтовых запросов); Пожалуйста, попробуйте снова'
myaccount = 'Учетная запись'
na = '- Нет данных -'
no = 'Нет'
noinfoinview = 'Информация не представлена'
nopermission = 'Продолжение невозможно. У Вас отсутствуют привилегии на совершение данного действия.'
nosearchresults = 'Результаты отсутствуют'
on = 'на'
pagination = 'Страница %s из %s'
pleasetypeyourquery = 'Как мы можем Вам помочь?'
pleasetypeyourquestion = 'Как мы можем Вам помочь?'
postedby = 'Автор'
postnewcomment = 'Добавить новый комментарий'
private = '[ Приватно ]'
readmore = 'Подробнее'
rememberme = 'Запомнить меня'
reply = 'Ответ'
replytocomment = 'Ответ на комментарий'
requiredfieldempty = 'Одно из обязательных для заполнения полей пустое'
rssfeed = 'RSS Лента'
salutationdr = 'Уважаемый.'
salutationmiss = 'Госпожа.'
salutationmr = 'Господин.'
salutationmrs = 'Уважаемая.'
searchbutton = 'ПОИСК'
searchresults = 'Результаты Поиска'
subscribe = 'Подписаться'
supportcenterfield = 'Центр поддержки:'
unable_to_execute = 'Невыполнимо %s'
unsubscribe = 'Отписаться'
vardate1 = '%dд %dч %dм'
vardate2 = '%dч %dм %dс'
vardate3 = '%dм %dс'
vardate4 = '%dс'
viewallnews = 'Все Новости'
widgethome = 'Главная'
widgetknowledgebase = 'База знаний'
widgetnews = 'Новости'
widgetregister = 'Зарегистрироваться'
widgetsubmitticket = 'Отправить заявку'
widgettroubleshooter = 'Устранение неполадок'
widgetviewtickets = 'Мои заявки'
yes = 'Да'
nwreadmore = 'Подробнее'
cookiepolicytext = 'На этом сайте используются куки-файлы, чтобы вы могли получить лучший опыт на нашем сайте. Для получения дополнительной информации о файлах cookie, пожалуйста, '
cookiepolicyagreement = 'Согласен'
regpolicyurl = 'политика конфиденциальности'
wrong_profile_image = 'Изображение профиля не обновлялось. Неверный формат.'
wrong_image_size = 'Размер изображения больше разрешенного размера загрузки.'
recaptchadesc = 'Пожалуйста, заполните нижеприведенную задачу (этот метод используется для предотвращения отправки автоматических сообщений).'
invalidhtmltags = 'Введен неверный HTML-тэг'
posted = 'Автор'
regpolicyareement = 'Политика конфиденциальности'
cookiepolicyurl = 'политика конфиденциальности'
widgetdocumentation = 'Документация'
widgetgettingstarted = 'С чего начать?'
widgetcompanysite = 'Сайт компании'
defaulttitle = 'Портал технической поддержки компании Индид'
copyright = 'Все права защищены © Компания Индид.'
poweredby = 'Портал технической поддержки'
regpolicytext = 'Я соглашаюсь, чтобы Индид обработал мои данные и согласился с условиями'
articlehelpful = 'Эта статья полезна'
articlenothelpful = 'Эта статья бесполезна'
articlevotes = 'голос(а)'
kbattachments = 'Вложения'
kbnopermission = 'Извините, но у Вас нет доступа для просмотра этой статьи или её просто не существует.'
knowledgebase = 'База знаний'
mostpopular = 'Популярное'
recentarticles = 'Последние добавленные статьи'
lastmodifiedby = 'Last modified by'
ratingstars = '%.1f из 5 звезд'
charset = 'UTF-8'
widgethome = 'Home'
widgetregister = 'Register'
widgetviewtickets = 'My Tickets'
widgetsubmitticket = 'Submit a Ticket'
widgetknowledgebase = 'Knowledgebase'
widgetnews = 'News'
widgettroubleshooter = 'Troubleshooter'
bytes = 'Bytes'
kb = 'KB'
mb = 'MB'
gb = 'GB'
home = 'Home'
login = 'Login'
logout = 'Logout'
rssfeed = 'RSS Feed'
cancel = 'Cancel'
noinfoinview = 'We've got nothing to display here'
subscribe = 'Subscribe'
rememberme = 'Remember me'
lostpassword = 'Lost password'
poweredby = 'Powered by Kayako Help Desk Software'
defaulttitle = '<a href="http://www.kayako.com/?utm_source=%s&utm_medium=chat&utm_content=powered-by-kayako-help-desk-software&utm_campaign=product_links" target="_blank" rel="noopener noreferrer" class="bottomfooterlink">Help Desk Software</a> by Kayako'
copyright = 'Copyright © 2001-%s Kayako'
app_notreg = 'We encountered a problem (%s app is not registered)'
event_notreg = 'We encountered a problem (%s event is not registered)'
unable_to_execute = 'We encountered a problem (unable to execute %s)'
searchbutton = 'Search'
searchresults = 'Search Results'
nosearchresults = 'We weren't able to find anything relevant to your search'
pleasetypeyourquestion = 'What can we help you with?'
pleasetypeyourquery = 'What can we help you with?'
defaulttimezone = '-- Default Time Zone --'
invaliduseracc = 'Invalid user account. This account does not exist.'
invaliduser = 'Invalid username or password'
invaliduserdisabled = 'We were unable to log you in as this account is disabled'
invaliduserexpired = 'We were unable to log you in as this account has expired'
msgcsrfhash = 'We encountered a problem (cross-site request forgery detected); please try again'
invalidusertgroupres = 'Unable to login. The user group is not authorized to access this template group.'
action_notreg = 'We encountered a problem (%s action is not registered)'
requiredfieldempty = 'One of the required fields is empty'
emailinvalid = 'The email address entered is not valid'
languagefield = 'Language:'
close = 'Close'
errcaptchainvalid = 'The CAPTCHA letters entered did not match, please try again.'
creationfailed = 'We encountered a problem (object creation failed)'
supportcenterfield = 'Helpdesk:'
errorsmtpconnect = 'We encountered a problem (unable to connect to SMTP server)'
buttonsubmit = 'Submit'
buttonupdate = 'Update'
buttonsend = 'Send'
loginenteremail = 'Your email address'
myaccount = 'Account'
maprofile = 'My Profile'
maorganization = 'My Organization'
mapreferences = 'Preferences'
machangepassword = 'Change Password'
malogout = 'Logout'
yes = 'Yes'
no = 'No'
file = 'File'
salutationmr = 'Mr.'
salutationmiss = 'Ms.'
salutationmrs = 'Mrs.'
salutationdr = 'Dr.'
buttonnext = 'Next'
buttonback = 'Back'
generalinformation = 'General Information'
invalidemail = 'The email address entered is not valid'
nopermission = 'Sorry, you do not have permission to carry out this action.'
hidden = '[ Hidden ]'
private = '[ Private ]'
na = '- NA -'
logintocontinue = 'Please log in to continue'
captchadesc = 'Please enter the text you see in the image into the textbox below (we use this to prevent automated submissions).'
latestupdates = 'Latest Updates'
postedby = 'Posted by'
loggedinfromstaff = 'Logged in as: %s'
on = 'on'
readmore = 'Read more'
viewallnews = 'View all news'
captchaverification = 'CAPTCHA Verification'
comments = 'Comments'
replytocomment = 'Reply to comment'
postnewcomment = 'Post a new comment'
commentfullname = 'Full Name:'
commentemail = 'Email:'
commentdata = 'Comments:'
commentconfirmation = 'Thank you for your feedback. Your comment will appear once it has been approved.'
reply = 'Reply'
filternews = 'News Categories'
filterkb = 'Knowledgebase'
vardate1 = '%dd %dh %dm'
vardate2 = '%dh %dm %ds'
vardate3 = '%dm %ds'
vardate4 = '%ds'
unsubscribe = 'Unsubscribe'
pagination = 'Page %s of %s'
wrong_profile_image = 'The profile image was not updated. Wrong format.'
wrong_image_size = 'The image size is bigger than the allowed upload size.'
invalidhtmltags = 'Invalid HTML Tags entered'
posted = 'Posted'
commentconfirmation_approved = 'Thank you for your feedback.'
regpolicytext = 'I consent for Kayako to process my data and agree to the terms of the '
regpolicyurl = 'Privacy Policy'
regpolicyareement = 'Privacy Policy Field Required'
cookiepolicyagreement = 'I Agree'
cookiepolicytext = 'This site uses cookies to ensure you get the best experience on our website. For more information on cookies, please read our '
cookiepolicyurl = 'Privacy Policy'
recaptchadesc = 'Please complete the below captcha challenge (we use this to prevent automated submissions).'
widgetdocumentation = 'Documentation'
widgetgettingstarted = 'Getting Started'
widgetcompanysite = 'Site'
widgethome = 'Home'
widgetregister = 'Register'
widgetviewtickets = 'My Tickets'
widgetsubmitticket = 'Submit a Ticket'
widgetknowledgebase = 'Knowledgebase'
widgetnews = 'News'
widgettroubleshooter = 'Troubleshooter'
bytes = 'Bytes'
kb = 'KB'
mb = 'MB'
gb = 'GB'
home = 'Home'
login = 'Login'
logout = 'Logout'
rssfeed = 'RSS Feed'
cancel = 'Cancel'
noinfoinview = 'We've got nothing to display here'
subscribe = 'Subscribe'
rememberme = 'Remember me'
lostpassword = 'Lost password'
poweredby = 'Powered by Kayako Help Desk Software'
defaulttitle = '<a href="http://www.kayako.com/?utm_source=%s&utm_medium=chat&utm_content=powered-by-kayako-help-desk-software&utm_campaign=product_links" target="_blank" rel="noopener noreferrer" class="bottomfooterlink">Help Desk Software</a> by Kayako'
copyright = 'Copyright © 2001-%s Kayako'
app_notreg = 'We encountered a problem (%s app is not registered)'
event_notreg = 'We encountered a problem (%s event is not registered)'
unable_to_execute = 'We encountered a problem (unable to execute %s)'
searchbutton = 'Search'
searchresults = 'Search Results'
nosearchresults = 'We weren't able to find anything relevant to your search'
pleasetypeyourquestion = 'What can we help you with?'
pleasetypeyourquery = 'What can we help you with?'
defaulttimezone = '-- Default Time Zone --'
invaliduseracc = 'Invalid user account. This account does not exist.'
invaliduser = 'Invalid username or password'
invaliduserdisabled = 'We were unable to log you in as this account is disabled'
invaliduserexpired = 'We were unable to log you in as this account has expired'
msgcsrfhash = 'We encountered a problem (cross-site request forgery detected); please try again'
invalidusertgroupres = 'Unable to login. The user group is not authorized to access this template group.'
action_notreg = 'We encountered a problem (%s action is not registered)'
requiredfieldempty = 'One of the required fields is empty'
emailinvalid = 'The email address entered is not valid'
languagefield = 'Language:'
close = 'Close'
errcaptchainvalid = 'The CAPTCHA letters entered did not match, please try again.'
creationfailed = 'We encountered a problem (object creation failed)'
supportcenterfield = 'Helpdesk:'
errorsmtpconnect = 'We encountered a problem (unable to connect to SMTP server)'
buttonsubmit = 'Submit'
buttonupdate = 'Update'
buttonsend = 'Send'
loginenteremail = 'Your email address'
myaccount = 'Account'
maprofile = 'My Profile'
maorganization = 'My Organization'
mapreferences = 'Preferences'
machangepassword = 'Change Password'
malogout = 'Logout'
yes = 'Yes'
no = 'No'
file = 'File'
salutationmr = 'Mr.'
salutationmiss = 'Ms.'
salutationmrs = 'Mrs.'
salutationdr = 'Dr.'
buttonnext = 'Next'
buttonback = 'Back'
generalinformation = 'General Information'
invalidemail = 'The email address entered is not valid'
nopermission = 'Sorry, you do not have permission to carry out this action.'
hidden = '[ Hidden ]'
private = '[ Private ]'
na = '- NA -'
logintocontinue = 'Please log in to continue'
captchadesc = 'Please enter the text you see in the image into the textbox below (we use this to prevent automated submissions).'
latestupdates = 'Latest Updates'
postedby = 'Posted by'
loggedinfromstaff = 'Logged in as: %s'
on = 'on'
readmore = 'Read more'
viewallnews = 'View all news'
captchaverification = 'CAPTCHA Verification'
comments = 'Comments'
replytocomment = 'Reply to comment'
postnewcomment = 'Post a new comment'
commentfullname = 'Full Name:'
commentemail = 'Email:'
commentdata = 'Comments:'
commentconfirmation = 'Thank you for your feedback. Your comment will appear once it has been approved.'
reply = 'Reply'
filternews = 'News Categories'
filterkb = 'Knowledgebase'
vardate1 = '%dd %dh %dm'
vardate2 = '%dh %dm %ds'
vardate3 = '%dm %ds'
vardate4 = '%ds'
unsubscribe = 'Unsubscribe'
pagination = 'Page %s of %s'
wrong_profile_image = 'The profile image was not updated. Wrong format.'
wrong_image_size = 'The image size is bigger than the allowed upload size.'
invalidhtmltags = 'Invalid HTML Tags entered'
posted = 'Posted'
commentconfirmation_approved = 'Thank you for your feedback.'
regpolicytext = 'I consent for Kayako to process my data and agree to the terms of the '
regpolicyurl = 'Privacy Policy'
regpolicyareement = 'Privacy Policy Field Required'
cookiepolicyagreement = 'I Agree'
cookiepolicytext = 'This site uses cookies to ensure you get the best experience on our website. For more information on cookies, please read our '
cookiepolicyurl = 'Privacy Policy'
recaptchadesc = 'Please complete the below captcha challenge (we use this to prevent automated submissions).'
widgetdocumentation = 'Documentation'
widgetgettingstarted = 'Getting Started'
widgetcompanysite = 'Site'
База знаний : Indeed Enterprise Single Sign-On > Шаблонизация Enterprise SSO
ВОПРОС
Приложение добавлено в чёрный список
в Приложения, но может быть запущено
ОТВЕТ
Проверьте наличие параметра
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession
ManagerAppCertDlls ключ AppSecDll (REG_EXPAND_SZ). В нём
должен быть прописан путь...
ВЫБОР АЛГОРИТМА ЗАПОЛНЕНИЯ ПРИ
СОЗДАНИИ ШАБЛОНА.
В шаблонизаторе существует два
алгоритма заполнения: на основе SETTEXT и
ЭМУЛЯЦИЯ ВВОДА.
НА ОСНОВЕ SETTEXT - данный алгоритм
заполнения основан на стандартном
методе контролов SetText. Основным
требован...
ВОПРОС
Мы написали шаблон для целевого
win32-приложения с эмуляцией ввода, но
приходится ждать по 10-20 секунд между
переходами по контролам по Tab,
несмотря на то, что выставленные
задержки минимальны (несколько
миллисекунд).
ОТВЕТ
Вариант 1. В команду...
ВОПРОС
Какая техническая информация нужна
для подготовки шаблона для целевого
веб-приложения?
ОТВЕТ
1. Название браузера (в том числе его
версия, разрядность и язык
локализации), под которым выполняется
целевое веб-приложение
2. Скриншот из браузера со ...
В некоторых приложениях для
авторизации, помимо логина и пароля,
требуются дополнительные параметры
(например, сервер, база данных и т.п.).
Поля для задания дополнительных
параметров авторизации в
терминологии Indeed-Id называются
_КАСТОМНЫМИ ПОЛЯМИ_.
Д...
_МАТЧИНГОМ ПРИЛОЖЕНИЯ_ называется
процесс определения целевого
приложения ESSO Агентом.
Механизм матчинга целевого
приложения ESSO Агентом основан на
сопоставлении данных, указанных в
шаблоне, с данными приложения. После
загрузки шаблона в систему ESSO,...
ВОПРОС
Не работает Indeed-ID Enterprise SSO в Internet Explorer
на Windows Server 2008 и старше
ОТВЕТ
По умолчанию в настройках IE запрещена
загрузка сторонних расширений.
См. toolsinternet optionsadvancedenable third-paty browser
extensions.
Если ее ...
СИНТАКСИС
…
Описание структуры операций в SSO
шаблонах, их синтаксис параметры и
атрибуты, примеры описания операций.
СИНТАКСИС
<[операция] timeoutMs="таймаут"
failureReaction="реакция на ошибку"
rematchAttemptsLimit="лимит попыток
рематчинга">>
_ОПЕРАЦИЕЙ _называется процесс
выполнения действий, необходимых для
аутентификации (вход в приложение,
смена пароля, разблокировка).
Шаблоны позволяют задать три
операции: операция входа, операция
смены пароля, операция разблокировки.
Все операции являю...
Описание приложения необходимо для
идентификации приложения и
отображения информации о нем в
системе ESSO. Обычно в качестве описания
используют название приложения.
Описание приложения должно быть
уникальным (в противном случае при
загрузке шаблона воз...
ДЛЯ ФОРМЫ:
URL СТРАНИЦЫ: параметр содержит url адрес
страницы, обрабатываемой
шаблонизатором. В шаблоне содержится
в теге . Обратите внимание, что url
целевой страницы может изменяться,
например, отличия в URL страницы
авторизации Google:
>
https...
НАСТРОЙКИ ГЕНЕРАЦИИ ШАБЛОНА:
*
ГЛУБИНА ПРОСМОТРА КОНТРОЛОВ ФОРМЫ -
данный параметр задаёт насколько
глубоко по уровню вложенности
шаблонизатор будет собирать данные о
контролах. Данный параметр задаётся
вручную при создании шаблона.
Если параметр ра...
В данной статье мы рассмотрим
процедуру добавления в SSO шаблон
обработки окна "Безопасность Windows"
("Windows Security") для механизма Basic/Digest
аутентификации в Internet Explorer.
Речь идет о следующем окне:
Данное окно появляется при входе в
web-...
ВОПРОС:
Прошу пояснить, какие браузеры
поддерживаются Indeed-Id с точки зрения
создания и работы веб шаблонов SSO?
ОТВЕТ:
Поддерживаемые версии браузеров для
web-приложений (Агент SSO отслеживает,
перехватывает и заполняет формы
web-приложений):
• Micros...
Небольшая справка по регулярным
выражением, примеры их использования
в шаблонах SSO и полезные ссылки по
теме.
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ - система
обработки текста, основанная на
специальной системе записи образцов
для поиска.
Образец (англ. pattern), задающ...
Описание структуры форм приложения в
шаблонах SSO. Синтаксис, параметры и
атрибуты форм в SSO шаблонах.
СИНТАКСИС
Портал технической поддержки компании Индид