Chapter 15Lesson 03~170 minutes

Web Services, SOAP, Authentication, Tokens, and Session Workflows: Configuration, Design Patterns, and Trade-Offs

Authentication strategy determines which systems and code paths the test measures. A protected-service capacity test may intentionally exclude password login, while a user-journey test may include it. The test must name the identity population, token lifetime, refresh policy, and result population explicitly.

Auth strategyIdentity populationToken TTLXML validationCI safety

Learning objectives

  • Choose pre-generated tokens or login-in-test from the measurement objective.
  • Choose cookie session or bearer token handling from protocol semantics.
  • Choose per-thread credentials or a pooled/shared identity based on real concurrency.
  • Choose XML/XPath2 semantic checks over brittle text matching when structure matters.
  • Design refresh/expiry coverage relative to test duration.
  • Keep JMeter, JVM/TLS, OS/network, SUT/IdP, CI/container, and plugin layers distinct.

1. Mandatory path remains local and synthetic

All runnable comparisons stay on http://127.0.0.1:8000, ≤2 threads, one journey per thread. Paid identity providers, corporate SSO, public SOAP services, cloud load platforms, Kubernetes, remote RMI, and real credentials are not required.

2. Pre-generated tokens versus login-in-test

Pre-generated/seeded token Login inside test
Keeps password verification/token minting out of measured business operations. Measures identity bootstrap as part of the user journey.
Useful for protected-service capacity/regression where auth server is not under test. Useful when login latency/capacity is itself a release concern.
Token TTL must exceed test or refresh must be modeled. Can naturally obtain fresh per-user sessions.
Requires secure provisioning and per-user ownership. Can hammer IdP/account protections if placed too frequently.

Never commit real pre-generated tokens into JMX/CSV. The mandatory lab avoids this governance burden with fake login-in-test.

4. Per-thread login versus pooled credentials

Model Use when Risk
One account per thread Production users have independent identities/sessions. Needs enough credential rows.
Shared service account/token Real workload truly uses one service identity. Shared rate/session limits become intentional workload behavior.
Credential pool Users can lease identities and reuse is allowed. Allocation/return logic adds generator complexity.
Same account for everyone accidentally Never as default. Artificial lockouts, invalidation, serialization, rate limiting.

5. SOAP/XML assertions versus text matching

SOAP namespace prefixes and whitespace can change without changing meaning. XML Assertion checks well-formedness; XPath2 checks structural/business invariants. A literal text substring tied to prefix/formatting is more brittle.

6. XPath2 versus legacy XPath

Current JMeter guidance recommends XPath2 for new extraction because of better/easier namespace management, better performance, and XPath 2.0 support. XPath2 Assertion also accepts explicit namespace aliases.

Keep selectors narrow: many checks over large envelopes can become generator cost.

7. Refresh behavior versus fixed duration

A 10-minute test with a 60-minute token TTL never exercises refresh. That is valid for steady-state protected traffic if refresh is out of scope, but invalid if refresh reliability/capacity is a release requirement.

  • Use natural TTL in a dedicated authorized environment when duration is acceptable.
  • Use a short-TTL test tenant/fixture.
  • Use deterministic expiry/use budget for local learning.

Do not modify production TTL or insert arbitrary long sleeps merely to force refresh.

8. Identity arrival rate differs from business request rate

If 100 sessions/minute produce 2,000 protected operations/minute, login and protected traffic are distinct workload populations. Avoid tying them 1:1 through an accidental outer/inner loop structure.

9. Logout and cleanup policy

Logout can be measured business behavior or cleanup. The course makes it explicit so active_sessions=0 can verify no local sessions remain after the test.

10. Result-retention choices

Keep status/timing/assertion fields. Keep raw request headers, response headers, sampler data, and response bodies disabled for load because authentication artifacts can contain bearer tokens, refresh tokens, cookies, or passwords.

11. HTTPS/TLS configuration

For authorized HTTPS, configure a valid JVM/JMeter truststore and compatible TLS protocols. Do not weaken certificate verification or JVM algorithm constraints. SSL/TLS session behavior is transport state and should not be confused with application token/session lifetime.

12. HTTP Authorization Manager choice

Use it for server Basic/Digest/Kerberos authentication. Current support depends on HTTP implementation: Java supports Basic; HttpClient4 supports Basic, Digest, and Kerberos. Use variables for per-thread identities.

Do not use it as a substitute for an application token endpoint.

13. Configuration-layer boundaries

Layer Examples Not a substitute for
JMeter plan Cookie/Header/Auth managers, extractors/assertions IdP token TTL/rate policy.
Java/JVM/TLS truststore, protocols, heap/GC Fixing shared-token scope.
OS/network DNS, sockets, firewalls Application session correctness.
SUT/IdP password hashing, token minting, refresh validation, rate limits JMeter pacing/data ownership.
Plugin/driver None required Core HTTP/XML/JSON components suffice.
CI/container secret injection, runner CPU, mounted test data Authorization and safe credential lifecycle.

14. Worked scenario

Requirement: gate protected order-service latency under 500 established sessions, but separately ensure login/refresh works.

  • Capacity profile: establish authorized sessions before the timed protected-operation population.
  • Auth sanity profile: low-concurrency login → protected call → expiry → refresh → protected call → logout.
  • Report identity and order-service metrics separately.

15. Decision table

Requirement Preferred approach Reason
Protected API capacity Pre-established/per-user tokens or setup login outside timed work Avoid accidental IdP dominance.
Login capacity Login-in-test with authorized synthetic identities Identity path is measured.
Cookie session HTTP Cookie Manager per thread Matches server cookie semantics.
Bearer service Thread-local token + scoped Authorization Per-user identity.
SOAP semantics XML Assertion + XPath2 Namespace-aware business validation.
Refresh must be covered Natural/test TTL or deterministic expiry Guarantees refresh opportunity.

16. Evidence contract

Preserve raw JTL + matching jmeter.log, exact JMX/settings, fake credential-source schema, redacted target events, active-session counts, configured versus achieved login/protected/refresh counts, generator CPU/memory, and target/IdP telemetry when applicable.

Knowledge check

When are pre-generated tokens preferable?

When can a shared token be valid?

Why prefer XPath2 for SOAP fields?

Why might a 10-minute test miss refresh?

What must CI auth artifacts avoid retaining?

Next lesson

Diagnose identity failures without weakening security

Lesson 4 engineers embedded credentials, shared tokens, login amplification, expiry blindness, SOAP scope errors, and unsafe logging.

Official references and version notes

  • Component Reference — HTTP Request, HTTP Cookie Manager, HTTP Authorization Manager, Header Manager, JSON JMESPath Extractor/Assertion, XML Assertion, XPath2 Extractor/Assertion, and result-scope semantics.
  • Elements of a Test Plan — execution/scope and thread-local variable behavior.
  • Getting Started — Java requirements, TLS/runtime basics, and GUI-versus-CLI guidance.
  • Properties Reference — CSV result defaults, request/response header/body retention, TLS defaults, and HTTP client settings.
  • Generating Dashboard Report — required result fields and dashboard interpretation.
  • Best Practices — non-GUI load execution, listener restraint, and injector validity.
  • Apache JMeter downloads — current stable release and Java requirement.
Version and compatibility note

Version-sensitive statements were rechecked against current Apache JMeter primary documentation on 2026-09-05. The course baseline remains Apache JMeter 5.6.3 with a Java 17 JDK for labs and no third-party plugins; JMeter 5.6.3 requires Java 8+. HTTP Cookie Manager keeps a separate server-cookie storage area for each JMeter thread. HTTP Authorization Manager is intended for server authentication such as Basic/Digest/Kerberos challenge workflows; it is not the same thing as an application JSON login that issues bearer/refresh tokens. Passwords entered directly into Authorization Manager are stored unencrypted in the test plan, so this chapter uses synthetic CSV credentials and never embeds real secrets in JMX. XML Assertion checks only that response data is a formally correct XML document. Namespace-aware business checks use XPath2 Assertion/Extractor. The default HTTP sampler is HttpClient4, and JMeter's HTTPS protocol default is TLS; do not weaken JVM certificate algorithm constraints or trust verification to make an authorized environment pass. CSV result defaults keep sampler data, request headers, response headers, and response bodies out of the retained result file, while assertion failure messages remain enabled.

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0 Send only Ethereum/ERC-20 compatible assets to this address.