Sunday, December 18, 2016

Custom Spring Annotation @PreAuthorize

Anotasi @PreAuthorize biasanya di pakai untuk memvalidasi token yang digunakan oleh sebuah request saat memanggil REST API. Anotasi ini biasanya dipasang dalam sebuah class rest controller, dan penggunaannya seperti berikut :


Dalam dokumentasi spring dijelaskan beberapa opsi yang bisa kita gunakan, diantaranya seperti isAuthenticated(), hasRole([role]), permitAll dan lain sebagainya.

Jika kita perhatikan lebih lanjut pada log aplikasi, sebenarnya @PreAuthorize isAuthenticated() ini melakukan sebuah query dan logic. Dari log mode debug bisa dilihat bahwa isAuthenticated() melakukan query ke tabel access_token untuk mengecek apakah token terdaftar dan expired date nya belum berakhir.


Dan ternyata kita bisa membuat sebuah method yang bisa di masukan kedalam anotasi @PreAuthorize seperti isAuthenticated(), yaitu dengan cara menambahkan anotasi @Component pada class java yang method nya akan digunakan.

Berikut contoh implementasinya:


Bisa dilihat pada code diatas bahwa dalam anotasi @PreAuthorize berisi @nostraEmployee.check('NOSTRA'). Cara penggunaannya adalah dengan menambahkan '@' lalu nama class nya yang diawali dangan huruf lower case, dan selanjutnya '.' diikuti nama methodnya. 
Dalam contoh kali ini nama class nya adalah NostraEmployee dan method yang ingin digunakan adalah method check, maka isi dari @PreAuthorize adalah "@nostraEmployee.check('NOSTRA')"

Dan berikut adalah code untuk class NostraEmployee :


Jadi dengan menambahkan annotation @Component pada suatu class kita bisa menggunakan method didalamnya pada anotasi @PreAuthorize. Dan didalam method tersebut kita bisa menambahkan logic tambahan dalam mengauthentikasi token yang mengakses REST API kita.


No comments:

Post a Comment