Tuesday, April 7, 2009

JAAS Overview

Java Security secara umum terdiri dari beberapa bagian seperti Java Cryptography Architecture (JCA), Java Secure Socket Extension (JSSE), dan Java Authentication and Authorization System (JAAS). JAAS digunakan untuk autentikasi dan autorisasi user terhadap sebuah resource. Resource dalam hal ini bisa berupa data di database, sebuah halaman web, atau akses terhadap sebuah file. Gampangnya, JAAS berhubungan dengan permission, apakah user mendapat permission terhadap sebuah resource. User dalam hal ini biasanya berupa orang yang ingin mengakses resource, atau code base, yaitu kumpulan kode dalam sebuah package atau file JAR.

Penggunaan permission dalam hal ini dalam konteks 'positif', yaitu menunjukkan apa saja yang bisa dilakukan user terhadap resource, bukan yang tidak bisa dilakukannya. Hal ini cukup logis bila melihat skenario berikut : user A mendapatkan sebuah permission untuk mengakses drive C:\, namun dia juga mempunyai permission lain yang tidak mengijinkannya mengakses drive C:\. Kedua permission ini saling bertentangan. Untuk menghindari hal semacam inilah JAAS hanya memiliki positive permission.

Bagaimana dengan negative permission? Bayangkan sebuah skenario berikut : Karena JAAS hanya mengijinkan negative permission, maka secara default semua user (termasuk user yang tidak semestinya bisa mengakses) berhak mengakses drive C:\ kecuali JAAS melarang akses terhadap drive C:\ (memberikan negative permision). Tentunya positive permission lebih baik dalam mengatasi dua skenario di atas bukan?

Permission & Policy

Pada Java, permission diimplementasikan dalam class-class seperti FilePermission, RuntimePermission, SecurityPermission, AuthPermission, dll. Sedangkan policy adalah pemetaan antara permission, user, dan target / resource. Policy diimplementasikan dalam bentuk sebuah file .policy seperti contoh berikut :

grant
{
permission java.io.FilePermission "mySecretData.txt", "read";
};

Contoh tersebut berarti memberikan grant membaca saja terhadap file mySecretData.txt kepada siapapun.

Subject

Dalam JAAS, user (baik berupa orang maupun code) diimplementasikan sebagai Subject.

Principals

Subject/user terdiri dari beberapa principals, seperti ilustrasi berikut : Seseorang bisa memiliki beberapa tanda pengenal / identity seperti KTP, KTM, SIM. Masing-masing tanda pengenal / identity itulah yang disebut principals. Jelasnya, Subject memiliki satu atau lebih principals.

Selain identity, principals juga bisa dilihat sebagai sebuah role, seperti ilustrasi berikut : Seorang karyawan mempunyai role pertama yaitu bisa melakukan administrasi pegawai (CRUD pegawai) dan role kedua yaitu bisa melakukan konfigurasi sistem (mengkonfigurasi mail server, dll). Dengan JAAS kita bisa mengimplementasikan kedua role tsb sebagai principal.

0 comments:

 

©2009 Stay the Same | by TNB