One of the most impactful (and often underestimated) differences between JBoss EAP 7.4 and JBoss EAP 8 is how credentials are handled.
This is not just a documentation tweak or a recommendation shift. It is a hard security enforcement change driven by modern platform standards and compliance expectations from Red Hat.
If you remember only one thing from this article, remember this:
- JBoss EAP 7.4 allows credentials to be defined in multiple ways, including clear text.
- JBoss EAP 8 forces the use of Credential Stores for sensitive resources such as datasources.
JBoss EAP 7.4: Credential Stores were OPTIONAL
In EAP 7.4, Elytron credential stores were already available and recommended, but not enforced.
All of the following were valid and supported:
- Clear-text passwords in standalone.xml
- Encrypted expressions
- Elytron credential-store
- Legacy vault-based approaches (deprecated, but still functional)
A datasource like this was perfectly valid in 7.4:
<datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS">
<connection-url>jdbc:postgresql://db:5432/app</connection-url>
<user-name>app</user-name>
<password>secret123</password>
</datasource>
JBoss EAP 8: Credential Stores are EFFECTIVELY MANDATORY
With JBoss EAP 8, Red Hat made a clear and intentional decision, sensitive credentials must no longer be stored directly in configuration files.
What changed in practice:
- The element for datasources is no longer the supported approach
- Datasources are expected to use credential-reference
- Elytron is no longer just the default security framework, it is the only one
A valid datasource configuration in EAP 8 looks like this:
<datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS">
<connection-url>jdbc:postgresql://db:5432/app</connection-url>
<user-name>app</user-name>
<credential-reference store="cs-db" alias="db-password"/>
</datasource>
Why this enforcement exists in EAP 8
This change is not accidental or cosmetic. It aligns EAP with:
- OpenShift and container-native security expectations
- Compliance-driven environments (CIS, ISO, regulated industries)
- Modern “secrets management” practices
“Forced” does not mean “hard”
A common fear when moving to EAP 8 is: “Now everything is complicated” because of security!
In reality, the operational model becomes cleaner and more consistent.
Typical pattern:
- Create one credential store
- Add secrets once
- Reference them everywhere
CLI example:
/subsystem=elytron/credential-store=cs-db:add(
path=cs-db.jceks,
relative-to=jboss.server.config.dir,
credential-reference={clear-text=changeit}
)
/subsystem=elytron/credential-store=cs-db:add-alias(
alias=db-password,
secret-value=secret123
)
From that point on:
- No passwords in XML
- No passwords in Git
- No accidental leaks
Migration impact: where most upgrades fail
When upgrading from EAP 7.4 to EAP 8, you must:
- Identify all clear-text credentials
- Move them into credential stores
- Replace <password> with <credential-reference>
This step is mandatory in EAP 8.
Good news:
- If you already used credential stores in 7.4: migration is straightforward
- If you didn’t: EAP 8 forces a long-overdue cleanup 😉
If you’re planning a move to JBoss EAP 8, I can help you get there safely.
From credential-store migration to full security hardening, I support organizations in turning a mandatory change into a controlled, successful upgrade.