Những người sử dụng có thể tiết kiệm thời gian, công sức mà vẫn đảm bảo lợi ích về lãi suất, khả năng thanh toán… Tuy nhiên hệ thống thông tin của các công ty chứng khoán và ngân hàng cò
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Thị Thanh Thủy
NGHIÊN CỨU BẢO MẬT WEB SERVICES
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2010
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Thị Thanh Thủy
NGHIÊN CỨU BẢO MẬT WEB SERVICES
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: Tiến Sỹ Trương Ninh Thuận
Trang 3Lời cám ơn
Trước tiên, em xin gửi lời cảm ơn và biết ơn sâu sắc đến TS Trương Ninh Thuận – Giảng viên bộ môn CNPM – khoa CNTT – ĐH Công Nghệ - ĐHQGHN, người đã tận tình hướng dẫn, chỉ bảo, giúp đỡ em trong suốt thời gian em nghiên cứu khóa luận Và cũng là người đưa ra những ý tưởng, kiểm tra sự phù hợp của luận văn
Em cũng xin gửi lời cảm ơn đến toàn thể các thầy cô trường ĐH Công Nghệ - DHQGHN
đã giảng dạy, và tạo điều kiện cho em trong quá trình học tập và nghiên cứu tại trường Những kiến thức mà chúng em nhận được sẽ là hành trang giúp chúng em vững bước trong tương lai
Cuối cùng, em xin cảm ơn gia đình, bạn bè, người thân đã luôn ở bên để động viên và là nguồn cổ vũ lớn lao, là động lực giúp em hoàn thành luận văn này
Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng có thể Tuy nhiên sẽ không tránh khỏi những thiếu sót Em rất mong nhận được sự cảm thông và tận tình chỉ bảo của quí thầy cô và toàn thể các bạn
Hà Nội, tháng 5 năm 2010
Sinh viên Nguyễn Thị Thanh Thuỷ
Tóm tắt nội dung
Ngày nay công nghệ thông tin đang là nền công nghệ mũi nhọn trong chiến lược phát triển kinh
tế, xây dựng đất nước của hầu hết các quốc gia Các sản phẩm công nghệ thông tin đã và đang
Trang 4được ứng dụng rộng rãi trong mọi lĩnh vực của đời sống kinh tế, xã hội và hầu hết đều đem đến những giá trị thiết thực Đối tượng phục vụ chủ yếu của ngành công nghệ thông tin hiện nay chính là các tổ chức, câc cơ sở doanh nghiệp…
Bảo mật luôn luôn là một vấn đề hàng đầu cho tất cả các loại ứng dụng, đặc biệt là các ứng dụng
web Từ những ngày đầu của Internet người ta đã quan tâm đến tính an toàn trong trao đổi thông
tin Tuy không có sự an toàn tuyệt đối nhưng những phát triển trong lĩnh vực này thì rất nhanh và mang lại nhiều thành quả vì đây là vấn đề cấp bách của nhiều doanh nghiệp Không có một mức
an toàn thích hợp, sự khai thác thương mại của Internet thì không hoàn toàn an toàn Do đó những giải thuật để kiểm chứng, sự mã hóa khóa thông tin, và chữ ký số hóa có thể là những giải pháp cung cấp một mức đủ an toàn
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 Thật khó tin tưởng để sử dụng một business service như- mua chứng khoán hay chuyển tiền trực tuyến mà lại không có một sự an toàn cần thiết
Luận văn tập trung đi sâu vào nghiên cứu, tìm hiểu về công nghệ web services và các vấn đề bảo mật liên quan và sử dụng chúng để giải quyết bài toán “Kết nối ngân hàng với công ty chứng khoán” một cách an toàn, hiệu quả, nhằm tạo điều kiện thuận lợi cho việc giao dịch chứng khoán
và giúp cho các thông tin được minh bạch
Danh mục ký hiệu, từ viết tắt
Trang 5HTML HyperText Markup Language
Danh mục bảng và hình vẽ
Trang 6Hình 3.1 Mô hình Web Service 23
Hình 3.4 Tương tác giữa các thành phần web service 26
Hình 3.9 Mô hình tương tác giữa các thành phần 34
Hình3.11 Cấu trúc của một tài liệu được mô tả bởi XML 35 Hình 3.12 Cấu trúc và hoạt động của một web service đơn giản 40 Hình 4.1 Cấu trúc của giao thức bảo mật SSL 40
Bảng 4.1 Các số cổng được gán cho các giao thức ứng dụng chạy trên
TLS/SSL
43
Trang 7Bảng 4.2 Các thành phần thông tin trạng thái Session SSL 44 Bảng 4.3 Các thành phần thông tin trạng thái nối kết SSL 44
Mục lục
Lời cám ơn 3
Tóm tắt nội dung 3
Danh mục ký hiệu, từ viết tắt 4
Danh mục bảng và hình vẽ 5
Mục lục 7
Trang 8CHƯƠNG 1: Mở đầu 11
1.1 Đặt vấn đề 11
1.2 Nội dung bài toán 12
1.3 Kết quả đạt được 13
1.4 Cấu trúc khóa luận 13
CHƯƠNG 2 :Kiến trúc dịch vụ hướng đối tượng SOA 14
1 Định nghĩa kiến trúc hướng dịch vụ SOA 15
2 Tính chất của một hệ thống sử dụng SOA 17
2.2 Tính sử dụng lại dịch vụ 17
2.3 Sử dụng dịch vụ bất đồng bộ 17
2.4 Quản lý các chính sách 18
2.5 Khả năng cộng tác 18
2.6 Tự động dò tìm và ràng buộc động 18
2.7 Tự phục hồi 18
3 Lợi ích khi sử dụng SOA 18
4 Kết luận 19
CHƯƠNG 3 : Web Service 20
3.1 Service 20
3.1.1 Định nghĩa 20
3.1.2 Đặc điểm service 21
3.2 Web service 22
Trang 93.2.1 Định nghĩa 22
3.2.2 Cấu trúc web service 24
3.2.3 Các đặc điểm của web service 25
3.2.4 Các thành phần của web service 26
3.2.4.1 WSDL (Web Services Description Language) 26
3.2.4.2 UDDI (Universal Description, Discovery and Integration) 29
3.2.4.3 SOAP (Simple Object Access Protocol) 29
3.2.4.4 XML (eXtensible Markup language) 33
3.2.5 Hoạt động của Web services 34
3.3 SOA và dịch vụ web 35
CHƯƠNG 4 : Các kỹ thuật đảm bảo an ninh dịch vụ web 37
4.1 Các vấn đề bảo mật cần quan tâm 37
4.1.1 Những hạn chế của tường lửa 37
4.1.2 Cơ chế bảo mật chưa được định nghĩa một các đầy đủ 37
4.1.4 Bảo mật trong qui trình phối hợp hoạt động của các WS 38
4.2 Giao thức bảo mật SSL 38
4.2.1 Cấu trúc giao thức bảo mật SSL 38
4.2.2 SSL Record Protocol 45
4.2.3 SSL Handshake Protocol 47
4.3 Khai thác tính năng bảo mật của bộ thư viện Web Service Enhancement (WSE) 53
4.3.1 Những tính năng bảo mật web service của wse 54
Trang 104.3.2 Thư viện WSE Error! Bookmark not defined
a UsernameToken Authentication: Error! Bookmark not defined
b Chứng nhận X.509 Error! Bookmark not defined
4.3.3 Hô trợ policy 55
4.3.4 Kiến trúc của wse Error! Bookmark not defined CHƯƠNG 5 : Xây dựng chương trình và đánh giá kết quả .56
5.1 Mô tả hệ thống cần xây dựng 57
5.2 Triển khai hệ thống 57
5.2.1 Lựa chọn ngôn ngữ lập trình 57
5.2.2 Hoạt động của hệ thống 58
5.2.2.2 Đăng nhập 58
5.2.2.3 Đăng ký tài khoản mới 59
5.2.3.4 Thực hiện giao dịch 60
5.3 Tích hợp các thẻ bảo mật cho chương trình với công cụ WSE 61
5.3.1 Sử dụng công cụ WSE từ bên trong Visual Studio 2005 Error! Bookmark not defined 5.3.2 Sử dụng công cụ WSE từ menu start Error! Bookmark not defined CHƯƠNG 6 : Kết luận 77
Tài liệu tham khảo 80
Trang 12vẫn giữ toàn bộ số tiền của nhà đầu tư Công việc này làm mất nhiều thời gian công sức, không đảm bảo sự an toàn cho nhà đầu tư và không mang tính chuyên nghiệp
Các doanh nghiệp đang hướng tới một hoạt động kinh doanh chứng khoán mà trong đó tất cả các hoạt động của nhà đầu tư, doanh nghiệp, ngân hàng đều được thực hiện thông qua Internet Và cũng hiện nay cũng đã có một số hệ thống phần mềm kinh doanh chứng khoán Tuy hoạt động chưa hiệu quả và vẫn còn gặp phải nhiều khó khăn nhưng điều đó cũng nói nên một nền tài chính không tiền mặt Những người sử dụng có thể tiết kiệm thời gian, công sức mà vẫn đảm bảo lợi ích về lãi suất, khả năng thanh toán…
Tuy nhiên hệ thống thông tin của các công ty chứng khoán và ngân hàng còn quá nhiều khác biệt
và chưa kết nối được với nhau Vấn đề này gây ra nhiều khó khăn và có thể dẫn đến bỏ lỡ cơ hội của nhà đầu tư Mặt khác công ty chứng khoán phải đảm bảo kết nối với nhiều ngân hàng cùng một lúc vì mỗi nhà đầu tư chọn cho mình một ngân hàng khác nhau Tương tự ngân hàng cũng muốn kết nối với nhiều công ty chứng khoán để mở rộng mạng lưới của mình
Khi đưa mọi hoạt động giao dịch lên mạng internet, một điều lo ngại đối với nhà đầu tư, công ty chứng khoán hay ngân hàng là các thông tin cá nhân của họ có được bảo mật một cách chặt chẽ
và có chắc chắn rằng chúng sẽ không bị tấn công bởi cách hacker… Khi nhà đầu tư mở một tài khoản chứng khoán hoặc tài khoản ngân hàng họ sẽ được cung cấp username/password hay mã chứng khoán, mã ngân hàng Vấn đề bài toán đặt ra là làm thế nào để nhứng thông tin đó được trao đổi giữa 2 bên một cách an toàn mà không bị tấn công
Bài toán đặt ra là đưa ra một giải pháp kết nối giữa nhà đầu tư – công ty chứng khoán – ngân hàng Các giao dịch được thực hiện trực tiếp trên mạng mà vẫn đảm bảo an toàn cho các bên?
Để làm giảm độ phức tạp do những khó khăn trên bài toán được giải quyết, tôi chọn một hệ thống đơn giản chỉ cung cấp những thông tin đơn giản như thông tin cổ phiếu, thông tin tài khoản của nhà đầu tư, số dư trong tài khoản ngân hàng…
Khi một nhà đầu tư mở tài khoản chứng khoán có thể được cung cấp luôn tài khoản ngân hàng Dịch vụ của công ty chứng khoán sẽ cung cấp thông tin về tài khoản của nhà đầu tư Sau khi submit để hoàn thành việc đăng ký, username và password của nhà đầu tư sẽ được gửi đến email đăng ký Thông tin về tài khoản ngân hàng của nhà đầu tư số dư trong tài khoản cũng được hiển thị
Trang 13Khi khách hàng muốn thực hiện một giao dịch, trước tiên cần đăng nhập vào hệ thống Khách hàng sẽ nhập username/password và submit để gửi đến hệ thống của công ty chứng khoán Sau khi đăng nhập khách hàng có thể thực hiện giao dịch mua/bán bằng tài khoản chứng khoán và tài khoản ngân hàng của mình, các thông điệp giữa khách hàng – công ty chứng khoán và nhà đầu
tư được trao đổi qua lại Nếu không có phương pháp bảo mật an toàn, các thông điệp này có thể
dễ dàng bị đánh cắp bởi những phương pháp tấn công và dẫn đến thiệt hại cho các bên giao dịch
Để đáp ứng được các yêu cầu của bài toán đặt ra, đặc biệt là toàn bộ các giao dịch đều được đảm bảo chính xác, an toàn cho các bên tham gia sẽ không thể không sử dụng tới các kiến thức trong lĩnh vực Công nghệ thông tin Có rất nhiều công cụ bảo mật cho web service như công nghệ bảo mật SSL và các thành phần của nó, giao thức HTTP, các chứng chỉ số… Trong luận văn này, tôi tập trung đi sâu vào nghiên cứu bảo mật web service theo công nghệ SSL, giao thức HTTP và đặc biệt là sử dụng bộ thư viện Web Service Enhencement (WSE) của NET Framework Microsoft Web services giao tiếp thông qua các message SOAP WSE cung cấp những mở rộng của giao thức SOAP và cho phép người dùng tự định nghĩa bảo mật, truyền message đáng tin cậy, chính sách Các nhà phát triển có thể thêm vào những kỹ thuật này trong quá trình xây dựng (dùng code) hoặc trong quá trình triển khai (policy file)
- Nghiên cứu về các vấn đề: công nghệ web services, kiến trúc hướng dịch vụ SOA, các kỹ thuật đảm bảo an ninh web services đặc biệt là cấu trúc giao thức SSL, HTTP, bộ thư viện WSE và các đặc điểm của nó
- Phát triển chương trình “giao dịch chứng khoán thông qua tài khoản ngân hàng” Triển khai
hệ thống và tích hợp các kỹ thuật đảm bảo an toàn cho hệ thống
1.4 Cấu trúc khóa luận
Nội dung luận văn bao gồm các chương sau:
Chương 1: Giới thiệu
Mô tả chung về bài toán, hướng giải quyết và các kết quả đạt được sau một thời gian nghiên cứu
Chương 2: Kiến trúc hướng dịch vụ SOA
Giới thiệu về kiến trúc SOA một phương pháp tiếp cận công nghệ thông tin khá phổ biến Trong chương này tôi đưa ra những kiến thức cơ bản về mô hình kiến trúc hướng dịch vụ Các định
Trang 14nghĩa, cấu trúc của kiến trúc hướng dịch vụ, những đặc điểm và lợi ích của nó trong việc xây dựng một web service và kết hợp chúng theo chuẩn
Chương 3: Web services
Chương này sẽ đi sâu vào tìm hiểu chi tiết về web service, các đặc điểm cũng như đặc tả các thành phần của nó như WSDL, SOAP, XML, UDDI … và phần cuối chương là mối quan hệ giữa kiến trúc hướng dịch vụ SOA và Web service
Chương 4: Các kỹ thuật đảm bảo an ninh Web Service
Trong chương này đưa ra tình trạng an ninh của web service hiện nay Tiếp theo cũng trình bày
về các kỹ thuật đảm bảo an ninh như công nghệ bảo mật SSL và đặc biệt là khai thác tính năng của bộ thư viện Web Service Enhancement (WSE) của NET Framework
Chương 5: Xây dựng, triển khai hệ thống và đánh giá kết quả
Chạy demo chương trình chứng khoán giải quyết vấn đề “kết nối chứng khoán với ngân hàng” Phần trọng tâm trong chương này là kết hợp các thẻ security của bộ thư viện WSE vào Web Service
Chương 6: Kết luận và hướng phát triển trong tương lai
Trang 15xây dựng và triển khai nhằm giải quyết vấn đề này Tuy nhiên độ phức tạp vẫn tiếp tục tăng và càng khó khăn hơn khi vấn đề lập trình dư thừa và không thể tái sử dụng Tích hợp các phần mềm lại với nhau là nhu cầu thiết yếu cho tình trạng phát triển phần mềm hiện nay, và làm thế nào để tạo ra được một phần mềm với chi phí thấp, chất lượng tốt, dễ sử dụng và dễ bảo trì là một vấn đề mà nhiều nhà phát triển đã và đang hướng tới
Các kiến trúc hiện đang được áp dụng vào phát triển phần mềm vẫn còn nhiều khó khăn như không linh hoạt, không bền vững, phức tạp…vì vậy các doanh nghiệp cần có một phương pháp tiếp cận mớ với kiến trúc hướng dịch vụ và những công nghệ mới như SOAP, HTTP, và XML sẽ giải quyết được những khó khăn mà hiện các doanh nghiệp đang vấp phải Trong chương này tôi
sẽ giới thiệu một cách tiếp cận khá toàn diện đó là kiến trúc hướng dịch vụ SOA Giải pháp này bước đầu đã được ứng dụng trong một số dự án và đều đem lại những kết quả khả quan Và người ta tin rằng SOA có thể sẽ là “xu thế trong tương lai” Và sau đây chúng ta sẽ đi vào nghiên cứu chi tiết
1 Định nghĩa kiến trúc hướng dịch vụ SOA
SOA viết tắt của cụm từ Service Oriented Architecture là cấu trúc hướng dịch vụ
Theo định nghĩa của IBM: “SOA is an architectural style for creating an Enterprise IT Architecture that exploits the principle of server orientation to achieve a tiglter relationship between the business and the information systems that support the business…”[1]
Theo đó SOA là phong cách kiến trúc để tạo ra một công trình kiến trúc IT, kiến trúc đó khai thác các nguyên tắc của hướng dịch vụ để đạt được các mối quan hệ chặt chẽ giữa doanh nghiệp
và hệ thống thông tin nhằm hỗ trợ cho các doanh nghiệp
Theo một định nghĩa khác: “SOA is an approach to IT that builds business processes from reusable component modules or “services” that are independent of applications and the computing platforms on which they run.”[2]
SOA là phương pháp tiếp cận công nghệ thông tin nhằm xây dựng các tiến trình nghiệp vụ từ những thành phần mô hình có sẵn hoặc các dịch vụ mà đối lập với các ứng dụng và các thành phần nền của máy tính như phần cứng hay môi trường lập trình mà nó chạy
Trang 16Một hệ thống được xây dựng theo mô hình SOA bao gồm các service thỏa mãn các tính chất của service Mỗi service trong hệ thống có thể được sửa đổi một cách độc lập với các service khác nhằm mục đích đáp ứng một yêu cầu mới từ thực tế
SOA có 3 đối tượng chính
- Service Provider: Cung cấp thông tin về dịch vụ cho một nhu cầu nào đó Người sử dụng
không cần quan tâm đến vị trí thực sự mà service họ cần sử dụng đang hoạt động Nhà cung cấp dịch vụ ở đây là một dịch vụ chấp nhận và xử lý những yêu cầu từ người sử dụng dịch vụ Nó có thể là một hệ thống mainframe Một thành phần hoặc các dạng phần mềm khác xử lý yêu cầu dịch vụ Nhà cung cấp gửi hợp đồng lên service registry để những người sử dụng dịch vụ có thể truy cập đến nó
- Service Consumer: Người sử dụng service được cung cấp bởi Service Provider Có thể là một
ứng dụng, một dịch vụ hoặc là các module phần mềm khác yêu cầu sử dụng dịch vụ Đây là thực thể thực thi quá trình dịch vụ thông qua service registry, liên kết với dịch vụ và thực thi các chức năng của dịch vụ Người sử dụng dịch vụ thực thi chức năng dịch vụ bằng cách gửi một yêu cầu đúng định dạng mô tả trong hợp đồng
- Service Regiestry: Nơi lưu trữ thông tin về các service của các service Provider khác nhau
Service registry chấp nhận và lưu trữ các hợp đồng không gửi đến từ nhà cung cấp dịch vụ và cung cấp hợp đồng tùy theo yêu cầu của người sử dụng Service Consumer dựa trên những thông tin này để tìm kiếm và lựa chọn Service Provider phù hợp
Trang 17Hình 2.1: Sơ đồ cộng tác SOA
Service Provider sẽ đăng ký thông tin về service mà mình có thể cung cấp (các chức năng có thể cung cấp, khả năng của hệ thống như resource, performance, giá cả dịch vụ…) vào Service Registry Service Consumer khi có nhu cầu về một service nào đó sẽ tìm kiếm thông tin trên service registry Ngoài chức năng hỗ trợ tìm kiếm, Service Registry còn có thể xếp hạng các Service Provider dựa trên các tiêu chí về chất lượng dịch vụ, bầu chọn từ các khách hàng đã sử dụng service, … Những thông tin này sẽ hỗ trợ thêm cho quá trình tìm kiếm của Service Consumer Khi đã xác định được Service Provider mong muốn, Service Consumer thiết lập kênh giao tiếp trực tiếp với Service Provider nhằm sử dụng service hoặc tiến hành thương lượng thêm (về mặt giá cả, resource sử dụng…)
2 Tính chất của một hệ thống sử dụng SOA
2.1 Tính loose coupling 1
SOA hỗ trợ tính loose coupling thông qua việc sử dụng hợp đồng và liên kết Một người dùng truy vẫn đến nơi lưu trữ và cung cấp thông tin dịch vụ để lấy thông tin về loại dịch vụ cần sử dụng Registry sẽ trả về tất cả những dịch vụ theo tiêu chuẩn tìm kiếm Theo đó, người sử dụng chỉ việc chọn dịch vụ mà mình cần, và thực thi phương thức trên đó theo mô tả dịch vụ nhận được từ registry Bên sử dụng dịch vụ không cần phụ thuộc trực tiếp vào cài đặt của dịch vụ mà chỉ dựa trên hợp đồng mà dịch vụ đó hỗ trợ
2.2 Tính sử dụng lại dịch vụ
Vì các dịch vụ được cung cấp lên trên mạng và được đăng ký ở một nơi nhất định nên chúng dễ dàng được tìm thấy và tái sử dụng Nếu một dịch vụ không có khả năng tái sử dụng, nó cũng không cần đến interface mô tả Các dịch vụ có thể được tái sử dụng lại bằng cách kết hợp lại với nhau theo nhiều mục đích khác nhau Tái sử dụng lại các dịch vụ còn giúp loại bỏ những thành phần trùng lặp và tăng độ vững chắc trong cài đặt, nó còn giúp đơn giản hóa việc quản trị Thực
ra tái sử dụng dịch vụ lại dễ dàng hơn tái sử dụng thành tố hay lớp Những dịch vụ dùng chung
bởi tất cả các ứng dụng của một hệ thống SOA gọi là những share infrastructure service
2.3 Sử dụng dịch vụ bất đồng bộ
Trên lý thuyết một hệ thống SOA có thể hỗ trợ gửi và nhận cả thông điệp đồng bộ và bất đồng
bộ
Trang 182.4 Quản lý các chính sách
Khi sử dụng các dịch vụ chia sẻ trên mạng, tùy theo mỗi ứng dụng sẽ có một luật kết hợp riêng gọi là các policy Các policy cần được quản lý các áp dụng cho mỗi dịch vụ cả khi thiết kế lẫn khi trong thời gian thực thi
2.5 Khả năng cộng tác
Kiến trúc hướng dịch vụ nhấn mạnh đến khả năng cộng tác, khả năng mà hệ thống có thể giao tiếp với nhau trên nhiều nền tảng và ngôn ngữ khác nhau Mỗi dịch vụ cung cấp một interface có thể được triệu gọi thông qua một dạng kết nối Một kết nối được gọi là một interoperable chứa bên trong nó một giao thức và một định dạng dữ liệu mà mỗi client kết nối đến nó đều hiểu
bị lỗi
3 Lợi ích khi sử dụng SOA
Nói đến SOA là nói đến “tiết kiệm” – cả tiết kiệm chi phí lẫn thu được giá trị nhiều hơn từ các hệ thống có sẵn Sử dụng mô hình SOA trong việc thiết kế hệ thống mang lại lợi ích về mặt kinh tế cũng như kỹ thuật
- Lợi ích từ việc tái sử dụng
Một trong những lợi ích rõ ràng nhất của SOA là nó giúp các công ty thu được giá trị bằng việc tái sử dụng lại những tài nguyên có sẵn Thông qua việc tái sử dụng này có thể tiết kiệm chi phí cho phần kiến trúc và tích hợp, không những thế nó còn giảm chi phí mua phần mềm mới Thời gian viết chương trình lấy dữ liệu từ máy chỉ cũng giảm rất nhiều.Thông thường những nhóm
Trang 19phần mềm được phát triển trên nhiều nền tảng khác nhau, sử dụng nhiều ngôn ngữ lập trình khác nhau và thường có nhiều tính năng lặp lại giữa chúng Sử dụng hệ thống SOA cho phép các công
ty tránh khỏi tình trạng lặp dư thừa, tạo ra những đơn thể dịch vụ chia sẻ giữa các ứng dụng
Trong một hệ thống SOA, chỉ cần thay đổi duy nhất một phiên bản của dịch vụ cần được thay đổi và chỉ cần kiểm thử một lần, sử dụng những kỹ năng tương ứng với những ký năng đã dùng
để phát triển dịch vụ -> giảm chi phí bảo trì phần mềm Ngoài ra còn giúp doanh nghiệp chịu trách nhiệm nhiều hơn với những thay đổi về mặt nghiệp vụ và cho phép doanh nghiệp cập nhật những tính năng của nó nhanh hơn
Ngoài ra sử dụng những thành phần có sẵn trước đó mỗi khi có thể thì mỗi khi có lỗi xảy ra ta có thể giới hạn vào khu vực có những thành phần đang được phát triển Nhờ đó rủi ro về lỗi phần mềm giảm đi và tăng chất lượng dịch vụ
Trang 20Chương này trình cơ sở lý thuyết của mô hình SOA, bao gồm: khái niệm, cấu trúc, các tính năng
và lợi ích của nó trong việc xây dựng một web service và kết hợp theo chuẩn Ứng dụng khi xây dựng kiến trúc bảo mật hướng dịch vụ Thông qua đây chúng ta cũng biết được kiên trúc hướng dịch vụ thật sự đem lại những lợi ích to lớn Và cung cấp những kiến thức cơ bản về SOA để phục vụ cho phần sau SOA và Web Service giải quyết vấn đề tích hợp như thế nào
CHƯƠNG 3 Web Service
3.1 Service
3.1.1 Định nghĩa
Theo định nghĩa IBM
“service is a repeatable task within a business process…”[3]
Service là một ứng dụng với user, một thao tác được thực hiện một hoặc nhiều lần trong một tiến trình nghiệp vụ được thực hiện bởi một người hoặc một nhóm người
Service là một hệ thống có khả năng nhận một hay nhiều yêu cầu xử lý và sau đó đáp ứng lại bằng cách trả về một hay nhiều kết quả Quá trình nhận yêu cầu và trả kết quả được thực hiện
Trang 21thông qua các interface đã được định nghĩa trước đó Thông thường, việc giao tiếp này được thực hiện trên các interface đã được chuẩn hóa và sử dụng rộng rãi
Một tiến trình gồm nhiều services và nhiều tiến trình hợp lại thành một service hay cũng có thể nói một service có thể bao gốm nhiều services khác Ví dụ: Thư điện tử là một service
Có nhiều loại dịch vụ khác nhau, có những dịch vụ chỉ mang tính chất công cộng cho phép người
ở xa truy nhập thông tin qua mạng, cũng có loại dịch vụ mang tính chất local và giới hạn người
sử dụng
Ví dụ đơn giản về một service chính là hoạt động của một nhà hàng Khi khách hàng vào nhà hàng và gọi thức ăn, khách hàng đang tiền hành gởi các yêu cầu của khách hàng, nếu món ăn khách hàng yêu cầu nhà hàng không có hoặc đã hết, nhân viên nhà hàng sẽ từ chối hoặc đề nghị khách hàng gọi món khác Nếu nhà hàng có thể đáp ứng được yêu cầu của khách, món ăn sẽ được chế biến và mang ra cho khách hàng muốn thưởng thức, còn kết quả trả về của service phục vụ nhà hàng chính là từ chối hay là món ăn mà khách hàng không cần [4]
3.1.2 Đặc điểm service
Có ranh giới rõ ràng: Mỗi service được xây dựng dựa trên các interface chuẩn hòa đã được
sử dụng rộng rãi Chi tiết thực hiện của mỗi service sẽ không được thể hiện ra bên ngoài Mỗi service chỉ công bố một số các interface của nó cho user có thể dùng để gởi các yêu cầu và nhận kết quả trả về
Tính tự trị (autonomous): Mỗi service có tính độc lập cao, có thể được xây dựng và đưa vào
sử dụng mà không phụ thuộc vào các service khác
Về mặt trao đổi dữ liệu, các service không truyền các class và type Thay vào đó, các class và type sẽ được đặc tả hình thức
Sự tương thích giữa các service được căn cứ vào các policy Tương thích về mặt cấu trúc dựa trên các đặc tả hình thức bao gồm contract dựa trên WSDL hoặc Businesss Process Execution Language for Web Services
Trang 223.2 Web service
3.2.1 Định nghĩa
Là một hệ thống phần mềm được thiết kế nhằm hỗ trợ khả năng tương tác giữa các máy tính hoặc với các thiết bị khác thông qua mạng Một WS được xác định bằng địa chỉ URL(Uniform Resource Locator) thực hiện các chức năng và đưa ra thông tin người dùng yêu cầu Nó có thể cung cấp các chức năng khác nhau từ cơ bản nhất đến những nghiệp vụ phức tạp hay những qui trình khoa học
Hình 3.1: Mô hình Web Service
WS sử dụng nền tảng là ngôn ngữ XML(extensible makup language) cho việc trao đổi dữ liệu Các hệ thống tương tác với WS theo một phương pháp qui định bằng cách sử dụng các thông điệp SOAP(Simple Object Acess Protocol) sử dụng giao thức HTTP Và mô hình đặc thù của
WS là mô hình client-server WS được đặc tả sử dụng các chuẩn WSDL, UDDI, SOAP, W3C
Trang 23Giao diện của nó được mô tả trong một khuân mẫu khả năng xử lý máy (tiêu biểu là WSDL) Giao diện này được gọi là giao diện “dịch vụ” Nó giúp WS có thể được gọi bởi bất kì một ứng dụng nào hay bởi 1 WS nào khác
Hình 3.2: Kiến trúc của Web Serice
Trang 243.2.2 Cấu trúc web service
Hình 3.3: Web service protocol stack
Hình 3.3 mô tả các layer hình thành nên Web Service Trong đó:
Service Provider: Dùng WSDL để mô tả dịch vụ mà mình có thể cung cấp cho Service Broker
(tương tự Service Registry trong SOA)
Service Broker: Lưu trữ thông tin về các service được cung cấp bởi các Service Provider Cung
cấp chức năng tìm kiếm hỗ trợ Service Requester (Service Consumer trong SOA) trong việc xác định Service Provider phù hợp Thành phần chính của Service Broker là UDDI
Service Requester: Dùng WSDL để đặc tả nhu cầu sử dụng(loại service, thời gian sử dụng,
resource cần thiết, mức giá…) và gởi cho Service Broker Bằng việc sử dụng UDDI và chức năng tìm kiếm của Service Broker, Service Requester có thể tìm thấy Service Provider thích hợp Ngay sau đó, giữa Service Requester và Service Provider thiết lập kênh giao tiếp sử dụng SOAP
để thương lượng giá cả và các yếu tố khác trong việc sử dụng service
Trang 25Hình 3.4: Tương tác giữa các thành phần web service
3.2.3 Các đặc điểm của web service
Web services được truy xuất thông qua Web bằng cách dùng địa chỉ URL
Web services liên lạc với thế giới bên ngoài dùng thông điệp XML được gửi trực tiếp qua
Web protocols Giao tiếp với người dung bằng những phương thức mở
Web services được đăng kí tại nơi chung và được đặc tả tất cả các chức năng
Có độ an toàn riêng tư
Web Service cho phép client tương tác với server ngay cả trong những môi trường khác nhau Và nó cũng đóng vai trò như là một thiết bị có thể “giao tiếp” với các Web service khác mà không cần quan tâm đến các yêu cầu bên trong Ví dụ, đặt web server trên một máy chủ chạy hệ điều hành Linux trong khi người sử dụng để máy tính chạy hệ điều hành windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc
biệt để tương thích giữa hai hệ điều hành
Phần lớn các web services được xây dựng dựa trên mã nguồn mở và được phát triển từ các
chuẩn được công nhận, ví dụ như XML
Trang 26 Một WS bao gồm nhiều module và có thể công bố trên mạng Internet
3.2.4 Các thành phần của web service
Web service là một tập các chuẩn đặc tả mở rộng khả năng của các chuẩn có sẵn như XML, URL, HTTP, nhằm cung cấp chuẩn truyền thông giữa các hệ thống với nhau Web services là những thành phần thực thi một số xử lý nghiệp vụ thông qua những dịch vụ và cung cấp những dịch vụ qua mạng, những dịch vụ này có thể được triệu gọi bởi các dịch vụ client bằng cách sử dụng giao thức SOAP trên HTTP Web service độc lập về ngôn ngữ và độc lập về nền tảng bởi
vì nó tách biệt đặc tả ra khỏi cài đặt; nó còn hỗ trợ tích hợp loose coupling giữa các ứng dụng với nhau qua trao đổi các thông điệp đồng bộ và bất đồng bộ thông Web services dựa trên kiến trúc phân tán trong đó không có bất kì dịch vụ xử lý trung tâm nào và tất cả dạng truyền thông đều sử dụng các giao thức chuẩn Các giao thức không được có bất kỳ ý nghĩa ngầm định nào bên trong
mà phải được mô tả rõ ràng
Hình 3.5: Các thành phần web service
3.2.4.1 WSDL (Web Services Description Language)
Ngôn ngữ đặc tả dịch Web Service, Ngôn ngữ này cơ bản dựa trên XML, khi tương tác các dịch
vụ với nhau ta tương tác file WSDL của chúng Một client có thể đọc WSDL để xác định những chức năng có sẵn trên server, sau đó client có thể sử dụng SOAP để lấy ra những chức năng chính xác có trong WSDL
Cấu trúc chính của một tài liệu WSDL như sau:
Trang 27Hình 3.6: Cấu trúc WSDL
- Service: Chứa các method có thể được sử dụng thông qua các web protocol
- Ports: Địa chỉ dùng để kết nối đến WS Thông thường, ports được mô tả bằng một HTTP URL
- <type>: xác định kiểu dữ liệu mà được sử dụng đặc tả WS
<message name="nmtoken"> *
<part name="nmtoken" element="qname"? type="qname"?/> *
Trang 28- Element: Được định nghĩa trong Types Mỗi element có một tên duy nhất và kiểu dữ liệu Element được dùng để đặc tả dữ liệu dùng trong message Element có thể đặc tả các dữ liệu đơn giản như string, integer hay phức tạp hơn như array, truct…
- XSD file: Các element thường được định nghĩa trong các XML Schema Definition XSD file
có thể ở trong cùng file WSDL hoặc ở file riêng biệt
Mô tả cách nhận và gửi thông điệp, là một phần tử quan trọng trong WSDL Phần tử có thể được so sánh như chức năng thư viện(hay một module, class) trong các ngôn ngữ lập trình
WSDL định nghĩa 4 kiểu thao tác mà một cổng có thể hỗ trợ:
- One-way: cổng nhận một message, message đó là message nhập
- Request – response: cổng nhận một message và gửi một message phản hồi
- Solicit-response: Cổng gửi một message và gửi về một message
- 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
Trang 293.2.4.2 UDDI (Universal Description, Discovery and Integration)
Làm thế nào để một client sử dụng được một web service?
Để có thể sử dụng được 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 và biết được đối tượng nào cung cấp dịch vụ UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng Web Service Nhiệm vụ chính của nó chính là tìm đúng dịch vụ đang cần và định nghĩa các kích hoạt dịch vụ Các client sẽ tìm kiếm, ghi nhận thông tin thông qua việc truy cập đến UDDI
UDDI giao tiếp thông qua SOAP và được xây dựng trên nền Microsoft.NET
UDDI sử dụng W3C (World Wide Web Consortium) và IETF (Internet Engineering Task Force)
sử dụng các chuẩn Internet như XML, HTTP, và phương thức DNS UDDI sử dụng WSDL để
mô tả giao diện đến web services
Trước UDDI chưa có chuẩn Internet nào cho các nhà doanh nghiệp tiếp cận khách hàng của họ với các thông tin về sản phẩm và dịch vụ của họ và cũng chưa có phương thức nào tích hợp các
hệ thống khác nhau vào UDDI giải quyết một số vấn đề như: Tìm kiếm ra hàng triệu người hiện đang online (có thể giúp một doanh nghiệp phát triển tốt), xác định hướng phát triển khi một tính năng thương mại được phát hiện, tiếp cận khách hàng mới và tăng lượng khách hàng hiện tại
Mở rộng thị trường
3.2.4.3 SOAP (Simple Object Access Protocol)
Là giao thức triệu gọi các đối tượng dựa trên nền giao thức HTTP và ngôn ngữ XML Các đối tượng được cài đặt và chạy trên một web service nào đó trên Internet Chúng ta lập trình và gọi phương thức, thuộc tính của nó trên chương trình và máy tính của chúng ta Có khả năng tích hợp các chương trình trên Internet SOAP định nghĩa cơ chế giao tiếp giữa các đối tượng thông qua 2 bước: SOAP request và SOAP response
SOAP = XML + Một giao thức có thể hoạt động trên Internet (HTTP, FTP, SMTP) trong đó HTTP phổ biến hơn cả
Trang 30Hình 3.7: Trao đổi thông điệp SOAP
Thông điệp theo định dạng XML bình thường gồm các phần như hình sau:
Hình 3.8: Cấu trúc của thông điệp SOAP
- SOAP envelope: Phần tử gốc bao trùm nội dung thông điệp, khai báo văn bản XML như một thông điệp SOAP
Trang 31- Xmlns: soap namespace Thường có giá trị “url/soap-envelope” Không gian tên xác định Envelope như là một SOAP Envelope Nếu một không gian tên khác nhau được sử dụng, ứng dụng sẽ phát sinh ra lỗi và loại bỏ thông điệp
Encoding Style là thuộc tính được sử dụng để xác định kiểu dữ liệu được sử dụng trong văn bản Thuộc tính này có thể được xuất hiện trong bất kì phần nào của thông điệp Cú pháp chuẩn : soap:encodingStyle=”URL”
- Header: Phần tử đầu trang, chứa các tiêu đề cho trang Nó có thể được khai báo hoặc không được khai báo và có thể mang những chữ kí số, thông tin mã hóa hay cài đặt cho giao dịch khác Nếu khai báo phần Header trong thông điệp, nó phải là phần tử con đầu tiên của phần
- Body: Chứa các thông tin yêu cầu và thông tin phản hồi
Trang 32- Fault: Đưa ra thông tin về các lỗi xảy ra trong quá trình truyền thông điệp Nếu có một lỗi xảy ra, nó phải nằm trong phần Body Một lỗi có thể chỉ xuất hiện một lần trong thông điệp SOAP Một SOAP đơn giản trong body sẽ lưu thông tin về các thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số Có 3 kiểu thông báo sẽ được đư ra khi truyền tin: request message (tham số gọi thực thi một thông điệp), response message (tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi)
Một số đặc điểm của SOAP:
- Khả năng mở rộng (extensible): Cung cấp khả năng mở rộng phục vụ cho nhu cầu đặc thù của ứng dụng và nhà cung cấp Các chức năng về bảo mậ, tăng độ tin cậy có thể đưa vào phần mở rộng của SOAP Các nhà cung cấp dịch vụ khác nhau, tùy vào đặc điểm hệ thống của mình có thể định nghĩa them các chức năng mở rộng nhằm tăng thêm lợi thế cạnh tranh cũng như cung cấp thêm tiện ích cho người sử dụng
- Có thể hoạt động dựa trên các network protocol đã được chuẩn hóa (HTTP, SMTP, FTP, TCP,…)
- Độc lập với platform, ngôn ngữ lập trình hay programming model được sử dụng
Hình 3.9: Mô hình tương tác giữa các thành phần
Tóm lại SOAP, WSDL, UDDI có thể kết hợp với nhau theo sơ đồ sử dụng sau:
Trang 33Hình 3.10: Sơ đồ sử dụng web service
o Nhà cung cấp Web Service mô tả Web Service trong một tài liệu WSDL và đăng
ký nó lên một UDDI bằng cách Publisher’s API
o Một người sử dụng UDDI Inquiry API để tìm thông tin về nhà cung cấp dịch vụ thích hợp Nếu có, nó sẽ tìm kiếm tiếp tModel rồi từ đó lấy ra tài liệu mô tả WSDL
o Một yêu cầu dạng SOAP được tạo ra dựa trên tài liệu mô tả WSDL
o Yêu cầu SOAP trên sẽ được gửi đến nhà cung cấp dịch vụ và được xử lý
3.2.4.4 XML (eXtensible Markup language)
XML là viết tắt của cụm từ eXtensible Markup Language – là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu doanh nghiệp với doanh nghiệp Về hình thức XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào còn XML lại định nghĩa thành phần trong dữ liệu gồm những gì Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả của mã nguồn mở
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp XML là công cụ chính để giải quyết vấn đề này và
là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang
Trang 34định dạng thẻ XML Khi đó, các thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo
chuẩn của SOAP hoặc XML – RPC và có thể tương tác với nhau trong một thể thống nhất
Một số đặc điểm của XML
- XML được thiết kế để chứa dữ liệu không phải để hiển thị dữ liệu
- Các thẻ XML không được định nghĩa trước mà do người lập trình tự định nghĩa
- Mỗi thẻ trong file XML không chỉ chữa dữ liệu mà còn cho biết dữ liệu đó là gì Điều này rất
có lợi cho công việc tìm kiếm
Ví dụ về cấu trúc của một tài liệu được mô tả bởi XML
Hình3.11 : cấu trúc của một tài liệu được mô tả bởi XML
3.2.5 Hoạt động của Web services
Hình 3.12: Cấu trúc và hoạt động của một web service đơn giản
Trang 35- Web service developer (provider): Người xây dựng và triển khai Web Service Có thể là một người hay một tổ chức mà cung cấp một phương thức phù hợp để thực thi một dịch vụ cụ thể Đăng ký và phân loại web service
- Web service consumer: Người yêu cầu Provider thực hiện các dịch vụ Truy vấn và tìm kiếm Web Services Xác định và tìm ra web service thích hợp nhất
- Web service developer: Xây dựng ứng dụng tiêu thụ Web Service [5]
và cung cấp ra cho các đối tượng bên ngoài truy cập thông qua các nghi thức chuẩn của web service
Đặc điểm chính của SOA là tách rời phần giao tiếp với phần thực hiện dịch vụ Điều này có thể làm bạn liên tưởng đến một công nghệ được đề cập nhiều gần đây: Dịch vụ web Dịch vụ web cho phép truy cập thông qua định nghĩa giao thức-và-giao tiếp SOA và dịch vụ web thoạt trông
có vẻ giống nhau nhưng chúng không phải là một
Về cơ bản, SOA là kiến trúc phần mềm phát xuất từ định nghĩa giao tiếp và xây dựng toàn bộ mô hình ứng dụng như là mô hình các giao tiếp, hiện thực giao tiếp và phương thức gọi giao tiếp Giao tiếp là trung tâm của toàn bộ triết lý kiến trúc này; thực ra, tên gọi ‘kiến trúc định hướng giao tiếp’ thích hợp hơn cho SOA Dịch vụ và module phần mềm nghiệp vụ được truy cập thông qua giao tiếp, thường theo cách thức yêu cầu - đáp trả Ngay cả với yêu cầu dịch vụ 1 chiều thì
nó vẫn là yêu cầu trực tiếp có chủ đích từ một phần mềm này đến một phần mềm khác Một tương tác định hướng dịch vụ luôn bao hàm một cặp đối tác: nguồn cung cấp dịch vụ và khách hàng sử dụng dịch vụ