KeycloakClient strips realm path when realm URL lacks trailing slash
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 88/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- go
- Bereich
- authentication
Rechercherichtung
Beginne mit pkg/connectors/keycloak_client.go, insbesondere mit NewKeycloakClientWithContext, und prüfe anschließend pkg/connectors/keycloak_client_test.go. Führe die Connector-Tests aus und überprüfe, dass eine Realm-URL ohne abschließenden Schrägstrich ihren Realm-Pfad in Token- und OIDC-Konfigurationsanfragen beibehält; die Arbeit ist abgeschlossen, wenn der Regressionstest für diese Eingabe besteht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
When initializing a KeycloakClient using connectors.NewKeycloakClient or connectors.NewKeycloakClientWithContext, if the provided realmURL does not include a trailing slash (e.g., http://keycloak.example.com/realms/microcks), subsequent requests to obtain tokens or fetch OIDC configuration fail with HTTP 404.
This happens because relative endpoints (protocol/openid-connect/token and .well-known/openid-configuration) are resolved against kc.BaseURL using c.BaseURL.ResolveReference(rel).
Under RFC 3986 relative URL resolution rules, resolving a relative path against a base URL without a trailing slash strips the final path segment (microcks).
As a result, the request resolves to:
http://keycloak.example.com/realms/protocol/openid-connect/token
instead of:
http://keycloak.example.com/realms/microcks/protocol/openid-connect/token
In comparison, MicrocksClient in pkg/connectors/microcks_client.go defensively normalizes its incoming base URL, but KeycloakClient does not.
Expected behavior
NewKeycloakClient and NewKeycloakClientWithContext should ensure that kc.BaseURL.Path ends with a trailing /, so relative endpoints always resolve under the specified realm.
For example:
http://keycloak.example.com/realms/microcks/protocol/openid-connect/token
This should work regardless of whether the input URL includes a trailing slash.
Actual behavior
The realm name is stripped from the URL path.
- Configured URL:
http://keycloak.example.com/realms/microcks - Resolved Token URL:
http://keycloak.example.com/realms/protocol/openid-connect/token(HTTP 404)
How to Reproduce?
-
Initialize a
KeycloakClientwith a realm URL that omits the trailing slash:kc, err := connectors.NewKeycloakClientWithContext( context.Background(), "http://keycloak.example.com/realms/microcks", "client-id", "client-secret", ) -
Call
kc.ConnectAndGetToken()orkc.GetOIDCConfig(). -
Inspect the resolved request URL. The realm segment
/microckswill be stripped from the path.
Microcks version or git rev
master
Install method (docker-compose, helm chart, operator, docker-desktop extension,...)
No response
Additional information
This can be addressed in pkg/connectors/keycloak_client.go, inside NewKeycloakClientWithContext, by ensuring that the URL path always ends with a trailing slash:
if !strings.HasSuffix(u.Path, "/") {
u.Path += "/"
}
Along with a unit test in pkg/connectors/keycloak_client_test.go covering a realm URL with a subpath.
- Vorherrschende Sprache
- Go
- Sterne
- 59
- Forks
- 74
- Ø Merge
- 4 T. 5 Std.
- Gemergte PRs (30 T.)
- 15
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microcks/microcks-cli
-
Malformed local configuration is silently accepted and can be overwrittenEvtl. vergeben @aniket866 hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
microcks/microcks-cli#615 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
microcks/microcks-cli#610 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug: microcks test get swallows test failure details and operation results in text output modeOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
microcks/microcks-cli#608 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Windows test failures in MockFileSystem.Walk due to path separatorEvtl. vergeben @dipak0000812 hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
microcks/microcks-cli#601 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Bug: `testEndpoint` URL Scheme Not ValidatedEvtl. vergeben @aniket866 hat das vor 1 Tag übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
microcks/microcks-cli#598 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in microcks/microcks-cli
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement tariffs
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
evcc-io/evcc#35698 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag