Вход по системе SSO с использованием scala-скрипта

Я записал сценарий scala с использованием gatling, где он также записывает «opentoken» в файл scala. Этот файл scala отлично работает в случае одного пользователя, где, как если бы он не увеличивал количество пользователей, он не записывает из-за токена SSo, поэтому есть ли способ, с помощью которого мы можем сгенерировать токен sso для файла scala для входа в систему.
Итак, как можно динамически генерировать opentoke для файла ниже scala?

import scala.concurrent.duration._

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._

class RecLoginLogoutP extends Simulation {

    val httpProtocol = http
        .baseURL("https://mywebsite.com")
        .inferHtmlResources(BlackList(""".*\.css.*|.*\.js.*|.*\.png.*|.*\.gif.*|.*\.jpeg.*|.*\.ico.*"""), WhiteList())
        .acceptHeader("""text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""")
        .acceptEncodingHeader("""gzip, deflate""")
        .acceptLanguageHeader("""en-US,en;q=0.5""")
        .connection("""keep-alive""")
        .contentTypeHeader("""application/ocsp-request""")
        .userAgentHeader("""Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0""")



    val uri1 = """http://somewebsite.com/gsalphasha2g2"""
    val uri2 = """https://mywebsite.com:443"""
    val uri3 = """sso-mywebsite.com"""
    val uri4 = """www.mywebsite.com"""
    val uri5 = """cloudsso-test.mywebsite.com"""

    val scn = scenario("RecLoginLogoutP")
        .exec(http("request_0")
            .get("""/"""))
        .pause(1)
        .exec(http("request_1")
            .post(uri1 + """""")
            .body(RawFileBody("RecLoginLogoutP_request_0001.txt"))
            .resources(http("request_2")
            .post(uri1 + """""")
            .body(RawFileBody("RecLoginLogoutP_request_0002.txt"))))
        .pause(1)
        .exec(http("request_3")
            .get("""/sp/startSSO.ping?PartnerIdpId=cloudsso-test.mywebsite.com&TargetResource=https://mywebsite.com/"""))
        .pause(24)
        .exec(http("request_4")
            .post("https://" + uri3 + """:443/autho/login/loginaction.html""")
            .formParam("""userid""", """userName""")
            .formParam("""password""", """password""")
            .formParam("""target""", """""")
            .formParam("""smauthreason""", """""")
            .formParam("""smquerydata""", """""")
            .formParam("""smagentname""", """""")
            .formParam("""postpreservationdata""", """""")
            .formParam("""SMENC""", """""")
            .formParam("""SMLOCALE""", """"""))
        .pause(2)
        .exec(http("request_5")
            .get("https://" + uri5 + """:443/idp/Y61KXp/SSOServer.ping""")
            .resources(http("request_6")
            .post(uri2 + """/""")
            **.formParam("""opentoken""", """YKHHMSLKKSJHHFHFHFH-9fdfdjkhhjkfkdshfjdshjnythkkdjfdfdfdfdffdfdfd**""")))**
        .pause(105)
        // logout
        .exec(http("request_7")
            .get("""/c/portal/logout""")
            .resources(http("request_8")
            .get(uri2 + """/sp/startSSO.ping?PartnerIdpId=cloudsso-test.mywebsite.com&TargetResource=https://mywebsite.com/""")))
        .pause(12)
        .exec(http("request_9")
            .get("https://" + uri4 + """:443/autho/sclnup.html"""))

    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

person Kundan Atre    schedule 24.11.2014    source источник


Ответы (1)


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

P.S. При использовании Gatling я вообще не использую opentoken для входа в систему. Но, насколько я знаю, вы можете получить этот токен из ответа на предыдущий запрос -> сохранить его в корреляционном имени -> использовать его как параметры.

person levo4ka    schedule 15.12.2014