CHƯƠNG III CÁC KIẾN THỨC LIÊN QUAN III.1 SSH trong JAVA

Một phần của tài liệu quản lý nội dung trên sakai server, thực hiện biên dịch và kiểm thử trên test server khác bằng hạ tầng ssh (Trang 30)

III.1. SSH trong JAVA

a. Giao thức SSH: SSH hay Secure Shell là giao thức mạng dùng để trao đổi thông tin giữa hai thiết bị dưới một kên truyền bảo mật, thường được sử dụng trong các hệ thống Linux hay hệ thống Unix-based để đăng nhập tài khoản từ xa.

 Cách thức làm việc của SSH bao gồm 3 bước là:

• xác định server thông qua việc trao đổi khóa

• xác lập một session làm việc bảo mật được mã hóa từ khóa đồng bộ được trao đổi ở bước trên

• chứng thực người dùng

 SSH được thiết kế để thay thế cho giao thức Telnet hay các giao thức đăng nhập tài khoản từ xa không bảo mật khác, khi mà password của user và data được gửi đi dưới dạng plain-text và có thể bị bắt được bởi các chương trình bắt gói thông tin trên mạng

3.1-SSH Model

 SSH sử dụng cơ chế mã hóa Public-key và Authentication để chứng thực người dùng

 SSH thực thi các tính năng chính như đăng nhập tài khoản từ xa, thực thi command đồng thời hỗ trợ việc gửi / nhận file qua các giao thức SCP hay SFTP. Ngoài ra SSH còn hỗ trợ các giao thức khác như Tunneling, Port Forwarding, X11

 Version mới nhật của SSH hiện nay là version 2 nâng cao tính bảo mật (ví dụ: sử dụng cơ chế trao đổi khóa Diffie – Hellman, message authentication code để kiểm tra tính toàn vẹn ...) hay thêm một số chức năng (chạy nhiều shell trong một kết nối SSH …)

b. JSCH: thư viện SSH trong Java

 JSch là thư viện Java hiện thực việc kết nối đến SHH Server sử dụng giao thức SSH-2, được phát hành với dưới BSD-type license

 Hỗ trợ giao thức SSH-2 với khả năng đăng nhập shell hay thực thi câu lệnh từ xa

 Hỗ trợ việc chứng thực user bằng phương pháp Authentication hay Public- key

 Hỗ trợ các tính năng gửi / nhận file qua giao thức SCP

 Hỗ trợ các giao thức X11Port Forwarding

 Phụ thuộc vào gói Java Cryptography Extension (JCE) – gói thư viện mã hóa chuẩn của Java

III.2. Lập trình công cụ trong SAKAI Framework

a. Giao thức HTTP b. JSP/ Servlet c. JSF

d. Spring e. Maven

Sakai project bao gồm nhiều project nhỏ hơn được bảo trì và phát triển bởi nhiều nhóm khác nhau. Tuy nhiên các project này đôi khi phụ thuộc chồng chéo vào nhau, project này cung cấp dependencies cho project khác. Việc quản lí tập trung các metadata,các

dependencies cũng như các file binary của project đã được dịch là cần thiết. Maven được sử dụng trong việc quản lí các thông tin này.

Có phần tương tự như Ant hay Makefile, nhưng Maven đơn giản hóa việc quản lí project và dependencies trong các kho(Repository). Trong Repository không chỉ chứa các

dependency mà còn kèm theo metadata của nó dưới dạng file pom.xml. Mỗi khi cần sử dụng một dependency bạn cần cung cấp các thong số để xác định dependency đó bao gồm ít nhất 3 thông số groupId, artifactId, version. Bộ thông số này gọi là Maven Coordinate.

Một trong những tiện ích mà maven đem lại là cơ chế transitive dependency. Khi bạn chỉ định một dependency cho project của mình, Maven sẽ tự đông tìm và add các

tiết kiệm rất nhiều thời gian và đảm bảo các gói thư viện có version tương thích với nhau. Bản thân bạn cũng có thể nhóm các dependency mà mình thường sử dụng thành 1 artifact để tiện cho việc sử dụng nhiều lần trong các project. Một thí dụ cụ thể về transitive

dependencies: <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </dependency> </dependencies>

Nếu bạn từng sử dụng hoặc đang học sử dụng Hibernate, bạn sẽ biết lượng file jar mà Hibernate sử dụng khá nhiều và lộn xộn, ở đây là mục dependencies của file pom trong HelloWorld từ tài liệu Hibernate Reference Documentation 3.6.0 Final. Chỉ có 3

dependencies mà bạn phải chỉ ra, nếu các dependency này đòi hỏi các thư viện khác Maven sẽ tự động đính kèm vào project cho bạn.

Sau đây là một số ảnh minh họa về cơ chế nói trên, trong hình này eclipse được cài đặt m2eclipse plugin và project có file pom khai báo như trên: (adsbygoogle = window.adsbygoogle || []).push({});

Bên tay trái là các dependency được chỉ định trong file pom.xmp của project, tay trái là kết quả của việc resolve dependency. Bạn sẽ tiết kiệm rất nhiều thời gian cho việc tìm kiếm đủ danh sách dependency bên trái với đúng các version tương thích nhau. Mặt khác nếu không có maven bạn sẽ phải tự quản lí các file jar này và có thể tạo ra dư thừa và lãng phí trên máy tính của bạn.

Trên hình là tab Dependency Hierarchy, ngoài ra pom.xml là nội dung của file pom của project này, Effective POM là nội dung file pom của project này merge với các file pom cha, ông …v…v. Nếu bạn mở một project trong Sakai và xem effective pom bạn sẽ thấy file pom rất dài và dễ dàng nhận ra được một phần trong đó là từ file

sakai-src/master/pom.xml.

Ngoài ra m2eclipse còn cho phép bạn xem danh sách dependency và các mối quan hệ một cách trực quan thông qua tab dependency Graph. Hình sau đây minh họa bản đồ dependency của SakaiMonitor, một project nhỏ chúng tôi thử nghiệm về chức năng thống kê số liệu từ Test & Quizz (Samigo) của Sakai:

f. SAKAI Framework

Một phần của tài liệu quản lý nội dung trên sakai server, thực hiện biên dịch và kiểm thử trên test server khác bằng hạ tầng ssh (Trang 30)