QA-02: echter End-to-End-Testlauf ueber TEN-01..07/IAM-01..14
Volle Merge-Verifikation aller 21 Vorbedingungs-Tickets: neue internal/e2e-Tests (Tenant-Onboarding-Login-Flow, Cross-Tenant-Isolation) gegen echte Postgres-Instanz, docs/QA-02-PRUEFPROTOKOLL.md mit Ticket-zu-Test-Zuordnung. Dabei echten Merge-Konflikt zwischen IAM-12 und IAM-13 gefunden und behoben (jwk/jwkSet-Typkollision in internal/oidc). 124/124 Tests gruen auf 131.
This commit is contained in:
@@ -206,14 +206,19 @@ func (h *Handler) issueIDToken(data AuthCodeData) (string, error) {
|
||||
return token.SignedString(key.Private)
|
||||
}
|
||||
|
||||
// jwk / jwkSet folgen RFC 8037 (Ed25519 als OKP-Schluesseltyp) — im
|
||||
// idpJWK / idpJWKSet folgen RFC 8037 (Ed25519 als OKP-Schluesseltyp) — im
|
||||
// Unterschied zu moduletrust.ServeJWKS (internes, vereinfachtes Format fuer
|
||||
// Modul-zu-Modul-Kommunikation) muss dieser Endpunkt von generischen,
|
||||
// standardkonformen OIDC-Client-Bibliotheken Dritter lesbar sein
|
||||
// (Akzeptanzkriterium 3). Beide Endpunkte liefern dieselben Schluessel aus
|
||||
// demselben KeyManager — kein zweites Schluesselsystem, nur ein zweites,
|
||||
// spezifikationskonformes Format desselben Materials.
|
||||
type jwk struct {
|
||||
//
|
||||
// Eigener Typname (statt jwk/jwkSet wie in jwks.go), da jwks.go das RSA-
|
||||
// basierte JWKS-Format fuer die Verifikation EXTERNER OIDC-Provider
|
||||
// implementiert (IAM-12) — dieser Typ hier ist Core als eigener IdP
|
||||
// (IAM-13, Ed25519/OKP) und darf nicht verwechselt werden.
|
||||
type idpJWK struct {
|
||||
Kty string `json:"kty"`
|
||||
Crv string `json:"crv"`
|
||||
Kid string `json:"kid"`
|
||||
@@ -222,15 +227,15 @@ type jwk struct {
|
||||
Alg string `json:"alg"`
|
||||
}
|
||||
|
||||
type jwkSet struct {
|
||||
Keys []jwk `json:"keys"`
|
||||
type idpJWKSet struct {
|
||||
Keys []idpJWK `json:"keys"`
|
||||
}
|
||||
|
||||
func (h *Handler) JWKS(w http.ResponseWriter, r *http.Request) {
|
||||
set := h.keys.PublicKeySet()
|
||||
resp := jwkSet{Keys: make([]jwk, 0, len(set))}
|
||||
resp := idpJWKSet{Keys: make([]idpJWK, 0, len(set))}
|
||||
for kid, pub := range set {
|
||||
resp.Keys = append(resp.Keys, jwk{
|
||||
resp.Keys = append(resp.Keys, idpJWK{
|
||||
Kty: "OKP",
|
||||
Crv: "Ed25519",
|
||||
Kid: kid,
|
||||
|
||||
Reference in New Issue
Block a user