Đề tài Enterprice Java Bean (EJB)
Mục Lục
Bảng phân chia công việc nhóm . 5
I. Message Driven Bean . 6
1.1. Một số khái niệm liên quan . 6
1.1.1. Message . 6
1.1.2. Đồng bộ và bất đồng bộ . 6
1.1.3. Hệ thống EMS – Enterprise Message System . 7
1.1.4. Hệ thống JMS - Java Message Service (Producer) . 7
1.2. Message Driven Bean (Consumer) .11
1.2.1. Giới thiệu .11
1.2.2. Chu kỳ của Message Driven Bean .12
1.2.3. Consumer cho Topic Destination .13
1.2.4. Consumer cho Queue Destination .14
1.2.5. Producer cho Topic Destination .14
1.2.6. Producer cho Queue Destination .16
II. JAVA PERSISTENCE API .17
2.1. JDBC và ORM .17
2.1.1. JDBC là gì? .17
2.1.2. ORM là gì? .17
2.2. JPA là gì? .18
2.3. Entity .19
2.3.2. Entity .19
2.4. Persistence Context.24
2.5. Entity Manager .25
2.5.1. Thao tác với Entity .25
2.5.2. Persistence Unit .27
2.6. Java Persistence Query Language .27
2.6.1. JPQL là gì .27
2.6.2. Cấu trúc truy vấn JPQL .28
2.6.3. Các kiểu query .30
III. Transaction trong EJB .34
3.1. Transactions .34
3.2. Container – managed transaction .34
3.2.1. Khái niệm .34
3.2.2. Transaction attribute .36
3.2.3. Thiết lập transaction attribute .38
3.3. Bean – managed transaction .40
3.3.1. Khái niệm .40
4 | T r a n g
3.3.2. Các method hỗ trợ .41
3.3.3. Thiết lập transaction timeout với bean – managed transaction .41
3.4. Xử lý exception .42
3.4.1. Trường hợp EJB với bean – managed transaction .42
3.4.2. Trường hợp EJB với container – managed transaction .42
IV. EJB Security .43
4.1. Các khái niệm cơ bản .44
4.1.1. Tổng quan .44
4.1.2. Các cơ chế áp dụng trong Security .44
4.2. Mô hình J2EE Security .45
4.3. JAAS Framework .46
4.4. Security trên EJB .50
V. Tài liệu tham khảo .53
ay thành phần Web module truy cập middleware qua browser), Middleware – application server (chứa các Web Container xử lý Web và EJB Container xử lý các nghiệp vụ của ứng dụng) và CSDL (dùng để chứa và xử lý các dữ liệu). Client truy cập vào middleware phải được xác thực để truy cập vào container tuân theo qui luật của từng container. 46 | T r a n g Trên middleware, các thành phần container thực hiện cơ chế xác thực để truy cập lẫn nhau đảm bảo ứng dụng có tính bảo mật cao. Middleware trong quá trình xử lý phải thực hiện truy cập vào CSDL với sự xác thực của CSDL và quyền hạn thao tác trên CSDL để lấy dữ liệu về xử lý Cơ chế bảo mật trong J2EE đảm bảo cho ứng dụng có tính bảo mật cao nhất. Mô hình J2EE Sercurity 4.3. JAAS Framework Java Authentication and Authorization Services (JAAS) là framework cung cấp Authencation và Authorizaion cho các ứng dụng của Java. Cơ chế bảo mật trong JAAS - Xác định tài nguyên – resources cần bảo mật - Xác định provider phù hợp cho tài nguyên cần bảo mật. - Dùng các phương thức security của provider trên resources để thực hiện bảo mật. - Cung cấp các cơ chế để với client sử dụng tài nguyên đã được bảo mật. Một số cách thức bảo mật Basic Authentication Client Authorization Databas e Authentication/ Authorization Servlets JSPs Browse r Web Authentiaction Server Web Container Sercurity 47 | T r a n g - Sử dụng cơ chế người dùng muốn truy cập client phải nhập username và password thông qua cửa số popup sercurity được hỗ trợ từ cửa sổ web browser. - Nếu xác thực đúng người dùng sẽ truy cập Web, ngược lại browser sẽ hiển thị trang web không tồn tại hay không load được trang web này. Form-based Authentication - Tương tự như cơ chế Basic authentication nhưng developers thực hiện tạo các form của web (html, jsp …) với các control để tiếp nhận username và password để đón nhận giá trị nhập của người dùng và thực hiện xác thực (có thể bằng code hay container hỗ trợ). Digest Authentication - Hệ thống yêu cầu thông tin xác thực - Client cung cấp thông tin để chuyển tới server - Server xác định thông tin, nếu đúng, sẽ tạo token chứa các thông tin mã hóa và gửi cho client - Client nhận được token phải dùng các cách giải mã tương ứng, nếu thực hiện được, thông tin sẽ gửi lại server và client được phép truy cập hệ thống - Bất kỳ giai đoạn nào có lỗi phát sinh thì việc authentication được coi là không hiệu lực. - Cơ chế có tính bảo mật cao vì thông tin đã được mã hóa Certificate based Authentication - Sử dụng dạng xác thực của một trung tâm chứng thực có uy tín để xác thực - Dữ liệu được mã hóa và truyền đi trên kênh đặc biệt và được server xác thực, nếu kênh này không được mở thì dữ liệu sẽ không bao giờ đến được server - Áp dụng SSL hay HTTPS - Các thành phần của JAAS - Login module: thực hiện cơ chế authentication và authorization qua việc xác thực username hay password. Đối tượng tương tác trực tiếp với client. - Login context: client sử dụng đối tượng này để cung cấp thông tin trong quá trình login 48 | T r a n g - CallbackHandler và Callback: Hỗ trợ tương tác giữa client và Login module. Loginmodule dùng Callback để lấy thông tin của Client và CallbackHander sẽ cung cấp các thông tin cho Loginmodule. - Principal and Group: class để Login module chứa thông tin của authentication (Principal) và authorization (group) - Subject: đối tượng chứa các thông tin liên quan đến client sau khi login thành công để sử dụng cho authentication. - Một số đối tượng khác: Principal: thông tin xác định đối tượng (ví dụ: username) Credenticals: thông tin cung cấp thuộc tính liên quan đến đối tượng được bảo mật (ví dụ: password) Cơ chế thực hiện Authentication: client truy cập resource bảo mật trên Server có các bước xử lý như sau: - Client gửi các thông tin có liên quan đến việc login đến CallbackHandler (ví dụ: username, password) để thực hiện khởi tạo và lưu trữ giá trị để sử dụng trong các bước tiếp theo. - CallbackHandler đưa thông tin đến Login Context để khởi tạo cho quá trình thực hiện authentication - Login Context thực hiện tạo instance LoginModule, thông báo cho Login Context và Login Context đưa đối tượng cho Client (tương tự như cơ chế client truy cập EJB thông quan EJBObject) - Client gọi phương thức Login trên đối tượng Login Module - Login module yêu cầu thông tin xác thực từ CallbackHandle để lấy thông tin mà client đã cung cấp trong quá trình khởi tạo. - Login module thực hiện xử lý xác thực. Nếu xác thực sai, sẽ đưa ra exception còn đúng sẽ thông báo cho user. - Việc xác thực thành công, thông tin của client sẽ được lưu trữ trong đối tượng Subject thông qua Login Context. 49 | T r a n g Cơ chế thực hiện authorization: Client hay user truy cập các phương thức trên Server. Thông tin của user trong Subject được cung cấp để xác định role tương ứng. Nếu không được truy cập sẽ thông báo lỗi, ngược lại gọi phương thức thực thi Có 02 cách thức để thực hiện authorization: Declarative: - Không cần lập trình mà chỉ mô tả thông tin qua deployment descriptor. - Deployment descriptor mô tả và thông báo cho container các roles về security và security constraints để client truy cập các phương thức phải tuân theo qui tắc bảo mật. Đặc biệt container sẽ hỗ trợ cơ chế security cho các ứng dụng được deploy vào container - Cấu hình security cho ứng dụng EJB deploy trên server Jboss. Programmatic: - Lập trình bảo mật trực tiếp trong Bean - Các phương thức xử lý business sẽ được tích hợp với các kiểm tra bảo mật - Có khả năng kết hợp với declarative để tăng tính uyển chuyển trong việc vận dụng bảo mật Việc xác thực và phân quyền của JAAS trên mô hình J2EE/JavaEE được container kiểm tra trên ACL – Access Control List 50 | T r a n g - ACL là một tập tin tài nguyên chứa đựng thông tin liên quan đến quyền xác thực và nhóm user được phân quyền - Khi có một request gửi đến server thì lời yêu cầu bắt buộc được container kiểm tra trên ACL, nếu như tồn tại thành viên sẽ tiếp tục kiểm tra quyền để thành viên được cấp quyền truy cập tài nguyên hay bị từ chối không có phép truy cập 4.4. Security trên EJB Login module trong JBoss được thể hiện qua security domain với JNDI có cú pháp java:/jaas/. JBoss đã hỗ trợ sẵn một domain mặc định là others JBoss cung cấp UserRolesLoginModule nhằm lấy username, password và role từ tập tin ACL, cụ thể ACL được thể hiện qua các tập tin properties trong ejb package users.properties: Chứa các username và password theo từng hàng một với dạng username=password (lưu ý: không có khoảng cách trong các thành phần khai báo) Ví dụ: users.properties admin=123456 guest=123456 roles.properties: Chứa nội dung phân quyền cho các user, thông tin được lưu trữ thành từng hàng có dạng username=roles[, role2][,…][, rolen] (lưu ý: tên username phải tồn tại trong tập tin users.property và các role có thể có nhiều hơn 1 và cách nhau bằng dấu phẩy). Ví dụ: roles.properties admin=admin,manager guest=user 51 | T r a n g Các bước xây dựng ứng dụng EJB có áp dụng Security Bước 1: Tạo đối tượng ứng dụng hỗ trợ EJB Bước 2: cấu hình LoginModule với các file properties đặt tại thư mục của application users.properties roles.properties Bước 3: bổ sung cấu hình security các tập tin deployment descriptor các thành phần element hỗ trợ khai báo security. Bổ sung việc xác định domain trong tập tin jboss.xml java:/jaas/tên domain .... Bổ sung các thành phần resource, phương thực cần hỗ trợ security trong tập tin ejb- jar.xml .... tên role trong file roles</security- role> các security role khác tên role trong file roles tên ejb tên method loại dữ liệu … 52 | T r a n g Cấu hình nhiều hơn một phương thức, để cấu hình toàn bộ phương thức dùng dấu * ... Bước 4: xây dựng client truy cập vào ứng dụng thông qua các xác thực Đối với ứng dụng web – bổ sung cấu ứng authentication và authorization trên tập tin web.xml (xác định tài nguyên được security) tên resource /* hay tên tài nguyên/thư mục HEAD (xác định các phương thức HTTP được security) GET PUT POST DELETE (xác định các roles được phép truy cập tài nguyên) tên role – tồn tại trong file roles các role khác (xác định cơ chế mã hóa dữ liệu để truyền đi) NONE|INTEGRITY|CONFIDENTIAL</transport- guarantee> (NONE: không mã hóa; INTEGRITY: mã hóa; CONFIDENTIAL: mã hóa và truyền kênh riêng) (xác định cơ chế authentication) BASIC|FORM|DIGEST (xác định các roles được security để truy cập ứng dụng) tên role 53 | T r a n g các security role khác Bước 5: Đóng gói ứng dụng, deploy và testing ứng dụng Một số thông tin hay phương thức hỗ trợ xử lý security trong Bean của EJB EJB Context là gateway đến container và có khả năng truy cập từ bên trong bean. Do vậy, các phương thức callbacks hoạt động trên EJB Context để tương tác với container một cách dễ dàng. EJB Context sử dụng javax.ejb.EJBContext với các chức năng hỗ trợ Methods Mô tả getHome() Sử dụng để lấy đối tượng Home Object. getCallerPrincipal() Sử dụng để lấy định danh bảo mật của client đang truy cập vào hệ thống để có thể xác định vai trò của client trong việc truy cập các chức năng của EJB isCallerInRole(String role) Xác định client có được phân quyền – role hay không setRollbackOnly() Thiết lập chế độ rollback trong transaction hiện hành cho instance bean getRollbackOnly() Xác định xem transaction có được đánh dấu rollback không getUserTransaction() Lập trình để thực hiện điều khiển transaction Session – Entity Context Interface được extends từ EJBContext, do vậy, session bean có thể truy cập tất cả các phương thức của EJBContext. V. Tài liệu tham khảo 1) 2) 3) 4) 5) 6) 7) sách Manning - EJB 3 in Action, Debu Panda - Reza Rahman - Derek Lane
File đính kèm:
- Đề tài Enterprice Java Bean (EJB).pdf