Skip to content

Instantly share code, notes, and snippets.

@jesperronn
Last active September 20, 2024 11:04
Show Gist options
  • Save jesperronn/c998ff04dfe03defe86e4eda18709428 to your computer and use it in GitHub Desktop.
Save jesperronn/c998ff04dfe03defe86e4eda18709428 to your computer and use it in GitHub Desktop.
Spring boot 3.3 example for OIDC client registration, which does not require HTTP request to discovery endpoint during startup
@Configuration
@NoArgsConstructor
@AllArgsConstructor
public class OAuth2LoginConfig {
@Value("${system.oauth2.client.id}")
private String adminClientId;
@Value("${system.oauth2.client.secret}")
private String adminClientSecret;
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
var configurations = List.of(adminClientRegistration());
return new InMemoryClientRegistrationRepository(configurations);
}
private ClientRegistration adminClientRegistration() {
return ClientRegistration.withRegistrationId(ADMIN_CLIENT_ID)
.clientName(ADMIN_CLIENT_NAME)
.scope("openid")
.clientId(adminClientId)
.clientSecret(adminClientSecret)
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
.authorizationUri(adminClientUrl + "/protocol/openid-connect/auth")
.tokenUri(adminClientUrl + "/protocol/openid-connect/token")
.userInfoUri(adminClientUrl + "/protocol/openid-connect/userinfo")
.userNameAttributeName(IdTokenClaimNames.SUB)
.jwkSetUri(adminClientUrl + "/protocol/openid-connect/certs")
.providerConfigurationMetadata(
Map.of("end_session_endpoint", adminClientUrl + "/protocol/openid-connect/logout"))
.build();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment