JDBC Authentication
Pada materi-materi sebelumnya, kita telah mempelajari penyimpanan data pengguna/user dari memori (In-Memory Authentication) metode yang sangat baik untuk tahap pengembangan awal. Namun, aplikasi tingkat production tidak mungkin menyimpan kredensial pengguna/user langsung di dalam kode program. Di sinilah kita menggunakan JDBC (Java Database Connectivity) Authentication.
| User ID | Password | Roles |
|---|---|---|
aco | test123 | (GUEST): Level terendah. |
ade | test123 | (GUEST, USERS): Memiliki akses tamu dan akses pengguna reguler. |
ucup | test123 | (GUEST, USERS, ADMIN): Level tertinggi (Super User). |
Materi ini akan membahas cara mengalihkan penyimpanan data pengguna/user dari memori (In-Memory) ke database relasional menggunakan JDBC Authentication.
1️⃣ Persiapan Database
- Spring Security secara default menggunakan struktur tabel tertentu agar dapat bekerja secara otomatis tanpa query tambahan.
CREATE TABLE users (
username VARCHAR(50) NOT NULL PRIMARY KEY,
password VARCHAR(100) NOT NULL,
enabled TINYINT NOT NULL
);
CREATE TABLE authorities (
username VARCHAR(50) NOT NULL,
authority VARCHAR(50) NOT NULL,
CONSTRAINT fk_authorities_users FOREIGN KEY(username) REFERENCES users(username)
);
warning
Pastikan kolom enabled bernilai 1 agar user bisa login.
- Insert data
usersdanauthorities:
INSERT INTO `users`
VALUES
('aco','{noop}test123',1),
('ade','{noop}test123',1),
('ucup','{noop}test123',1);
INSERT INTO `authorities`
VALUES
('aco','ROLE_GUEST'),
('ade','ROLE_GUEST'),
('ade','ROLE_USERS'),
('ucup','ROLE_GUEST'),
('ucup','ROLE_USERS'),
('ucup','ROLE_ADMIN');