21 Eylül 2020 Pazartesi

SpringSecurity OAuth2 @EnableAuthorizationServer Anotasyonu - Authorization Server Gerçekleştirimi

Giriş
Bu projeler maintenance moda alındılar. Dolayısıyla spring dokümantasyonunda 
"No Authorization Server Support" deniliyor. Yani gidin gerçek bir Authorization Server sağlayıcısı kullanın deniliyor.

Maven
Şu satırı dahil ederiz.  
- spring-boot-starter-web REST çağrılarına cevap vermek için lazım. 
- spring-security-jwt bir JWT token dönmek için lazım
- spring-security-oauth2-autoconfigure otomatik konfigürasyon için lazım
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-jwt</artifactId>
  <version>1.1.1.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework.security.oauth.boot</groupId>
  <artifactId>spring-security-oauth2-autoconfigure</artifactId>
  <version>2.4.0</version>
</dependency>
1. Basit Kullanım -  Client Credentials Grant
Client Credentials Grant (yani kullanıcı adı ve şifre ile token alma) için OAuth2 Grant Tipleri yazısına bakabilirsiniz.

Bu anotasyon şu adrese hizmet veriyor
localhost:8080/oauth/token?grant_type=client_credential&...
Postman ile token isterken şöyle yaparız
- Authorization sekmesinde Basic Auth seçilir. Username Password alanları doldurulur
- Body sekmesinde x-www-formurl-encoded seçilir. Key olarak grant_type ve Value olarak client_credentials seçilir
veya şöyle yaparız
- Authorization sekmesinde Basic Auth seçilir. Username Password alanları doldurulur
- URL olarak "localhost:8080/oauth/token?grant_type=client_credentials&scope=any" kullanılır
Basit kullanımda client bilgisi application.properties dosyasına giriliyor.

Örnek 
Şöyle yaparız
@EnableAuthorizationServer
@SpringBootApplication
public class SpringAuthorizationServerApplication {
  public static void main(String[] args) {
  SpringApplication.run(SpringAuthorizationServerApplication.class, args);
  }
}
applicaton.yml dosyasına şöyle yaparız. Burada tek bir client tanımlanabiliyor.
security:
  oauth2:
    client:
      client-id: clientId
      client-secret: very-strong-secret
2. AuthorizationServerConfigurerAdapter İle Kullanım
Bu kullanımda "Authorization Code Grant" gerçekleştiriliyor. Yani önce
1. Authorization Request isteği Resource Owner'a gönderiliyor. O da Authorization Grant dönüyor.
2. Bu Authorization Grant ile Authorization Server'a gideriz. O da bir Access Token döner




Hiç yorum yok:

Yorum Gönder