Cách ñây vài năm, khi nói tới thếkỷ21, người ta khẳng ñịnh ñó sẽlà thời ñại của
“nền kinh tếsố” với “thương mại ñiện tử” là then chốt. Thông tin và các giao dịch
ñược sốhóa sẽlàm ñảo lộn nền kinh tếthếgiới. Làm sao ñểcó thểtận dụng
Internet mởrộng thịtrường, tìm thêm cơhội cho sản phẩm, dịch vụcủa mình ñã trở
thành ñiều mà các doanh nhân, doanh nghiệp Việt Nam không thểkhông quan tâm.
Có thểtrước mắt, khi phần lớn các Website thương mại ñiện tử ởViệt Nam chưa
thực hiện giao dịch trực tuyến thì bảo mật chưa thật sựquan trọng, nhưng vềlâu
dài, khi các giao dịch thương mại ñiện tửtrởthành xu thếtất yếu thì nếu ít quan tâm
ñến bảo mật sẽrất khó ñểtựbảo vệmình.
Web service ra ñời ñã mởra một hướng mới trong việc phát triển các ứng dụng trên
Internet. Chính vì thế sự an toàn của web service trên mạng cũng không thểnằm
ngoài vấn ñềnày,có thể nói ngày nay ngoài việc nghiên cứu làm sao ñể tạo ra một
web services tốt mang lại nhiều lợi ích thì việc nghiên cứu ñể làm sao mang lại sự
an toàn cho web services cũng là một trong những vấn ñề quan trọng nhất.
Chính vì thế, cần thiết phải có nhiều ñềtài nghiên cứu vềbảo mật mạng và những
công cụthực hiện bảo mật ñểcó thểáp dụng chúng cho thực tếnước ta hiện nay.
140 trang |
Chia sẻ: tuandn | Lượt xem: 2124 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Bảo mật Web với mã nguồn mở ACEGI và ứng dụng làm một trang web bán lẻ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NHẬN XÉT CỦA GVHD
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE i
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
LỜI CẢM ƠN
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE ii
LỜI CÁM ƠN
Chúng em xin bày tỏ lòng biết ơn chân thành nhất ñến thầy ðặng Thanh Dũng,
người thầy ñã tận tâm giúp ñỡ, hướng dẫn chúng em thực hiện luận văn này.
Chúng con xin gửi lòng biết ơn và kính trọng sâu sắc ñến gia ñình, những người ñã
nuôi dạy chúng con trưởng thành.
Chúng em chân thành cảm ơn quý thầy cô trong khoa Công nghệ thông tin trường
ðại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh ñã tận tình giảng dạy, hướng
dẫn, giúp ñỡ chúng em trong suốt quá trình học cũng như hoàn thành luận văn này.
Mặc dù ñã cố gắng hết sức nhưng chắc chắn luận văn còn nhiều thiếu sót, chúng
em mong nhận ñược sự thông cảm, chỉ bảo của quý thầy cô cùng các bạn.
Tp.HCM ngày 31/12/2007
Lương Nguyễn Hải ðăng-ðoàn Huỳnh Cẩm Duyên
MỤC LỤC
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE iii
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ...................................................... i
LỜI CÁM ƠN ......................................................................................................... ii
MỤC LỤC ............................................................................................................. iii
DANH MỤC CÁC HÌNH VẼ ................................................................................. v
DANH MỤC CÁC BẢNG .................................................................................... vii
1. CHƯƠNG 1 – MỞ ðẦU .................................................................................... 1
1.1. Tính cấp thiết của ñề tài ................................................................................ 1
1.2. Mục tiêu của ñề tài ....................................................................................... 1
2. CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT .................................................................. 4
2.1. Web Services ................................................................................................ 4
2.1.1. Tổng quan về Web Service .................................................................... 4
2.1.2. Các thành phần chính của Web Service ................................................. 7
2.1.3. Tính bảo mật Web Service ....................................................................12
2.2. Spring Web Service .....................................................................................13
2.2.1. Giới thiệu về Spring Framework và Spring Web Service ......................13
2.2.2. Contract-first ........................................................................................15
2.2.3. Tạo một web service trong Spring ........................................................44
MỤC LỤC
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE iv
2.2.4. Bảo mật web service trong Spring Web Service ...................................70
2.3. Acegi Security .............................................................................................91
2.3.1. Giới thiệu .............................................................................................91
2.3.2. Authentication ......................................................................................92
2.3.3. Authorization...................................................................................... 104
2.4. Kết luận ..................................................................................................... 125
3. CHƯƠNG 3 – THIẾT KẾ VÀ CÀI ðẶT ......................................................... 127
3.1. Thực tế ...................................................................................................... 127
3.2. Sơ ñồ chuyển trang .................................................................................... 127
3.3. Cài ñặt giao diện ........................................................................................ 128
4. CHƯƠNG 4 – KẾT LUẬN .............................................................................. 132
4.1. Tóm tắt các kết quả ñạt ñược ..................................................................... 132
4.2. Hướng phát triển ........................................................................................ 132
TÀI LIỆU THAM KHẢO .................................................................................... 133
DANH MỤC CÁC HÌNH VẼ
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE v
DANH MỤC CÁC HÌNH VẼ
Hình Nội dung Trang
1.1 Use case diagram của chương trình 2
2.1 Kiến trúc Web service 8
2.2 Cấu trúc của một message theo dạng SOAP 12
2.3 Cấu trúc các module trong Spring Web Service 16
2.4 Quá trình xử lý luồng ñi của MessageDispatcher 47
2.5 Những lớp liên quan ñến quá trình Pre-Invocation Handling 110
2.6 After Invocation Handling 114
3.1 Sơ ñồ chuyển trang 127
3.2 Màn hình ñăng nhập 128
3.3 ðăng nhập thành công 128
3.4 Xem danh sách áo dài 129
3.5 Xem chi tiết áo dài 129
3.6 Xem thông tin liên hệ 130
3.7 Xem danh sách ñơn ñặt hàng 130
DANH MỤC CÁC HÌNH VẼ
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE vi
3.8 Xóa khách hàng 131
3.9 Cấm/cho phép khách hàng 131
DANH MỤC CÁC BẢNG
KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE vii
DANH MỤC CÁC BẢNG
Bảng Nội dung Trang
1.1 Mô tả các use case 2
2.1 Bảng sử dụng KeyStore 74
CHƯƠNG 1 MỞ ðẦU
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 1
1. CHƯƠNG 1 – MỞ ðẦU
1.1. Tính cp thit ca ñ tài
Cách ñây vài năm, khi nói tới thế kỷ 21, người ta khẳng ñịnh ñó sẽ là thời ñại của
“nền kinh tế số” với “thương mại ñiện tử” là then chốt. Thông tin và các giao dịch
ñược số hóa sẽ làm ñảo lộn nền kinh tế thế giới... Làm sao ñể có thể tận dụng
Internet mở rộng thị trường, tìm thêm cơ hội cho sản phẩm, dịch vụ của mình ñã trở
thành ñiều mà các doanh nhân, doanh nghiệp Việt Nam không thể không quan tâm.
Có thể trước mắt, khi phần lớn các Website thương mại ñiện tử ở Việt Nam chưa
thực hiện giao dịch trực tuyến thì bảo mật chưa thật sự quan trọng, nhưng về lâu
dài, khi các giao dịch thương mại ñiện tử trở thành xu thế tất yếu thì nếu ít quan tâm
ñến bảo mật sẽ rất khó ñể tự bảo vệ mình.
Web service ra ñời ñã mở ra một hướng mới trong việc phát triển các ứng dụng trên
Internet. Chính vì thế sự an toàn của web service trên mạng cũng không thể nằm
ngoài vấn ñề này, có thể nói ngày nay ngoài việc nghiên cứu làm sao ñể tạo ra một
web services tốt mang lại nhiều lợi ích thì việc nghiên cứu ñể làm sao mang lại sự
an toàn cho web services cũng là một trong những vấn ñề quan trọng nhất.
Chính vì thế, cần thiết phải có nhiều ñề tài nghiên cứu về bảo mật mạng và những
công cụ thực hiện bảo mật ñể có thể áp dụng chúng cho thực tế nước ta hiện nay.
1.2. Mc tiêu ca ñ tài
Mục tiêu chính của ñề tài gồm:
• Nghiên cứu về web service và công nghệ Spring Web service.
CHƯƠNG 1 MỞ ðẦU
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 2
• Nghiên cứu về các ứng dụng Acegi Security ñể bảo mật web service trong
Spring.
• Viết một ứng dụng web nhỏ bán hàng trên mạng bằng web service mô phỏng
việc dùng Acegi Security ñể bảo mật.
Các tính năng của chương trình mà chúng tôi ñang xây dựng có thể ñược biểu diễn
trong use case diagram sau (Xem hình 1.1):
Xoa User
Xem don dat hang
Disable User
Enable UserAdmin
Xem san pham
Dat hang
Xem thong tin lien he
Dang nhap vao he thong
User
Dang ky thanh vien
Hình 1.1 – Use case diagram của chương trình
Nội dung chi tiết của các use case ñược cho trong bảng 1.1
CHƯƠNG 1 MỞ ðẦU
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 3
Bảng 1.1: Mô tả các use case
Tên use case Mô tả
Actor Admin
Xoa User
Xóa một User trong danh sách
User
Disable User Loại bỏ các quyền của User.
Enable User
Khôi phục các quyền cho
User
Xem don dat hang Xem ñơn ñặt hàng của khách
Dang nhap vao he thong Dang nhap vao he thong
Actor user
Xem san pham
Xem sản phẩm áo cưới hiện
có ở cửa hàng
Dat hang ðặt hàng áo cưới
Xem thong tin lien he
Xem thông tin liên hệ của cửa
hàng
Dang ky thanh vien Dang ky thanh vien
Dang nhap vao he thong Dang nhap vao he thong
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 4
2. CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT
Sau một thời gian nghiên cứu, nhóm ñã có một số kiến thức nhất ñịnh về Web
Service, Spring Web service và Acegi Security. ðây là cơ sở lý thuyết nền tảng cho
ứng dụng.
2.1. Web Services
2.1.1. Tổng quan về Web Service
2.1.1.1 Giới thiệu
Web Service là một công nghệ cho phép những ứng dụng có thể giao tiếp với nhau
trong những hệ ñiều hành và những ngôn ngữ lập trình ñộc lập với nhau. Một Web
Service là một giao diện phần mềm (software interface) mô tả một tập hợp các hành
ñộng (operation) có thể ñược truy cập trên toàn thế giới thông qua thông ñiệp XML
chuẩn. Nó sử dụng giao thức lấy ngôn ngữ XML làm nền, mô tả một hành ñộng
(operation) ñể thực thi hoặc dữ liệu ñể trao ñổi với Web Service khác.
WS cho phép:
• Giao tiếp giữa các dịch vụ trên bất kỳ hệ ñiều hành nào và viết bằng bất
kỳ ngôn ngữ nào.
• Conceptualize application functions into task, leading to task-oriented
development and workflows. This allows a higher abstraction of software
that can be employed by less software-technical users that work on
business level analytics.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 5
• Cho phép sự kết hợp lỏng lẻo, có nghĩa là mối tương tác giữa các ứng
dụng dịch vụ sẽ không bị ngắt khi có sự thay ñổi ở một hay nhiều dịch
vụ.
• Gắn vào một ứng dụng có sẵn ñể thay ñổi phù hợp với ñiều kiện của
doanh nghiệp và yêu cầu của khách hàng.
• Cung cấp những ứng dụng có sẵn hoặc thừa kế lại với những giao diện
dịch vụ mà không thay ñổi ứng dụng ban ñầu, cho phép chúng toàn quyền
hoạt ñộng trong môi trường dịch vụ.
• ðem lại những chức năng quản trị và quản lý như là: ñộ tin cậy
(reliability), trách nhiệm giải trình (accountability), bảo mật (security),…
ñộc lập với những chức năng chính, ñiều này làm cường tính linh hoạt và
hữu dụng trong môi trường tin học của doanh nghiệp.
2.1.1.2 Cách thức làm việc của Web Service
• Client không chứa bất cứ thông tin về các dịch vụ web hiện thời, vì vậy
trước hết nó phải ñi tìm dịch vụ web nào phù hợp với yêu cầu. Client sẽ
liên hệ với UDDI registry ñể hỏi về ñiều này.
• UDDI registry sẽ trả lời cho chúng ta biết server nào cung cấp dịch vụ mà
client cần.
• Sau khi biết ñược nơi cung cấp dịch vụ, client cần phải biết cách thức gọi
dịch vụ. Vì thế nó phải hỏi server ñể có ñược mô tả chi tiết cách gọi dịch
vụ.
• Server sẽ trả lời thông qua một ngôn ngữ chung là WSDL.
• Tại bước này client sẽ gửi một SOAP message tới server, yêu cầu nó thực
hiện một phương thức mà server có khả năng cung cấp.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 6
• Sau khi thực hiện xong phương thức, server sẽ gửi kết qủa tới client bằng
một thông ñiệp SOAP response chứa thông tin ñược yêu cầu hoặc thông
báo lỗi trong trường hợp sự cố hoặc yêu cầu sai.
2.1.1.3 Kiến trúc của công nghệ Web Service
Hình 2.1 mô tả kiến trúc của công nghệ Web Service. Trong ñó bao gồm các tầng:
• Tầng vận chuyển với những giao thức chuẩn là HTTP, SMTP và JMS.
• Tầng giao thức tương tác dịch vụ ( Service Communication Protocol) với
giao thức chuẩn SOAP ( Simple Object Access Protocol). SOAP là giao
thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, SOAP
cho phép người dùng triệu gọi một service từ xa thông qua một message
XML. Có thể nói, SOAP là một giao thức giao tiếp có cấu trúc như XML
và mã hóa thành ñịnh dạng chung cho các ứng dụng trao ñổi với nhau.
• Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL
và XML. WSDL(Web Services Description Language) là một ngôn ngữ
dựa trên cú pháp XML dùng ñể mô tả một web service. WSDL như một
file ứng dụng trung gian ñứng giữa web service và web service client.
• Tầng dịch vụ ( Service): cung cấp các chức năng của service.
• Tầng ñăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI
(Universal Description, Discovery and Integration). ðể có thể sử dụng
các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách
sử dụng dịch vụ và biết ñược ñối tượng cung cấp dịch vụ. UDDI ñịnh
nghĩa những thông tin này ñể cho phép các doanh nghiệp (là các client)
tìm kiếm và ñăng ký web service.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 7
• Bên cạnh ñó ñể cho các service có tính an toàn, toàn vẹn và bảo mật
thông tin trong kiến trúc web service chúng ta có thêm các tầng Policy,
Security, Transaction, Management giúp tăng cường tính bảo mật, an
toàn và toàn vẹn thông tin khi sử dụng service.
Hình 2.1 - Kiến trúc của Web Service
2.1.2. Các thành phần chính của Web Service
2.1.2.1 WSDL
2.1.2.1.1. Tổng quát
WSDL là một tài liệu dựa trên cú pháp XML dùng ñể mô tả một web service nó
ñóng vai trò trung gian giữa web service và web service client.
Trong tài liệu WSDL chúng ta sẽ ñịnh nghĩa các phương thức ñược web service hỗ
trợ, các kiểu dữ liệu ñược sử dụng trong các phương thức cùng các thông ñiệp ñược
trao ñổi giữa client và server ứng với mỗi phương thức.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 8
2.1.2.1.2. Cấu trúc tài liệu WSDL
Hình 2.2 - Cấu trúc WSDL
Trong một file WSDL phần tử gốc ñược ñặt tên “definitions”. Phần tử này chứa
năm phần tử con chính ñể ñịnh nghĩa web service:
• Phần tử “types”: ñịnh nghĩa các kiểu dữ liệu dùng ñể trao ñổi giữa client
và server (chỉ ñịnh nghĩa các kiểu dữ liệu phức tạp như structure,
class…).
*
• Phần tử “message”: ñịnh nghĩa các thông ñiệp ñược trao ñổi.
*
<part name="nmtoken" element="qname"?
type="qname"?/> *
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 9
• Phần tử”portType”: ñịnh nghĩa một tập các chức năng web service hỗ trợ
và thông ñiệp tương ứng ñối với mỗi chức năng ñó.
• WSDL ñịnh nghĩa bốn kiểu thao tác mà một cổng có thể hỗ trợ:
o One-way: cổng nhận một message, message ñó là message nhập.
o Request-response: cổng nhận một message và gửi một message
phản hồi.
o Solicit-response: cổng gửi một message và nhận về một message.
o Notification: cổng gửi một message, message ñó là message xuất.
Mỗi kiểu thao tác có cú pháp biến ñổi tùy theo: thứ tự của các
message nhập, xuất và lỗi.
*
• Phần tử “binding”: sau khi ñã ñịnh nghĩa các port, ta cần chỉ rõ ràng buộc
giữa các port này và các giao thức tầng dưới.
• Phần tử “service”: có tác dụng gom các port ñã ñịnh nghĩa thành từng
nhóm.
*
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 10
*
2.1.2.2 SOAP
2.1.2.2.1. Giới thiệu
SOAP (Simple Object Access Protocol) provides a simple and lightweight
mechanism for exchanging structured and typed information between peers in a
decentralized, distributed environment using XML.
2.1.2.2.2. Cấu trúc của một message theo dạng SOAP
SOAP message là một văn bản XML bình thường bao gồm các phần tử sau:
• Phần tử gốc - envelop: phần tử bao trùm nội dung message, expressing
what is in a message; who should deal with it, and whether it is optional
or mandatory.
• Phần tử ñầu trang - header: chứa các thông tin mô tả SOAP message và
thông tin nơi nhận, phần tử này không bắt buộc khai báo trong văn bản.
Nó có thể mang những dữ liệu chứng thực, những chữ ký số hóa, và
thông tin mã hóa…
• Phần tử khai báo nội dung chính trong thông ñiệp - body, chứa các thông
tin yêu cầu và phản hồi.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 11
Hình 2.2 - Cấu trúc của một message theo dạng SOAP
2.1.2.3 UDDI
2.1.2.3.1. Giới thiệu
ðể có thể sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin
về cách sử dụng dịch vụ và biết ñược ñối tượng cung cấp dịch vụ. UDDI ñịnh nghĩa
một số thành phần cho biết trước các thông tin này ñể cho phép các client truyz tìm
và nhận lại những thông tin yêu cầu sử dụng web services.
2.1.2.3.2. Cấu trúc của UDDI
Cấu trúc UDDI gồm các thành phần:
• Trang trắng - White pages: chứa thông tin liên hệ và các ñịnh dạng chính
yếu của web services, chẳng hạn tên giao dịch, ñịa chỉ,… Những thông
tin này cho phép các ñối tượng khác xác ñịnh ñược service.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 12
• Trang vàng - Yellow pages: chứa thông tin mô tả web services theo
những chủng loại khác nhau. Những thông tin này cho phép các ñối
tượng thấy web services theo từng chủng loại của nó.
• Trang xanh - Green pages: chứa thông tin kỹ thuật mô tả các hành vi và
các chức năng của web services. Các ñối tượng dựa vào ñặc ñiểm của
web services ñể tìm kiếm.
2.1.3. Tính bảo mật Web Service
2.1.3.1 Giới thiệu
WS - Security là một chuẩn an toàn bao trùm cho SOAP và cả những phần mở rộng
của SOAP, nó ñược dùng khi muốn xây dựng những web service toàn vẹn và tin
cậy. WS - Security cung cấp nhiều hỗ trợ cho nhiều