Spring Boot: přihlášení OpenID Connect se Spring Security
Přihlášení přes Dazr Identity: bezplatné OpenID Connect hostované v EU, s passkeys, kódy e-mailem a účty Google nebo Microsoft pod jedním tlačítkem.
Potřebujete tři hodnoty z vývojářské konzole: ID klienta, tajný klíč klienta (jen u webových serverových aplikací) a URI přesměrování, které jste zaregistrovali. Vše ostatní je v dokumentu discovery na adrese https://identity.dazr.eu/.well-known/openid-configuration.
Spring Boot (Spring Security)
Přihlášení OAuth 2.0 ve Spring Security (Spring Boot 3, spring-boot-starter-oauth2-client) čte discovery dokument. Dva doplňky: Spring ve výchozím stavu očekává ID tokeny RS256, takže mu dejte decoder factory pro ES256, a PKCE posílá jen pro veřejné klienty, takže PKCE zapněte pro svou serverovou aplikaci. Zaregistrujte URI přesměrování https://app.example.eu/login/oauth2/code/dazr.
# application.yml
spring:
security:
oauth2:
client:
registration:
dazr:
provider: dazr
client-id: ${DAZR_CLIENT_ID}
client-secret: ${DAZR_CLIENT_SECRET}
client-authentication-method: client_secret_basic
authorization-grant-type: authorization_code
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
scope: openid,profile,email
provider:
dazr:
issuer-uri: https://identity.dazr.eu
user-name-attribute: sub
// SecurityConfig.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.client.oidc.authentication.OidcIdTokenDecoderFactory;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizationRequestResolver;
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestCustomizers;
import org.springframework.security.oauth2.jose.jws.SignatureAlgorithm;
import org.springframework.security.oauth2.jwt.JwtDecoderFactory;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
SecurityFilterChain security(HttpSecurity http, ClientRegistrationRepository clients) throws Exception {
var resolver = new DefaultOAuth2AuthorizationRequestResolver(clients, "/oauth2/authorization");
resolver.setAuthorizationRequestCustomizer(OAuth2AuthorizationRequestCustomizers.withPkce());
http
.authorizeHttpRequests(a -> a.requestMatchers("/", "/error").permitAll().anyRequest().authenticated())
.oauth2Login(o -> o.authorizationEndpoint(e -> e.authorizationRequestResolver(resolver)));
return http.build();
}
// Dazr Identity signs ID tokens with ES256.
@Bean
JwtDecoderFactory<ClientRegistration> idTokenDecoderFactory() {
var factory = new OidcIdTokenDecoderFactory();
factory.setJwsAlgorithmResolver(registration -> SignatureAlgorithm.ES256);
return factory;
}
}
Přihlášení spusťte na /oauth2/authorization/dazr. V controlleru dá @AuthenticationPrincipal OidcUser user hodnotu user.getSubject(), tedy Dazr sub. Chcete-li přijímat přístupové tokeny Dazr v resource serveru, nastavte spring.security.oauth2.resourceserver.jwt.issuer-uri na https://identity.dazr.eu a jws-algorithms na ES256 a kontrolujte, že aud je vaše client ID.
sub je párový: stejný pro každou aplikaci vaší organizace, jiný pro každou jinou organizaci. Pro danou osobu se nikdy nemění, zatímco e-mailová adresa se změnit může. Ukládejte sub jako klíč účtu a email berte jako kontaktní údaj.
Další informace pro vývojáře
Dokumentace pro vývojářeVšechny průvodce integracíLibovolná knihovna OpenID ConnectCeny