Panduan lengkap tentang cara membuat sistem autentikasi OAuth2 menggunakan Spring Boot. Artikel ini menjelaskan langkah-langkah, konsep dasar, serta best practices yang diperlukan untuk implementasi autentikasi yang aman dan efisien.
Panduan lengkap tentang cara membuat sistem autentikasi OAuth2 menggunakan Spring Boot. Artikel ini menjelaskan langkah-langkah, konsep dasar, serta best practices yang diperlukan untuk implementasi autentikasi yang aman dan efisien.

Sistem autentikasi yang aman adalah salah satu aspek paling penting dalam pengembangan aplikasi web modern. OAuth2 adalah protokol yang banyak digunakan untuk otorisasi yang memungkinkan aplikasi pihak ketiga untuk mendapatkan akses terbatas ke layanan HTTP. Dalam artikel ini, kita akan membahas cara membuat sistem autentikasi menggunakan OAuth2 dengan Spring Boot.
OAuth2 adalah protokol otorisasi yang memungkinkan aplikasi untuk mendapatkan akses terbatas ke akun pengguna di layanan lain, tanpa harus membagikan kredensial pengguna tersebut. Protokol ini memungkinkan pengguna untuk memberikan akses kepada aplikasi pihak ketiga untuk melakukan tindakan tertentu atas nama mereka.
Sebelum kita melangkah lebih jauh, penting untuk memahami beberapa konsep dasar dari OAuth2:
Resource Owner adalah entitas yang memiliki hak akses terhadap resource yang ingin diakses. Dalam konteks aplikasi web, ini biasanya adalah pengguna.
Client adalah aplikasi yang ingin mengakses resource yang dilindungi. Client harus mendapatkan izin dari Resource Owner sebelum dapat mengakses resource tersebut.
Authorization Server adalah server yang bertanggung jawab untuk mengautentikasi Resource Owner dan memberikan token akses kepada Client setelah mendapatkan izin.
Resource Server adalah server yang menyimpan resource yang ingin diakses oleh Client. Server ini akan memverifikasi token akses yang diberikan oleh Authorization Server sebelum memberikan akses ke resource.
Spring Boot adalah framework yang mempermudah pengembangan aplikasi Java. Dengan dukungan terhadap OAuth2, Spring Boot menyediakan berbagai alat dan pustaka untuk mengimplementasikan sistem autentikasi yang aman dengan mudah.
Untuk memulai, kita perlu membuat proyek Spring Boot baru. Kita bisa menggunakan Spring Initializr untuk membuat proyek ini. Berikut adalah langkah-langkahnya:
Setelah proyek dibuat, kita perlu mengonfigurasi aplikasi untuk menggunakan OAuth2. Berikut adalah langkah-langkahnya:
Tambahkan konfigurasi berikut di application.properties:
spring.security.oauth2.client.registration.my-client.client-id= spring.security.oauth2.client.registration.my-client.client-secret= spring.security.oauth2.client.registration.my-client.scope=read,write spring.security.oauth2.client.registration.my-client.redirect-uri=http://localhost:8080/login/oauth2/code/my-client spring.security.oauth2.client.provider.my-provider.authorization-uri= spring.security.oauth2.client.provider.my-provider.token-uri= spring.security.oauth2.client.provider.my-provider.user-info-uri=
Kita perlu membuat model untuk menyimpan informasi pengguna. Buat kelas User dengan atribut yang diperlukan, seperti id, username, dan password.
Buat repository untuk mengelola data pengguna. Anda bisa menggunakan Spring Data JPA untuk melakukan ini:
@Repository
public interface UserRepository extends JpaRepository {
Optional findByUsername(String username);
}
Buat service untuk mengelola logika bisnis terkait pengguna. Dalam service ini, Anda dapat menambahkan metode untuk mendapatkan pengguna berdasarkan username, serta metode untuk menyimpan pengguna baru.
Buat controller untuk mengatur endpoint yang akan diakses oleh pengguna. Misalnya, Anda bisa membuat endpoint untuk login dan mendapatkan informasi pengguna.
Selanjutnya, kita perlu mengkonfigurasi keamanan aplikasi menggunakan Spring Security. Buat kelas konfigurasi keamanan dengan menurunkan dari WebSecurityConfigurerAdapter:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login", "/oauth2/**").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login();
}
}
Authentication Server adalah komponen yang bertanggung jawab untuk menerbitkan token akses. Kita bisa menggunakan Spring Authorization Server untuk membuat Authentication Server. Langkah-langkahnya adalah sebagai berikut:
Tambahkan dependensi berikut ke pom.xml:
org.springframework.boot
spring-boot-starter-oauth2-authorization-server
Buat kelas konfigurasi untuk Authorization Server yang mengatur pengaturan seperti client, token, dan endpoint:
@Configuration
@EnableAuthorizationServer
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("client-id")
.secret("{noop}client-secret")
.authorizedGrantTypes("authorization_code")
.scopes("read", "write")
.autoApprove(true);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.authenticationManager(authenticationManager);
}
}
Resource Server adalah komponen yang menyimpan resource yang ingin diakses oleh client. Kita perlu mengkonfigurasi Resource Server untuk memverifikasi token akses yang diterima.
Tambahkan dependensi berikut untuk Resource Server:
org.springframework.boot
spring-boot-starter-oauth2-resource-server
Buat kelas konfigurasi untuk Resource Server yang mengatur keamanan dan endpoint:
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId("resource-id").stateless(true);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/public").permitAll()
.anyRequest().authenticated();
}
}
Setelah semua konfigurasi selesai, saatnya untuk menguji sistem OAuth2 yang telah kita buat. Berikut adalah langkah-langkah untuk menguji sistem:
Jalankan aplikasi Spring Boot yang telah Anda buat. Pastikan tidak ada error yang muncul saat startup.
Buka browser dan akses endpoint login yang telah Anda konfigurasi. Anda harus diarahkan ke Authorization Server untuk login.
Setelah berhasil login, Anda akan diminta untuk memberikan izin kepada aplikasi untuk mengakses resource Anda. Klik “Allow” untuk melanjutkan.
Setelah memberikan izin, Anda akan menerima token akses yang dapat digunakan untuk mengakses resource yang dilindungi.
Gunakan token akses untuk mengakses resource yang dilindungi. Pastikan Anda menyertakan token dalam header permintaan.
Membuat sistem autentikasi menggunakan OAuth2 dengan Spring Boot adalah proses yang relatif sederhana jika Anda mengikuti langkah-langkah yang tepat. Dengan memahami konsep dasar OAuth2 dan menerapkan konfigurasi yang benar, Anda dapat membangun aplikasi yang aman dan dapat diandalkan. Sistem ini tidak hanya memungkinkan pengguna untuk mengakses aplikasi dengan aman, tetapi juga memberikan fleksibilitas dalam hal izin dan akses ke resource yang dilindungi.