Repository navigation
Mask secrets in client installations when view-only permissions are used - #53758
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Nested client-secret-jwt credentials remain exposed to view-only callers.
1 open finding
What changed in this PR
Adds permission-aware secret masking to client installation configurations.
Changes:
- Propagates
includeSecretsthrough installation providers. - Masks OIDC secrets and stored SAML private keys for view-only callers.
- Adds regression tests and upgrade documentation.
| File | Description |
|---|---|
tests/base/src/test/java/org/keycloak/tests/client/AdapterInstallationConfigTest.java |
Tests registration endpoint masking. |
tests/base/src/test/java/org/keycloak/tests/admin/ClientSecretVisibilityTest.java |
Tests OIDC and SAML visibility. |
services/src/main/java/org/keycloak/services/resources/admin/ClientResource.java |
Derives secret access from management permission. |
services/src/main/java/org/keycloak/services/managers/ClientManager.java |
Applies permission-aware credential generation. |
services/src/main/java/org/keycloak/services/managers/ClientInstallationUtils.java |
Centralizes OIDC secret masking. |
services/src/main/java/org/keycloak/services/clientregistration/AdapterInstallationClientRegistrationProvider.java |
Masks view-only registration responses. |
services/src/main/java/org/keycloak/protocol/saml/installation/SamlSPDescriptorClientInstallation.java |
Adopts the provider signature. |
services/src/main/java/org/keycloak/protocol/saml/installation/ModAuthMellonClientInstallation.java |
Masks exported signing keys. |
services/src/main/java/org/keycloak/protocol/saml/installation/KeycloakSamlSubsystemInstallation.java |
Propagates secret visibility. |
services/src/main/java/org/keycloak/protocol/saml/installation/KeycloakSamlSubsystemCliInstallation.java |
Masks CLI private keys. |
services/src/main/java/org/keycloak/protocol/saml/installation/KeycloakSamlClientInstallation.java |
Masks XML private keys. |
services/src/main/java/org/keycloak/protocol/oidc/installation/KeycloakOIDCJbossSubsystemClientInstallation.java |
Applies OIDC masking to XML. |
services/src/main/java/org/keycloak/protocol/oidc/installation/KeycloakOIDCJbossSubsystemClientCliInstallation.java |
Applies OIDC masking to CLI output. |
services/src/main/java/org/keycloak/protocol/oidc/installation/KeycloakOIDCClientInstallation.java |
Applies masking to JSON output. |
services/src/main/java/org/keycloak/protocol/docker/installation/DockerVariableOverrideInstallationProvider.java |
Adopts the provider signature. |
services/src/main/java/org/keycloak/protocol/docker/installation/DockerRegistryConfigFileInstallationProvider.java |
Adopts the provider signature. |
services/src/main/java/org/keycloak/protocol/docker/installation/DockerComposeYamlInstallationProvider.java |
Adopts the provider signature. |
server-spi-private/src/main/java/org/keycloak/protocol/ClientInstallationProvider.java |
Adds the includeSecrets contract. |
docs/documentation/upgrading/topics/changes/changes-26_8_1.adoc |
Documents masking and API changes. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
0945e43 to
b9b47b6
Compare
b9b47b6 to
f9a3ca7
Compare
There was a problem hiding this comment.
@vmuzikar Thanks! I've added 2 minor comments inline.
Moreover, can you please double-check if we don't have some other "alternative" way how only guys with permissions to "view clients" can obtain client secrets? As otherwise, we would have another CVE report for the same thing soon :-) Feel free to use some AI tool or whatever. Please confirm if you already did this and that this point is fine now.
|
@mposolda Thanks for the review! I removed the Upgrading Guide note.
Yes, I poked around also with Fable 5.1, and even that thinks the fix is complete. Only thing I missed was a dead code that could reveal the secrets but it was not used and I removed it in the last commit. |
f9a3ca7 to
fbca6e7
Compare
f4e304f to
fd3623d
Compare
|
this issue is partially related to -> #49240 |
Yes but that's not for Client Installations. I'd tackle that in a separate PR. |
Closes keycloak#53751 Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>
Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>
Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>
fd3623d to
71a1f77
Compare
…sed (keycloak#53758) Closes keycloak#53751 Signed-off-by: Václav Muzikář <vmuzikar@ibm.com> (cherry picked from commit 32d8958) Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>
…sed (keycloak#53758) Closes keycloak#53751 Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>
…sed (keycloak#53758) Closes keycloak#53751 Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>


This also extends the masking to SAML private keys. Those are not persisted any more (see #49239) but existing clients still could contain those.
Closes #53751