Tôi học JAAS

Kỳ 1: THẤT BẠI LÀ MẸ THÀNH CÔNG

Bước đầu đối với ai cũng thật sự tệ, và tôi cũng không ngoại lệ. Đầu tiên cũng như bao lần học những công nghệ khác, tôi vào Google. Kết quả: tôi tìm ra một tài liệu Security for JavaSE6. Tôi mày mò trong mục tutorial, tìm cách run. Kết quả: Thất bại, vì lý do tôi không biết cách run. Trước giờ tôi chỉ sài eclipse, chạy command line đối với tôi thật khó khăn, và cũng vì ngày sưa tôi quá coi thường nó (thời nay ai mà còn dùng command line).
Tài liệu thứ 2 mà tôi tìm thây là bài JAAS Security in Action trên devx.com. Cũng chỉ nói về hệ tư tửng, những định nghĩ, vv... Mà không chạy được làm sao mà hiểu được định nghĩa. Và tất nhiên kết quả không gì khác ngoài: THẤT BẠI.
Tôi bắt đầu mày mò một số bài viết tiếng Việt, và dĩ nhiên là trên javavietnam.org. Qua đó tôi được biết có một bài viết của bác Thắng trên tincntt.com. Mừng hết lớn, đọc lấy đọc để... Kết quá cũng thất bại, vì đơn giản đó chỉ là một bài dịch trên DevArticles, chẳng có một ứng dụng, và còn tệ hơn khi tác giả chẳng mảy may chú ý đến sự tiếp thu của người đọc. Lên nguồn tiếng anh thì thấy họ viết còn dễ hiểu hơn, có lẽ đó cũng là lý do người ta nói: các bài viết tiếng Việt thường “chuối”. (Có gì không phải vui lòng bỏ qua cho)

Kỳ 2: MỘT CHÚT KHẢ QUAN

Đúng là cái gì cũng phải kiên nhẫn, và cuối cùng cũng được kết qủa như mong muốn. Quyển đầu tiên đã giúp tôi thu nhập được nhiều thứ nhất chính là JAAS in action. Giới thiệu một cách khái quát về jaas, từ căn bản, đến những webapp dùng jaas. Những web application mà cuốn sách này tôi vẫn chưa chạy được, nhưng cũng giúp tôi bước đầu trên con đường chinh phục JAAS.
Để chạy được các ví dụ trong quyển sách này máy bạn cần có eclipse, và bạn cũng nên học một chút về ant trên eclipse.
Tôi lại tiếp tục trên con đường tiềm kiếm một app hoàn chỉnh, và đã thấy trên JEE5 tutorial, và tôi đã run được ứng dụng web đầu tiên.

Kỳ 3: KẾT QUẢ ĐẠT ĐƯỢC

Trên con đường đi tìm, tôi đã gặp và nằm lòng những khái niệm
User: Người dùng, và trong jaas nó không được biểu diễn bằng một Object
Subject: là một thực thể đại diện cho user trên ứng dụng.
Principal: Đại diện cho một (Administrator) hoặc nhiều (Group manager) Subject.
Resource: Tất cả mọi thứ trong hệ thống của chúng ta.
Permission: Quản lý Resource, Một permission class đại diện cho 3 thứ: resource, action và name. Nó có thể được gán cho một Principal.
Authentication: Hành động kiểm tra một user, gán cho subject của user này một principal; bạn là ai
Authorization: Hành động kiểm tra một user, và cấp phép truy cập resource; bạn có thể làm gì.
Authentication module: Phương thức xác nhận user.
Authentication scheme: Bao gồm nhiều Authentication module.

Kỳ 4: CẤU HÌNH SUN APPLICATION SERVER

Để Application Server xác định quyền users, ta làm theo các bước sau
1.Start server
2.Vào admin console( mặc định là http://localhost:4848/asadmin)
3.Gõi username và password (thường là admin và adminadmin)
4.Mở cây bên trái chọn Configuration\ Security\ Realms\. Ta có thể có 3 lựa chọn:
file: tạo user cho phép truy cập vô ứng dụng
admin-realm: tạo user cho phép tác động vào server admin
certificate
5.Chọn manage users, ở đó bạn có thể thêm, xoá, và sửa thông tin user.
6.OK
7.Logout

Kỳ 5: EJB+JAAS HelloWorld APPLICATION

Bạn nên dùng Netbeans 5.5.1 + Sun Application Server 9
Bước 1: Tạo một Enterprise Application
Proejct name: HelloWorld
Bỏ check Create Web application module
Check vào mục create application client module
Sửa tên main class thành com.bds.test.Client
Bước 2: Tạo session Bean
EJB Name: HelloWorld
Package: com.bds.ejb
Check remote, bỏ check local

HelloWorldBean.java
@DeclareRoles("admin")
@Stateless
public class WorldHelloBean implements WorldHelloRemote {
/** Creates a new instance of WorldHelloBean */
public WorldHelloBean() {
}
@RolesAllowed("admin")
public void sayHello(String name) {
System.out.println("Hello "+name);
}
}

HelloWorldRemote.java
@Remote
public interface WorldHelloRemote {
void sayHello(String name);
}

Bước 3: Test
Ta chỉ cần remote đến WorldHelloBean để dùng:

public class Client {

@EJB
private static WorldHelloRemote worldHelloBean;

/** Creates a new instance of Client */
public Client(String[] args) {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Client c = new Client(args);
c.doTest();
// TODO code application logic here
}
public void doTest(){
worldHelloBean.sayHello("Hien");
}
}

Bước 4: Khai báo <security-role-mapping>
Trong helloworld project: sửa file sun-application.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-application PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Java EE Application 5.0//EN" "http://www.sun.com/software/appserver/dtds/sun-application_5_0-0.dtd">
<sun-application>
<security-role-mapping>
<role-name>admin</role-name>
<group-name>admin</group-name>
</security-role-mapping>
</sun-application>

Bước 5: Run
Để chạy được project này bạn cần có một user có ID:admin, password: admin, group: admin.
Sau đó ta chỉ run project helloworld

Kỳ 6: JAAS-WEB APPLICATION
Writing...
TÀI LIỆU THAM KHẢO
http://java.sun.com/products/jaas/overview.html
http://www.mooreds.com/jaas.html
http://www.tincntt.com/tincntt/cms/vi/tutorials/java_tutorials/jaas_1.html
http://java.sun.com/javaee/5/docs/tutorial/doc/Overview9.html

Cao Trong Hien

,

1 Response to "Tôi học JAAS"

Nặc danh said :
08:54 7 tháng 10, 2008
Cám ơn vì bạn đã có ý tốt chia sẽ kiến thức với mọi người. Nhưng thực sự là tôi cũng không thể start được "Helloworld" sample mà bạn đang nói tới. Cái tôi cần là bạn đính kèm sample source và vài hướng dẫn để start cái sample đó. Dù sao cũng cám ơn vì bạn đã có ý tốt. Chúc vui vẻ!

Đăng nhận xét