#ssl #gatling #scala-gatling
#ssl #gatling #scala-gatling
Вопрос:
Как настроить Gatling на использование клиентских сертификатов для каждого виртуального пользователя?
Я готовлю симуляцию Gatling для API, который защищен клиентскими сертификатами, и в настоящее время мне удалось установить только один клиентский сертификат для всех симуляций в конфигурации Gatling
ssl {
keyStore {
#type = ""
file = "C:/client_certificates/00001.pfx"
password = "password"
#algorithm = ""
}
}
Однако я хотел бы иметь разные клиентские сертификаты для разных виртуальных пользователей (клиентские сертификаты можно выбирать случайным образом из списка доступных клиентских сертификатов или по кругу). В документации Galing упоминаются keymanagerfactory и perUserKeyManagerFactory
function, но без явных примеров их использования.
Комментарии:
1. Попробуйте
perUserKeyManagerFactory(userId => io.gatling.commons.util.Ssl.newTrustManagerFactory(None, f"C:/client_certificates/$userIdd.pfx", "password", None))
2. @George Leung,
newKeyManagerFactory
следует использовать вместоnewTrustManagerFactory
. В противном случае ваше решение работает! Не могли бы вы опубликовать ответ? Я приму это
Ответ №1:
Ссылки на ключи конфигурации, приведенные в вопросе io.gatling.core.ConfigKeys.ssl.keyStore
. Значения считываются и передаются Ssl.newKeyManagerFactory
для создания KeyManagerFactory
.
perUserKeyManagerFactory
принимает функцию Long => KeyManagerFactory
, которая создает KeyManagerFactory
идентификатор виртуального пользователя.
Зная, что мы можем написать следующее:
import io.gatling.commons.util.Ssl
...
.perUserKeyManagerFactory { userId =>
val fileName = f"C:/client_certificates/$userIdd.pfx"
Ssl.newKeyManagerFactory(None, fileName, "password", None)
}
С f
помощью интерполятора мы можем легко userId
дополнить нулями, чтобы получить 5 цифр.
Чтобы выбирать файлы по кругу, мы можем написать ${userId % totalNumber}
вместо $userId
.