From 0aee1d831c475351bc82fe513621118b8ec2c436 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Mon, 14 Apr 2025 16:58:09 +0200 Subject: [PATCH] Add missing null-checks to IdentityProviderResource Fixes #38938 Signed-off-by: Thomas Darimont --- .../resources/admin/IdentityProviderResource.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java b/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java index 51852202f6c5..1333a69c179b 100644 --- a/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java @@ -444,6 +444,10 @@ public ManagementPermissionReference getManagementPermissions() { ProfileHelper.requireFeature(Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ); this.auth.realm().requireViewIdentityProviders(); + if (identityProviderModel == null) { + throw new jakarta.ws.rs.NotFoundException(); + } + AdminPermissionManagement permissions = AdminPermissions.management(session, realm); if (!permissions.idps().isPermissionsEnabled(identityProviderModel)) { return new ManagementPermissionReference(); @@ -477,6 +481,11 @@ public ManagementPermissionReference setManagementPermissionsEnabled(ManagementP ProfileHelper.requireFeature(Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ); this.auth.realm().requireManageIdentityProviders(); AdminPermissionManagement permissions = AdminPermissions.management(session, realm); + + if (identityProviderModel == null) { + throw new jakarta.ws.rs.NotFoundException(); + } + permissions.idps().setPermissionsEnabled(identityProviderModel, ref.isEnabled()); if (ref.isEnabled()) { return toMgmtRef(identityProviderModel, permissions); @@ -493,6 +502,11 @@ public ManagementPermissionReference setManagementPermissionsEnabled(ManagementP @Operation(summary = "Reaload keys for the identity provider if the provider supports it, \"true\" is returned if reload was performed, \"false\" if not.") public boolean reloadKeys() { this.auth.realm().requireManageIdentityProviders(); + + if (identityProviderModel == null) { + throw new jakarta.ws.rs.NotFoundException(); + } + IdentityProvider provider = IdentityBrokerService.getIdentityProvider(session, identityProviderModel.getAlias()); return provider.reloadKeys(); }