Giriş
Şu satırı dahil ederiz
Şu satırı dahil ederiz
import org.springframework.security.config.annotation.web.configurers.oauth2.client
.OAuth2LoginConfigurer;
OAuth2 sunucusuna bağlantı kurarak authentication (doğrulama) yapar. OAuth2 ilk çıktığında authorization (yetkilendirme) için kullanılıyordu. Daha sonra authentication (doğrulama) için de kullanılmaya başlandı.
Yani Facebook, Google gibi OAuth2 doğrulaması yapan sunucuları client olarak kullanabilmeyi sağlar.
Açıklaması şöyle
http.oauth2Login() is used for Authenticating users using OpenID Connect. For example, it would be used as an alternative to formLogin().
Open ID ve OAuth2 Farkı
Bazı farklar şöyle
1. it introduces a completely new token (id_token) with radically different semantics than the OAuth 2.0 access_token and a standardized format that is understood by the Client as opposed to the access_token which is opaque to the Client2. it "twists" the role of the Client, now becoming the "audience" (or: intended recipient) of a token (i.e. the id_token) whilst the audience of the access_token is still a remote entity (aka. Resource Server) and the Client is only the "presenter" of the latterThe 2nd item is the primary source of confusion between OAuth 2.0 and OpenID Connect.
Maven
Şu satırı dahil ederiz
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId><version>2.3.3.RELEASE</version></dependency>
application.properties Ayarları
SpringBoot github, facebook, google gibi OAuth2 sağlayıcıları için sadece application.properties dosyasına bazı ayarların girilmesi durumunda kolayca çalışıyor. SpringSecurity OAuth2 Login application.properties Ayarları yazısına bakabilirsiniz.
Örnek - Yeni
Şöyle yaparız
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity security) throws Exception {
return security
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth->auth.anyRequest().authenticated())
.oauth2Login(Customizer.withDefaults()).build();
}
}
Örnek - Eski
Şöyle yaparız.
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http...
.oauth2Login()
...
}
}
Açıklaması şöyle. Yani diğer authentication login yöntemleri gibidir.Here, we can see the oauth2Login() element is used in a similar manner to already known httpBasic() and formLogin() elements.
Örnek
Şöyle yaparız
@Overridepublic void configure(final HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/", "/login**", "/oauth2/authorization/**").permitAll().anyRequest().authenticated().and().oauth2Login();}
Açıklaması şöyle
In the configure method we are using antMatchers to allow (or later reject) access to certain endpoints. Like in the snippet above, “/”, “/login**”, “/oauth2/authorization/**” are allowed without any authentication. It is essential to give access to the “oauth2” path, otherwise your app will run into an endless loop of security checks.
Örnek
Şöyle yaparız. authenticated() olarak işaretli herhangi bir sayfaya istek gelirse, application.properties içinde tanımlı ne varsa (google, facebook, github vs) login için o sayfaya yönlendirir.
@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {@Overridepublic void configure(HttpSecurity httpSecurity) throws Exception {httpSecurity.csrf().disable().antMatcher("/**").authorizeRequests().antMatchers("/", "/index.html").authenticated().anyRequest().authenticated().and().oauth2Login().permitAll().and().logout().logoutSuccessUrl("/");}}
loginPage metodu
Örnek ver
defaultSuccessUrl metodu
Örnek ver
failureUrl metodu
Örnek ver
successHandler metodu
Örnek ver
Hiç yorum yok:
Yorum Gönder