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ẻ
NH N XÉT C A GVHD NH N XÉT C A GIÁO VIÊN HƯ NG D N KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE i L I C M ƠN 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 Chúng xin g i lịng bi t ơn kính tr ng sâu s c đ n gia đình, nh ng ngư i ñã nuôi d y chúng trư ng thành Chúng em chân thành c m ơn quý th y cô 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 su t q trình h c hồn thành lu n văn M c dù ñã c g ng h t s c 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ô b n Tp.HCM ngày 31/12/2007 Lương Nguy n H i ðăng-ðoàn Huỳnh C m Duyên KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE ii M CL C M CL 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 CHƯƠNG – M ð U 1.1 Tính c p thi t c a ñ tài 1.2 M c tiêu c a ñ tài CHƯƠNG – CƠ S LÝ THUY T 2.1 Web Services 2.1.1 T ng quan v Web Service 2.1.2 Các thành ph n c a Web Service 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 Spring Web Service 13 2.2.2 Contract-first 15 2.2.3 T o m t web service Spring 44 KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE iii M CL C 2.2.4 B o m t web service 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 CHƯƠNG – 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 CHƯƠNG – K T LU N 132 4.1 Tóm t t k t qu ñ t ñư c .132 4.2 Hư ng phát tri n 132 TÀI LI U THAM KH O 133 KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE iv DANH M C CÁC HÌNH 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.1 Ki n trúc Web service 2.2 C u trúc c a m t message theo d ng SOAP 12 2.3 C u trúc module 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 q 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 KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE v DANH M C CÁC HÌNH V 3.8 Xóa khách hàng 131 3.9 C m/cho phép khách hàng 131 KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE vi DANH M C CÁC B NG DANH M C CÁC B NG B ng N i dung Trang 1.1 Mô t use case 2.1 B ng s d ng KeyStore 74 KLTN –WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE vii CHƯƠNG M CHƯƠNG – M ð U ð U 1.1 Tính c p thi t c a ñ tài Cách ñây vài năm, nói t i th k 21, ngư i ta kh ng đ nh s th i ñ i c a “n n kinh t s ” v i “thương m i ñi n t ” then ch t Thông tin giao d ch đư c s hóa s làm đ o l n n n kinh t th gi i Làm đ có th t n d ng Internet m r ng th trư ng, tìm thêm h i cho s n ph m, d ch v c a tr thành u mà doanh nhân, doanh nghi p Vi t Nam không th không quan tâm Có th trư c m t, ph n l n Website thương m i ñi n t Vi t Nam chưa th c hi n giao d ch tr c n b o m t chưa th t s quan tr ng, v lâu dài, giao d ch thương m i ñi n t tr thành xu th t t y u n u quan tâm đ n b o m t s r t khó đ t b o v Web service đ i m m t hư ng m i vi c phát tri n ng d ng Internet Chính th s an toàn c a web service m ng khơng th n m ngồi v n đ này, có th nói ngày ngồi vi c nghiên c u ñ t o m t web services t t mang l i nhi u l i ích vi c nghiên c u đ mang l i s an toàn cho web services m t nh ng v n ñ quan tr ng nh t Chính th , c n thi t ph i có nhi u đ tài nghiên c u v b o m t m ng 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 1.2 M c tiêu c a ñ tài M c tiêu c a đ tài g m: • Nghiên c u v web service công ngh Spring Web service KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE CHƯƠNG M ð U • Nghiên c u v ng d ng Acegi Security ñ b o m t web service Spring • Vi t m t ng d ng web nh bán hàng m ng b ng web service mô ph ng vi c dùng Acegi Security ñ b o m t Các tính c a chương trình mà chúng tơi xây d ng có th ñư c bi u di n use case diagram sau (Xem hình 1.1): Xoa User Disable User Admin Enable User Xem don dat hang Xem san pham User Dat hang Xem thong tin lien he Dang ky vien Dang nhap vao he thong Hình 1.1 – Use case diagram c a chương trình N i dung chi ti t c a use case ñư c cho b ng 1.1 KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE CHƯƠNG M ð U B ng 1.1: Mô t use case Tên use case Xoa User Disable User Actor Admin Enable User Mơ t Xóa m t User danh sách User Lo i b quy n c a User Khôi ph 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 Xem san pham Dat hang Actor user Xem thong tin lien he Xem s n ph m áo cư i hi n có c a hàng ð t hàng áo cư i Xem thông tin liên h c a c a hàng Dang ky vien Dang ky vien Dang nhap vao he thong Dang nhap vao he thong KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE CHƯƠNG CƠ S LÝ THUY T org.acegisecurity.context.BankManager.delete*=ROLE_SUPER VISOR,RUN_AS_SERVER org.acegisecurity.context.BankManager.getBalance=ROLE_TE LLER,ROLE_SUPERVISOR,BANKSECURITY_CUSTOMER,RUN_AS_SERVER Ti p theo, b n c n ñ nh nghĩa m t AspectJ aspect Ví d : package org.acegisecurity.samples.aspectj; import org.acegisecurity.intercept.method.aspectj.AspectJSecuri tyInterceptor; import org.acegisecurity.intercept.method.aspectj.AspectJCallba ck; import org.springframework.beans.factory.InitializingBean; public aspect DomainObjectInstanceSecurityAspect implements InitializingBean { private securityInterceptor; AspectJSecurityInterceptor pointcut domainObjectInstanceExecution(): target(PersistableEntity) && execution(public * *( )) !within(DomainObjectInstanceSecurityAspect); KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE && 119 CHƯƠNG CƠ S LÝ THUY T Object around(): domainObjectInstanceExecution() { if (this.securityInterceptor != null) { AspectJCallback callback = new AspectJCallback() { public Object proceedWithObject() { return proceed(); } }; return this.securityInterceptor.invoke(thisJoinPoint, callback); } else { return proceed(); } } public getSecurityInterceptor() { AspectJSecurityInterceptor return securityInterceptor; } public setSecurityInterceptor(AspectJSecurityInterceptor securityInterceptor) { void this.securityInterceptor = securityInterceptor; } public void afterPropertiesSet() throws Exception { if (this.securityInterceptor == null) KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 120 CHƯƠNG CƠ S LÝ THUY T throw IllegalArgumentException("securityInterceptor required"); new } } Trong ví d trên, interceptor b o m t s ñư c ch p nh n cho m i th hi n c a PersistableEntity, m t l p o khơng đư c trình bày (b n có th dùng m i l p khác ho c bi u th c b n mu n) Vì v y, AspectJCallback r t c n thi t phương th c proceed(); câu l nh có nghĩa ñ c bi t nh t v i m t around() AspectJSecurityInterceptor g i l p n danh AspectJcallback c n đ i tư ng m c tiêu ñ ti p t c B n c n c u hình Spring đ t i n i v i AspectJSecurityInterceptor M t khai báo bean hoàn thành vi c sau: 2.3.3.3.3 FilterInvocation Security Interceptor ð b o m t FilterInvocationS, ngư i dùng c n thêm m t filter vào web.xml ñ i di n cho FilterSecurityInterceptor M t ví d c u hình đ c thù đư c trình bày sau: Acegi Filter HTTP Request KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE Security 121 CHƯƠNG CƠ S LÝ THUY T org.acegisecurity.util.FilterToBeanProxy targetClass org.acegisecurity.intercept.web.FilterSecurityInte rceptor Acegi Filter HTTP Request Security /* Lưu ý filter th c t m t FilterToBeanProxy H u h t filter ñư c s d ng b i Acegi Security ñ u s d ng l p Trong application context, b n c n c u hình bean: /acegilogin.jsp KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 122 CHƯƠNG CƠ S LÝ THUY T false CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON \A/secure/super/.*\Z=ROLE_WE_DONT_HAVE \A/secure/.*\Z=ROLE_SUPERVISOR,ROLE_TELLER ExceptionTranslationFilter cung c p c u n i gi a ngo i l Java HTTP response Nó ch liên quan đ n trì giao di n ngư i dùng, filter không làm b t kỳ công vi c b o m t th t s N u m t AuthenticationException ñư c phát hi n ra, filter s g i AuthenticationEntryPoint ñ b t ñ u q trình ki m đ nh quy n AuthenticationEntryPoint s ñư c g i ngư i dùng yêu c u m t resource HTTP b o m t h chưa ñư c ki m ñ nh quy n L p qu n lý th hi n m t ñáp ng thích h p cho ngư i dùng Có ñ nh nghĩa b n ñư c cung c p b i Acegi Security: AuthenticationProcessingFilterEntryPoint ñ b t ñ u m t q trình ki m đ nh d a vào bi u m u, BasicProcessingFilterEntryPoint ñ b t ñ u m t trình ki m ñ nh KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 123 CHƯƠNG CƠ S LÝ THUY T HTTP Basic CasProcessingFilterEntryPoint ñ b t đ u q trình đăng nh p JASIG Central Authentication Service (CAS) FilterSecurityIntercepter có th đư c đáp ng cho vi c x lý b o m t c a HTTP resource Gi ng nh ng interceptor b o m t khác, yêu c u m t tham chi u ñ n m t AuthenticationManager m t AccessDecisionManager FilterSecurityInterceptor đư c c u hình v i nh ng thu c tính c u hình phù h p v i nh ng yêu c u HTTP URL khác FilterSecurityInterceptor có th đư c c u hình v i nh ng thu c tính c u hình b ng hai cách Cách th nh t thông qua m t trình so n th o thu c tính application context đư c trình bày bên Cách th hai thông qua vi c vi t ObjectDefinitionSource Cho dù dùng cách ti p c n nào, ObjectDefinitionSource có th ñáp ng cho vi c tr v m t ñ i tư ng ConfigAttributeDefinition ch toàn b nh ng thu c tính c u hình k t h p v i m t URL HTTP b o m t Nên nh r ng phương th c FilterSecurityInterceptor.setObjectDefinitionSource() th c s c n m t th hi n c a FilterInvocationDefinitrionSource ðó m t interface v i l p ObjectDefinitionSource N u s d ng cách ti p c n b ng trình so n th o thu c tính application context, d u ph y đư c dùng ñ phân cách gi a nh ng thu c tính c u hình khác M i thu c tính c u hình đư c gán vào đ i tư ng SecurityConfig c a ObjectDefinitionSource đư c t o b i trình so n th o thu c tính, FilterInvocationDefinitionSource, th a nh ng thu c tính c u hình ngư c v i FilterInvocations d a s c lư ng bi u th c c a URL request Có hai cú pháp bi u th c ñư c h tr Như m t s l a ch n, s th hi n c a m t l nh PATTERN_TYPE_APACHE_ANT s nguyên nhân tồn b nh ng bi u th c đư c xem m t ñư ng d n Apache Ant Không th tr n l n nh ng cú pháp bi u KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 124 CHƯƠNG CƠ S LÝ THUY T th c v i ñ nh nghĩa gi ng Ví d c u hình có th đư c sinh dùng đư ng d n Apache Ant sau: CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /secure/super/**=ROLE_WE_DONT_HAVE /secure/**=ROLE_SUPERVISOR,ROLE_TELLER 2.4 K t lu n Acegi Framework m t công c ñư c ñánh giá r t cao vi c b o m t Web nói chung đ c bi t Web Service (m t công ngh r t m i Vi t Nam) Như ñã bi t, Spring Framework m t framework n i ti ng th gi i vi c phát tri n Acegi t Spring giúp cho Framework ngày m nh ñư c nhi u ngư i ý KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 125 CHƯƠNG CƠ S LÝ THUY T KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 126 CHƯƠNG THI T K VÀ CÀI ð T CHƯƠNG – THI T K VÀ CÀI ð T 3.1 Th c t ð giúp th y rõ đư c cơng d ng c a Acegi Framwork, chúng tơi th c hi n m t website nh s d ng hai Framework Spring Webservice Acegi Security Website mô ph ng m t ph n vi c bán hàng c a c a hàng áo cư i Vi t Hà 3.2 S ñ chuy n trang Hình 3.1 – Sơ đ chuy n trang KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 127 CHƯƠNG THI T K VÀ CÀI ð T 3.3 Cài ñ t giao di n Giao di n c a web sau: Hình 3.2- Màn hình đăng nh p Hình 3.3- ðăng nh p thành công KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 128 CHƯƠNG THI T K VÀ CÀI ð T Hình 3.4- Xem danh sách áo dài Hình 3.5-Xem chi ti t áo dài KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 129 CHƯƠNG THI T K VÀ CÀI ð T Hình 3.6-Xem thơng tin liên h Hình 3.7-Xem danh sách ñơn ñ t hàng KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 130 CHƯƠNG THI T K VÀ CÀI ð T Hình 3.8-Xóa khách hàng Hình 3.9-C m/cho phép khách hàng KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 131 CHƯƠNG K T LU N CHƯƠNG – K T LU N Sau tìm hi u lý thuy t n n, chúng tơi vào hi n th c m t s tính c n thi t Chương s trình bày nh ng mà nhóm làm đư c đ ng th i đưa hư ng phát tri n nh m hoàn thi n chương trình 4.1 Tóm t t k t qu ñ t ñ c Sau m t th i gian nghiên c u v công ngh Spring web service ng d ng Acegi Security ñ b o m t web Nhóm đ t đư c nh ng k t qu sau: • Hi u ng d ng ñư c Spring web service ñ vi t m t ng d ng web th c ti n • Nghiên c u s d ng Acegi Framework b o m t v i web service • Vi t m t ng d ng nh s d ng Spring Webservice Framework Acegi Framework 4.2 H ng phát tri n Vì th i gian th c hi n ñ tài có h n, nên ng d ng mà xây d ng ch m t ng d ng web nh , chưa sát v i nhu c u th c t Chúng mong mu n phát tri n thành m t ng d ng web l n, có th th c hi n vi c mua bán m ng theo ñúng ý nghĩa c a thương m i ñi n t KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 132 TÀI LI U THAM KH O TÀI LI U THAM KH O [1] Bart Van Riel, Spring Acegi Tutorial [2] Craig Walls / Ryan Breidenbach, Spring In Action [3] Mark O'Neill, Web Services Security [4] Naci Dai / Lawrence Mandel / Arthur Ryman, Eclipse Web Tools Platform [5] Rod Johnsonet, Professional Java Development with the Spring Framework, John Wiley & Sons, 2005 [6] www.acegisecurity.org/ [7] www.springframework.org/ [8] www.cafeconleche.org [9] www.forum.springframework.org [10] www.javavietnam.org/javavn/mvnforum/index [11] www.javaworld.com [12] www.ity.vnuit.edu.vn [13] www.toantin.org/forums/ [14] www-128.ibm.com/developerworks/forums/ KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 133 ... 2.2.1.2 Gi i thi u Spring Web Service Spring web services m t s n ph m c a Spring community t p trung vào vi c t o nh ng s n ph m Web Service Spring web service nh m vào vi c làm nh nhàng s phát tri... ki n th c nh t ñ nh v Web Service, Spring Web service Acegi Security ðây 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 m t công... service KLTN – WEB SERVICE SECURITY WITH OPEN SOURCE ACEGI AND APPLYING FOR A SMALL RETAILING WEBSITE 11 CHƯƠNG CƠ S LÝ THUY T • Trang vàng - Yellow pages: ch a thông tin mô t web services theo