From fb26284c00e09e656732eb7ca4570afd052e0067 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Fri, 21 Jun 2024 11:47:01 +0000 Subject: [PATCH] Improve error reporting in CAS ticket validation --- src/main/java/org/keycloak/protocol/cas/installation/KeycloakCASClientInstallation.java | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/keycloak/protocol/cas/installation/KeycloakCASClientInstallation.java b/src/main/java/org/keycloak/protocol/cas/installation/KeycloakCASClientInstallation.java index eb0785d..1a99abf 100644 --- a/src/main/java/org/keycloak/protocol/cas/installation/KeycloakCASClientInstallation.java +++ b/src/main/java/org/keycloak/protocol/cas/installation/KeycloakCASClientInstallation.java @@ -1,5 +1,8 @@ package org.keycloak.protocol.cas.installation; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriBuilder; import org.keycloak.Config; import org.keycloak.models.ClientModel; import org.keycloak.models.KeycloakSession; @@ -7,16 +10,21 @@ import org.keycloak.models.RealmModel; import org.keycloak.protocol.ClientInstallationProvider; import org.keycloak.protocol.cas.CASLoginProtocol; +import org.keycloak.services.resources.RealmsResource; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import java.net.URI; public class KeycloakCASClientInstallation implements ClientInstallationProvider { @Override public Response generateInstallation(KeycloakSession session, RealmModel realm, ClientModel client, URI baseUri) { - return Response.ok("{}", MediaType.TEXT_PLAIN_TYPE).build(); + UriBuilder bindingUrlBuilder = UriBuilder.fromUri(baseUri); + String bindingUrl = RealmsResource.protocolUrl(bindingUrlBuilder) + .build(realm.getName(), CASLoginProtocol.LOGIN_PROTOCOL).toString(); + String description = "CAS Server URL: " + bindingUrl + "\n" + + "CAS Protocol: CAS 2.0/3.0, SAML 1.1\n" + + "Use CAS REST API: false (unsupported)"; + return Response.ok(description, MediaType.TEXT_PLAIN_TYPE).build(); } @Override @@ -26,12 +34,12 @@ @Override public String getDisplayType() { - return "Keycloak CAS JSON"; + return "Plain CAS configuration"; } @Override public String getHelpText() { - return "keycloak.json file used by the Keycloak CAS client adapter to configure clients. This must be saved to a keycloak.json file and put in your WEB-INF directory of your WAR file. You may also want to tweak this file after you download it."; + return "CAS configuration properties required by CAS clients. Enter the values shown below into the configuration dialog of your client SP."; } @Override @@ -56,7 +64,7 @@ @Override public String getId() { - return "keycloak-cas-keycloak-json"; + return "keycloak-cas-text"; } @Override @@ -66,12 +74,12 @@ @Override public String getFilename() { - return "keycloak.json"; + return "keycloak-cas.txt"; } @Override public String getMediaType() { - return MediaType.APPLICATION_JSON; + return MediaType.TEXT_PLAIN; } } -- Gitblit v1.9.1