CAPTCHA#
Для отображения сервиса CAPTCHA при входе по логину и паролю необходимо внести изменения в конфигурационный файл, а также загрузить необходимые файлы (CSS и JS).
Изменения конфигурационного файла должны быть произведены:
в блоке настроек
blitz.prod.local.idp.captcha
. Пример записи настройки приведен ниже:
"captcha" : {
"exampleCaptcha": {
"operations": [
{
"call": {
"headers": [
"accept:application/json",
"Authorization:Bearer ${cfg.bearerToken}"
],
"method": "post",
"url": "https://captcha.example.com/captcha/1.0.0/check?uniqueFormHash=${ste.uniqueFormHash}&code=${ocp.code}&options[system]=${cfg.system}&options[token]=${cfg.token}"
},
"check": {
"errRegExp": {},
"okRegExp": {
"error": "0"
}
},
"name": "check",
"newState": {
"uniqueFormHash": "${rsp.result.uniqueFormHash-}"
}
},
{
"call": {
"headers": [
"accept:application/json",
"Authorization:Bearer ${cfg.bearerToken}"
],
"method": "get",
"url": "https://captcha.example.com/captcha/1.0.0/create?type=${cfg.type}&options[system]=${cfg.system}&options[token]=${cfg.token}"
},
"name": "create",
"newState": {
"uniqueFormHash": "${rsp.result.uniqueFormHash-}"
}
},
{
"call": {
"headers": [
"accept:application/json",
"Authorization:Bearer ${cfg.bearerToken}"
],
"method": "post",
"url": "https://captcha.example.com/captcha/1.0.0/refresh?uniqueFormHash=${ste.uniqueFormHash}&type=${cfg.type}&options[system]=${cfg.system}&options[token]=${cfg.token}"
},
"name": "refresh"
}
],
"plainParams": {
"type": "arithmetic"
},
"secureParams": {
"bearerToken": "<access_token>",
"system": "<system_id>",
"token": "<system_token>"
}
}
}
В этом блоке содержатся параметры вызова трех методов сервиса CAPTCHA
(create
, check
, refresh
), а также секретные параметры –
маркер доступа (bearerToken
), идентификатор системы (system
), а
также токен системы (token
).
в блоке настроек входа по логину и паролю
blitz.prod.local.idp.password
. Внутри этого блока следует добавить блокcaptcha
и настроить согласно примеру:
"captcha" : {
"enabled": true,
"initJs": "require(['https://demo.reaxoft.ru/themes/default/assets/js/passwordCaptcha.js', 'captcha-conf'], function(captcha, conf){ captcha(conf, 'https://demo.reaxoft.ru/themes/default/assets/css/passwordCaptcha.css');});",
"mode": {
"type": "always_on"
},
"name": "exampleCaptcha"
}
В этом блоке следует настроить следующие параметры:
enabled
– признак того, включена CAPTCHA или нет (true/false
);initJs
– содержит ссылки на JS-скрипт и CSS-стили, загружаемые на странице входа и необходимые для отображения/вызова CAPTCHA на странице входа;mode
– режим отображения CAPTCHA, предусмотрены следующие режимы:always_on
– CAPTCHA отображается всегда;on_header
– CAPTCHA отображается, если в запросе есть заголовок, указанный в параметреname
, и значением, указанном в параметреvalue
.by_brute_force_protection
– CAPTCHA отображается, если Blitz Identity Provider обнаружил подбор пароля к конкретной учетной записи или массовый подбор пароля ко всем учетным записям.
При использовании режима by_brute_force_protection
требуется дополнительно создать в блоке blitz.prod.local.idp.password
блок настроек bruteForceProtection
со следуюшими настройками:
disabled
– выключена или нет защита (true/false);captcha
– использовать ли тест CAPTCHA при срабатывании защиты (true/false);delay
– время задержки входа в секундах (применяется, если выключено использование CAPTCHA);блок
system
в настройкеthresholds
– если необходима защита на уровне системы (защита от перебора на разные логины). Задаются настройки:minAttemptsToActivate
– минимальное кол-во прошедших входов для включения механизма защиты на основе статистики системы (по умолчанию 100 входов);timeWindowInMin
– временное окно сбора статистики по соотношению успешных и неуспешных входов в минутах, должно быть четным (по умолчанию 100 минут);failedAttemptsPercent
, настройкаturnOff
– порог выключения автоматической защиты, в процентах;failedAttemptsPercent
, настройкаturnOn
– порог включения автоматической защиты, в процентах.forced
– включить принудительно защиту для всех (true/false).
блок
system
в настройкеthresholds
– если необходима защита на уровне отдельных пользователей (защита от подбора пароля на конкретного пользователя). Задаются настройки:ttlInSec
– период, за который накапливается счетчик неуспешных входов по пользователю в секундах (по умолчанию 3600 секунд);failedAttempts
, настройкаturnOn
– количество ошибочных входов за период, после которого для учетной записи включится защита.
Пример настроек блока bruteForceProtection
(включена только защита на уровне пользователя):
"bruteForceProtection" : {
"delay" : 0,
"captcha" : true,
"disabled" : false,
"thresholds" : {
"user" : {
"failedAttempts" : {
"turnOn" : 5
},
"ttlInSec" : 3600
}
}
}
Пример настроек bruteForceProtection
(включена защита на уровне пользователя и на уровне системы):
"bruteForceProtection" : {
"disabled": false,
"delay" : 0,
"captcha" : true,
"thresholds" : {
"system" : {
"minAttemptsToActivate": 1000,
"timeWindowInMin": 180,
"failedAttemptsPercent" : {
"turnOff" : 20,
"turnOn" : 30
},
"forced" : false
},
"user" : {
"ttlInSec": 3600,
"failedAttempts" : {
"turnOn" : 5
}
}
}
}
В случае использования в качестве CAPTCHA сервиса Google reCAPTCHA v3 необходимо:
задать следующие настройки в
blitz.prod.local.idp.captcha
:
"captcha" : {
"reCAPTCHAv3" : {
"operations" : [
{
"call" : {
"headers" : [],
"method" : "post",
"url" : "https://www.google.com/recaptcha/api/siteverify?secret=${cfg.secret}&response=${ocp.response}"
},
"check" : {
"errRegExp" : {},
"okRegExp" : {
"score" : "1\\.0|0\\.(5|6|7|8|9)",
"success" : "true"
}
},
"name" : "verify"
}
],
"plainParams" : {
"sitekey" : "SITE_KEY"
},
"secureParams" : {
"secret" : "SITE_SECRET"
}
}
}
Вместо SITE_KEY
и SITE_SECRET
нужно заполнить значения, полученные при регистрации Google reCAPTCHA v3 на сайте https://g.co/recaptcha/v3
. Также нужно скорректировать значение в параметре score
– установить требуемый порог успешного прохождения проверки (в примере выставлен порог не ниже 0,5).
задать следующие настройки в
blitz.prod.local.idp.password.captcha
:
"captcha" : {
"mode" : {
"_name" : "X-Captcha-Check",
"_value" : "true",
"_type" : "on_header",
"type" : "always_on"
},
"enabled" : true,
"initJs" : "require(['/blitz/assets/blitz-common/javascripts/recaptcha_v3.js', 'captcha-conf'], function(captcha, conf){ captcha(conf);});",
"name" : "reCAPTCHAv3"
}
Для добавления CAPTCHA на страницу подтверждения привязки учетной записи пользователя к учетной записи из внешнего поставщика идентификации необходимо задать следующие настройки в blitz.prod.local.idp.externalIdps.captcha
:
"captcha" : {
"mode" : {
"_name" : "X-Captcha-Check",
"_value" : "true",
"_type" : "on_header",
"type" : "always_on"
},
"enabled" : true,
"initJs" : "require(['/blitz/assets/blitz-common/javascripts/recaptcha_v3.js', 'captcha-conf'], function(captcha, conf){ captcha(conf);});",
"name" : "reCAPTCHAv3"
}
Для добавления CAPTCHA на страницу регистрации пользователей необходимо задать следующие настройки в blitz.prod.local.idp.provisioning.registration.captcha
:
"captcha" : {
"mode" : {
"_name" : "X-Captcha-Check",
"_value" : "true",
"_type" : "on_header",
"type" : "always_on"
},
"enabled" : true,
"initJs" : "require(['/blitz/assets/blitz-common/javascripts/recaptcha_v3.js', 'captcha-conf'], function(captcha, conf){ captcha(conf);});",
"name" : "reCAPTCHAv3"
}
Для добавления CAPTCHA на страницу восстановления пароля необходимо задать следующие настройки в blitz.prod.local.idp.provisioning.recovery.captcha
:
"captcha" : {
"mode" : {
"_name" : "X-Captcha-Check",
"_value" : "true",
"_type" : "on_header",
"type" : "always_on"
},
"enabled" : true,
"initJs" : "require(['/blitz/assets/blitz-common/javascripts/recaptcha_v3.js', 'captcha-conf'], function(captcha, conf){ captcha(conf);});",
"name" : "reCAPTCHAv3"
}