diff --git a/oidc/src/main/java/de/bstly/we/oidc/controller/OidcDiscoveryController.java b/oidc/src/main/java/de/bstly/we/oidc/controller/OidcDiscoveryController.java index 10943be..52b9a14 100644 --- a/oidc/src/main/java/de/bstly/we/oidc/controller/OidcDiscoveryController.java +++ b/oidc/src/main/java/de/bstly/we/oidc/controller/OidcDiscoveryController.java @@ -16,9 +16,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.google.common.collect.Sets; +import com.nimbusds.jose.JWSAlgorithm; import de.bstly.we.controller.support.EntityResponseStatusException; +import de.bstly.we.jwt.businesslogic.JwtKeyManager; +import de.bstly.we.jwt.model.JwtKey; import de.bstly.we.oidc.businesslogic.OidcClientManager; +import de.bstly.we.oidc.businesslogic.OidcTokenManager; import de.bstly.we.oidc.controller.model.OidcConfiguration; /** @@ -30,6 +34,8 @@ public class OidcDiscoveryController { @Autowired private OidcClientManager oidcClientManager; + @Autowired + private JwtKeyManager jwtKeyManager; /** * Gets the configuration. @@ -43,6 +49,8 @@ public class OidcDiscoveryController { OidcConfiguration config = new OidcConfiguration(); String issuer = oidcClientManager.getIssuer(request); + JwtKey jwtKey = jwtKeyManager.getLatest(OidcTokenManager.OIDC_JWT_KEY_NAME, false); + JWSAlgorithm algorithm = jwtKeyManager.getJwsAlgorithm(jwtKey); config.setIssuer(issuer); config.setScopes_supported(Sets.newHashSet("openid")); @@ -50,6 +58,7 @@ public class OidcDiscoveryController { config.setGrant_types_supported(Sets.newHashSet("authorization_code")); config.setToken_endpoint_auth_methods_supported(Sets.newHashSet("client_secret_post", "client_secret_basic")); config.setSubject_types_supported(Sets.newHashSet("public")); + config.setId_token_signing_alg_values_supported(Sets.newHashSet(algorithm.getName())); try { config.setAuthorization_endpoint(new URI(issuer + "/oidc/authorize")); diff --git a/oidc/src/main/java/de/bstly/we/oidc/controller/model/OidcConfiguration.java b/oidc/src/main/java/de/bstly/we/oidc/controller/model/OidcConfiguration.java index 7a2553c..819995a 100644 --- a/oidc/src/main/java/de/bstly/we/oidc/controller/model/OidcConfiguration.java +++ b/oidc/src/main/java/de/bstly/we/oidc/controller/model/OidcConfiguration.java @@ -21,6 +21,7 @@ public class OidcConfiguration { private Set subject_types_supported; private Set grant_types_supported; private Set token_endpoint_auth_methods_supported; + private Set id_token_signing_alg_values_supported; /** * Gets the issuer. @@ -203,4 +204,12 @@ public class OidcConfiguration { this.token_endpoint_auth_methods_supported = token_endpoint_auth_methods_supported; } + public Set getId_token_signing_alg_values_supported() { + return id_token_signing_alg_values_supported; + } + + public void setId_token_signing_alg_values_supported(Set id_token_signing_alg_values_supported) { + this.id_token_signing_alg_values_supported = id_token_signing_alg_values_supported; + } + } diff --git a/pom.xml b/pom.xml index de9bf75..68bb397 100755 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 17 5.0.0 9.37.3 - 3.0.6-SNAPSHOT + 3.0.7-SNAPSHOT