Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 75

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS.

Phạm Trần Vũ

LỜI CAM ĐOAN



Chúng em xin cam đoan rằng ngoài các tham khảo đã được ghi rõ, các kết quả đã thực
hiện được trong luận văn này là do chính chúng em thực hiện. Có một số phần trong báo
cáo luận văn chúng em có lấy ý tưởng từ các tài liệu tham khảo để có thêm ý tưởng cho
việc phát triển đề tài nhưng chúng em đảm bảo rằng đã thấu hiểu hoàn toàn các nội dung
đó. Tuyệt đối không có việc sao chép hoàn toàn từ một tài liệu nào đó mà chúng em
không hiểu được nội dung đã sao chép.

LỜI CẢM ƠN

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong ii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ



Sau một thời gian dài làm việc miệt mài và căng thẳng, chúng em đã hoàn thành được đề
tài của mình. Trong suốt quá trình làm việc chúng em nhận được sự giúp đỡ rất nhiều từ
gia đình, thầy cô và bạn bè, những người đã luôn ủng hộ chúng em khi chúng em cảm
thấy khó khăn và chán nản nhất, những người đã đưa ra những đóng góp thiết thực và bổ
ích để giúp chúng em định hướng và có cách giải quyết tốt nhất cho đề tài của mình trong
suốt quá trình làm Luận Văn Tốt Nghiệp.

Chúng em xin cảm ơn gia đình, bạn bè những người đã luôn ủng hộ chúng em trong suốt
quá trình làm luận văn.

Chúng em vô cùng biết ơn thầy Phạm Trần Vũ, thầy hướng dẫn của chúng em, người thầy
kính yêu, người đã luôn đưa ra những lời khuyên chân thành và bổ ích cho đề tài của
chúng em, nếu không có sự hướng dẫn tận tình của thầy thì chúng em không thể hoàn
thành được đề tài này.

Chúng em cũng xin chân thành cảm ơn Thầy Nguyễn Quang Hùng cùng với các thầy và
các anh trong phòng hệ thống mạng và máy tính, những người đã hướng dẫn cho chúng
em rất nhiều trong Luận Văn Tốt Nghiệp này.

Một lần nữa chúng em xin cảm ơn tất cả mọi người, Sự tin tưởng của mọi người chính là
động lực để chúng em hoàn thành tốt luận văn này.

TÓM TẮT LUẬN VĂN

Luận văn xây dựng một cơ chế Single-Sign-On từ Sakai vào môi trường Vn-Grid.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong iii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Công việc chính của Luận Văn là tích hợp các Grid-portlet theo chuẩn JSR 168 vào Sakai
để có thể từ Sakai truy cập vào hệ thống Vn-Grid.

MỤC LỤC

LỜI CAM ĐOAN..........................................................................................................................ii

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong iv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ
Chương 1: Tổng Quan Về Đề Tài Luận Văn............................................................................vii
1.1 Giới thiệu đề tài.......................................................................................................vii
1.2 Mục tiêu của đề tài.................................................................................................viii
1.3 Hướng tiếp cận của đề tài.......................................................................................viii
1.4 Phương pháp triển khai đề tài.................................................................................viii
1.5 Cấu trúc luận văn....................................................................................................viii

Chương 2: Các kiến thức nền tảng trong đề tài luận văn.........................................................ix
2.1 Tổng quan về hệ thống tính toán lưới.......................................................................ix
2.2 Globus Toolkit 4.0....................................................................................................xi
2.3 Single Sign On........................................................................................................xix
2.4 Tổng quan về sakai...............................................................................................xxiii
2.5 Tổng quan về OGCE portal................................................................................xxviii
2.6 Tổng quan về Axis Service....................................................................................xxx
2.7 Chuẩn portlet JSR 168.........................................................................................xxxii

Chương 3: Phân tích và hiện thực hệ thống đề tài luận văn.............................................xxxvii


3.1 Phân tích hệ thống.............................................................................................xxxvii
3.2 Đề xuất cơ chế tích hợp portlet JSR 168 vào Sakai...............................................xliii
3.2.1 Xây dựng các tool tương ứng .........................................................................xliii
3.2.2 Tích hợp Grid portlet dựa vào chuẩn WSRP...................................................xlv
3.2.3 Tích hợp portlet JSR 168 vào Sakai.................................................................xlv

Chương 4: Kết luận......................................................................................................................lii


4.1 Những thành quả đạt được của luận văn:.................................................................lii
4.2 Những hạn chế của luận văn....................................................................................lii
4.3 Những khó khăn khi thực hiện đề tài........................................................................lii
4.4 Hướng phát triển của luận văn:...............................................................................liii

Chương 5: Phụ lục và tài liệu tham khảo.................................................................................liv


5.1 Cài đặt Globus Toolkit 4.0 .....................................................................................liv
5.2 Cài đặt OGCE portal ..............................................................................................lxv
5.3 Cài đặt sakai phiên bản 2.5.4................................................................................lxvii
Tài liệu tham khảo.....................................................................................................lxxv

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong v


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

DANH MỤC HÌNH

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong vi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Chương 1: Tổng Quan Về Đề Tài Luận Văn


1.1 Giới thiệu đề tài
Trong thời gian gần đây với sự phát triển như vũ bão của nghành công nghệ thông tin.
Các hệ thống mạng ngày càng phát triển và nâng cấp cả về tài nguyên phần cứng, tốc độ,
băng tần. Cùng với đó là sự phát triển của nền công nghiệp, dịch vụ bắt buộc các doanh
nghiệp và người dùng phải tiếp cận và ứng dụng công nghệ thông tin một cách mạnh mẽ.
Nhưng đi kèm với đó đòi hỏi một nguồn lực về tài chính và con người. Ra đời trong hoàn
cảnh đó, tại thời điểm hiện tại của luận văn một thế hệ công nghệ thông tin mới dần ra
đời. Đó là điện toán đám mây (Cloud Computing). Có thể nói các ông lớn như: IBM,
Google, Microsoft… đang tập trung phát triển nhằm cung cấp các dịch vụ số cho các
doanh nghiệp giải quyết các vấn đề về chi phí cơ sở hạ tầng và con người của doanh
nghiệp trong việc ứng dụng công nghệ thông tin.

Trong khi đó năm 2010 là một năm thành công ngoài sức mong đợi của mạng xã hội
facebook. Mark Zuckerberg, nhà sáng lập mạng xã hội facebook, đã tạo ra một thế hệ
công nghệ kế nối mới trên internet, sau web, forum, blog. Thì giờ hơn nữa tỉ người dùng
facebook. Điều đó chứng tỏ rằng khả năng tương tác, kết nối giữa người với người ngày
càng được cải thiện. Con người ngày càng có nhu cầu phải kết nối,nhanh, dễ dàng, và
hiệu quả.

Trong bối cảnh này thì trong cộng đồng nghiên cứu khoa học cũng đang cần xây dựng
và thiết lập một hệ thống. Trong hệ thống đó phải kết hợp được những tính năng kết nối
giống như facebook, các nhà hóa học, vật lý học, địa chất học, có thể tìm thấy nhau, chia
sẽ, thảo luận một cách dễ dàng. Đồng thời đối với các nhà khoa học phải đối diện với
ngày càng nhiều bài toán phức tạp và đòi hỏi một lượng tính toán, phân tích lớn. Bởi vậy
hệ thống trên phải đáp ứng được sức mạnh tính toán, khả năng đáp ứng nhanh với một
chi phí chấp nhận được thì Tính Toán Lưới[1](grid computing) là một lựa chọn đáp ứng
được. Một hệ thống kết hợp hai yêu cầu trên mà các nước phương Tây đã phát triển rất
sớm từ năm 2003 là Sakai VRE Demonstrator[2] tại các trường đại học ở Anh và Mỹ. Còn
ở Việt Nam thì chưa có một hệ thống nào tương tự như thế. Do đó đề tài luận văn của
nhóm góp phần nghiên cứu và xây dựng một hệ thống như trên.

Tại trường đại học Bách Khoa thành phố Hồ Chí Minh hiện đang xây dựng hệ thống
tính Toán Lưới (Vn-Grid)[3]. Hệ thống tính toán lưới này được xây dựng trên bộ Globus
Toolkit 4.0[4][5][6] và Sakai [7][8] 2.5.4 hoặc 2.7.1. Đề tài luận văn sẽ giải quyết bài toán truy
cập hệ thống tính toán lưới thông qua Sakai. Câu hỏi được đặt ra là tại sao phải phát triển
theo hướng phải truy cập hệ thống tính toán lưới hay GlobusTookit 4.0 thông qua Sakai
mà không dùng một hệ thống khác? Bởi vì Sakai có thể đáp ứng được yêu cầu trên một
cách tốt nhất. Hiện nay có trên 350 tổ chức giáo dục sử dụng Sakai như một hệ thống
quản lý giáo dục và khoa học, tạo ra một môi trường liên kết hợp tác giữa các nhà khoa
học. Từ đó ta có thể tạo ra một mạng lưới mà trên đó các nhà khoa học có thể chia sẻ tài
nguyên, dữ liệu nghiên cứu của mình cho người khác, có thể sử dụng sức mạnh của các

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong vii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

thành viên trong cùng mạng lưới để giải quyết những bài toán có độ phức tạp cao. Đó
chính là lợi ích của việc xây dựng mạng lưới tính toán này.

1.2 Mục tiêu của đề tài


Mục tiêu của đề tài là làm sao tạo ra môi trường truy cập hệ thống tính toán lưới thông
qua Sakai portal. Người dùng sau khi đăng nhập vào Sakai thì có thể lấy proxy để truy
cập vào hệ thống tính toán lưới và thực hiện các công việc trên hệ thống tính toán lưới.

1.3 Hướng tiếp cận của đề tài


Từ quá trình tìm hiểu lúc thực tập đến lúc bắt tay vào việc làm luận văn, nhóm đã tham
khảo nhiều tài liệu trên mạng và có thể đưa ra ba hướng tiếp cận để hoàn thành đề tài này:
• Xây dựng các tool mới hoàn toàn cho Sakai để truy cập vào hệ thống tính toán
lưới. Hướng tiếp cận này thuận lợi ở chỗ ta là người chủ động trong việc xây dựng
các tool này và có thể tùy biến các tool theo ý của ta. Tuy nhiên để làm theo hướng
này thì cần thời gian để tìm hiểu kiến trúc Sakai các công cụ xây dựng tool cho
Sakai… Vì thời gian luận văn có hạn nên nhóm không thể đi theo hướng này.
• Tích hợp các Grid-portlet vào Sakai dựa trên chuẩn WSRP[9] (Web Service for
Remote Portlet), hướng này có ưu điểm là khá đơn giản chỉ cần cài đặt Sakai Portal
và OGCE(Open Grid Computing Enviroments)[10] portal sau đó tích hợp cơ chế
WSRP lên Sakai và OGCE để Sakai có thể truy cập đến các portlet của OGCE và
thực hiện các tác vụ để truy cập đến hệ thống tính toán lưới. Lúc này Sakai portal
chỉ đóng vai trò cầu nối cho OGCE portal truy cập đến hệ thống tính toán lưới.
Hướng này không phù hợp với yêu cầu của đề tài đó là tạo môi trường truy cập hệ
thống tính toán lưới trực tiếp từ Sakai.
• Tích hợp các grid-portlet có sẵn từ OGCE portal vào Sakai. Các grid-portlet của
OGCE portal được viết theo chuẩn JSR 168[11][12][13] trong khi từ phiên bản Sakai
2.4 thì Sakai đã bắt đầu hỗ trợ cho chuẩn portlet JSR 168 nên hướng này là hướng
khả thi nhất và tốn ít thời gian để thực hiện đề tài. Và nhóm quyết định thực hiện
đề tài theo hướng tích hợp các portlet có sẵn từ OGCE portal vào Sakai.

1.4 Phương pháp triển khai đề tài


Nhóm quyết định lựa chọn phương án tích hợp các portlet có sẵn từ OGCE sang Sakai và
triển khai trên 2 portlet đó chính là proxymanager portlet và jobsubmit portlet để xây
dựng hệ thống mẫu cho luận văn. Sau khi tích hợp thành công hai portlet này vào Sakai
thì các grid-portlet khác có thể được tích hợp tương tự vào Sakai.

1.5 Cấu trúc luận văn


Chương 1: Giới thiệu đề tài
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong viii
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Trong chương này nhóm sẽ giới thiệu tổng quan đề tài, tầm quan trọng của đề tài, nhiệm
vụ của đề tài, hướng tiếp cận đề tài, phương pháp triển khai đề tai và cấu trúc của luận
văn.

Chương 2: Những kiến thức nền tảng của đề tài luận văn
Trong chương này nhóm trình bày gần như toàn bộ các vấn đề tìm hiểu trong quá trình
luận văn bao gồm:
• Tổng quan về Grid Computing.
• Globus Toolkit 4.0.
• Dịch vụ Myproxy.
• Dịch vụ GRAM.
• Cơ chế Single Sign On (SSO).
• Sakai và kiến trúc của Sakai.
• OGCE và kiến trúc của OGCE.
• Giới thiệu về Axis Service
• Chuẩn portlet JSR168

Chương 3: Quá trình hiện thực đề tài luận văn


• Phân tích đưa ra mô hình thiết kế của hệ thống, Lựa chọn cách tiếp cận đề tài.
• Cách thức tích hợp lần lượt hai portlet Myproxy manager và Jobsubmit của OGCE
Portal vào Sakai.

Chương 4: Kết Luận


Trình bày những nhận xét, đánh giá của nhóm về những khó khăn khi thực hiện đề tài,
những kết quả được, những hạn chế của luận văn, và đề xuất hướng phát triển.

Chương 2: Các kiến thức nền tảng trong đề tài luận văn
2.1 Tổng quan về hệ thống tính toán lưới
Mở đầu
Khái niệm hệ thống tính toán lưới[1] ra đời cùng với sự hình thành và phát triển của mạng
Internet thế hệ thứ hai (Internet-II). Cũng giống như lịch sử hình thành và phát triển của
mạng Internet hiện nay bắt đầu từ những năm 70 của thế kỷ trước, xuất phát điểm ban đầu
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong ix
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

của Internet là để phục vụ trao đổi thông tin khoa học - giáo dục giữa các trường đại học,
viện nghiên cứu trên toàn thế giới. Nhưng sau đó, vào giữa những năm 1990, Internet đã
được thương mại hoá bởi các Công ty Viễn thông và dịch vụ giá trị gia tăng. Hiện nay,
các công nghệ mạng lưới (Grid Technologies) mới chỉ được giới khoa học – công nghệ
biết đến qua các hoạt động nghiên cứu – phát triển và các thông tin từ các Hội nghị, Hội
thảo điễn ra khá sôi động trong một thập kỷ trở lại đây. Tuy nhiên, các công nghệ mạng
lưới mà trong đó tính toán lưới, cùng với mạng Internet thế hệ thứ hai đã được đông đảo
giới khoa học – công nghệ và đặc biệt là các công ty CNTT-VT đa quốc gia lớn trên thế
giới đánh giá rất cao.
Tính toán lưới hiện đang trên đà phát triển để trở thành nền tảng công nghệ chủ đạo
của mạng Internet thế hệ mới, giữ vai trò giống như nghi thức TCP/IP đối với mạng
Internet hiện nay. Các sản phẩm công nghệ trên nền mạng lưới đang được thương mại hoá
để đưa ra ứng dụng rộng rãi trong tương lai gần. Công nghệ mạng lưới sẽ đưa mạng máy
tính Internet ngày nay đến gần hơn với kiến trúc mạng lưới điện, nơi mà việc khai thác, sử
dụng và cung cấp các tài nguyên tính toán cũng đơn giản như gắn thêm một thiết bị cung
cấp/sửdụng điện mới vào mạng

Định nghĩa về tính toán lưới - Grid Computing


Tính toán lưới là một công nghệ cho phép các tổ chức ảo (Virtual organization) chia sẻ tài
nguyên phân tán theo một mục đích chung mà không yêu cầu phải có 1 trung tâm điều
khiển tập trung.
Tổ chức ảo có thể mở rộng từ những bộ phận nhỏ trong cùng 1 viện cho đến tổ chức
gồm nhiều thành viên nằm rải rác khắp địa cầu. Một số tổ chức ảo như:
• Đội thiết kế Blended Wing Body của hãng Boeing
• Bộ phận quản lý sản phẩm Global VPN của hãng Worldcom có mặt trên 28 quốc
gia.
• Phòng kế toán tài vụ của 1 công ty
Tài nguyên có thể là một tài nguyên tính toán như máy tính cá nhân, máy tính xách tay,
trạm làm việc, máy chủ, nhóm máy tính (cluster), siêu máy tính hoặc có thể là tài nguyên
lưu trữ như ổ đĩa cứng trong máy PC, các thiết bị lưu trữ chuyên dụng như RAID. Các
thiết bị đo lường, bộ dò (sensor) cũng là 1 dạng tài nguyên cần chia sẻ. Thậm chí băng
thông mạng, phần mềm cũng là tài nguyên của một tổ chức ảo.

Tổng Quan về Mô Hình Mạng Lưới

Hệ thống tính toán lưới là hệ thống phần cứng và phần mềm kết nối mạng máy tính thế hệ
sau, cho phép chia sẻ các tài nguyên tính toán (conputing resources) của các máy tính nối
mạng, làm tăng gấp nhiều lần hiệu năng và tốc độ xử lý thông tin. Tính toán lưới (Grid
Computing) là công nghệ nền trong việc hình thành mạng lưới, là nền tảng phần mềm
chạy trên nền các thiết bị phần cứng kết nối mạng truyền thống giúp xây dựng những ứng
dụng mạng lưới có năng lực năng lực tính toán rất mạnh mẽ, có khả năng chuyển tải
những khối lượng dữ liệu khổng lồ, khả năng lưu trữ và truy cập thông tin trên mạng mà

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong x


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

bằng những giải pháp phần mềm và công nghệ mạng Internet truyền thống chỉ dựa trên
nghi thức TCP/IP không thể đạt tới.

Hình 2. 1: Mô hình kiến trúc hệ thống lưới

Mạng lưới được xây dựng trên nền tảng kiến trúc mở và phân tầng (có thể so sánh với
cấu trúc phân tầng của họ giao thức nền tảng trao đổi thông tin trên mạng Internet là
TCP/IP). Trong mỗi tầng của mạng lưới, các thành phần được chia sẻ các thuộc tính
chung và có thể được bổ sung những tính năng mới mà không ảnh hưởng đến các tầng
khác:

• Tầng tác chế (Fabric): giúp định vị các tài nguyên mạng lưới
• Tầng kết nối (Connectivity): giúp kết nối mạng lưới trên các mạng
• Tầng tài nguyên (Resource): giúp chia sẻ các tài nguyên mạng lưới
• Tầng kết hợp (Collective): giúp kết hợp và định vị nhiều kiểu tài nguyên.
• Tầng ứng dụng (Application): giúp kết nối các ứng dụng hướng người dùng để truy
cập và sử dụng tài nguyên mạng lưới.

2.2 Globus Toolkit 4.0


Globus Toolkit 4.0 [4][5][6] như là một hiện thực của tính toán lưới.
Giới thiệu
Globus là phần mềm mã nguồn mở được dùng để xây dựng các hệ thống lưới và các ứng
dụng trên nền tảng lưới. Bộ công cụ này cung cấp các dịch vụ và thư viện điểu khiển,
khám phá và quản lý tài nguyên, quản lý tập tin, cung cấp các cơ chế bảo mật dữ liệu cho
người dùng trong hệ thống lưới. Các dịch vụ, giao tiếp và giao thức của nó cho phép
người dùng có thể dễ dàng truy xuất tới các tài nguyên ở xa ngay trên máy cục bộ của
mình.
Globus được phát triển bởi tổ chức Globus Alliance, phiên bản 1.0 ra đời vào năm 1998,
phiên bản gần đây nhất là phiên bản 5.0 ra đời vào tháng 1 năm 2010.
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xi
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Kiến trúc
Cấu trúc của Globus gồm 3 nhóm dịch vụ chính, các dịch vụ này được truy xuất thông
qua một tầng bảo mật GSI (security layer). Ba nhóm dịch vụ đó là: dịch vụ quản lý tài
nguyên (Resource Management), dịch vụ quản lý thông tin (Information Service), dịch vụ
quản lý dữ liệu (Data Management). Globus đóng gói các dịch vụ này lại với nhau, chúng
có thể được sử dụng một cách độc lập hoặc kết hợp chung với nhau để phát triển ứng
dụng.

Hình 2. 2: Kiến trúc của Globus Toolkit

Tầng local-service chứa các dịch vụ của hệ điều hành, dịch vụ mạng như TCP/IP…
Tầng chính chứa các công cụ để xây dựng các cơ chế bảo mật, gửi các công việc để thực
thi (job submission), quản lý tài nguyên, quản lý thông tin tài nguyên. Tầng cao hơn cung
cấp các dịch vụ và công cụ để tương tác với các dịch vụ bên dưới và hiện thực các chức
năng còn thiếu.
Tầng bảo mật GSI
Tầng này cung cấp các phương thức xác thực của người dùng trong môi trường lưới và cơ
chế bảo một trong trao đổi dữ liệu. Nó dựa trên nền tảng SSL, PKI và chuẩn X.509. Tầng
GSI cung cấp các dịch vụ, giao thức và thư viện để thực thi các vấn đề bảo mật trong môi
trường lưới như:

• Xác thực một lần (single sign-on) trong việc sử dụng các dịch vụ của hệ thống lưới
thông qua chứng nhận (certificate) của người dùng.
• Xác thực việc sử dụng tài nguyên thông qua certificate của host
• Mã hóa dữ liệu
• Ủy quyền

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Người dùng muốn truy cập vào các tài nguyên của hệ thống lưới cần phải có một
certificate subject ánh xạ với một tài khoản trên máy ở xa được cung cấp bởi người quản
trị của hệ thống. Chứng thực này cần phải được ký bởi một tổ chức (CA) mà hệ thống tin
tưởng. Hầu hết các dịch vụ đòi hỏi người dùng phải được xác thực trước khi sử dụng các
chức năng của nó. Điều này đảm bảo việc chống thoái thác trách nhiệm và bảo mật dữ
liệu cho cả người sử dụng lẫn hệ thống.
Quản lý tài nguyên (resource management)

Globus resource allocation manager (GRAM): GRAM cung cấp khả năng thực thi các
công việc trên các máy ở xa, và trả kết quả thực hiện lại cho trình khách. Khi người dùng
gửi một công việc lên gatekeeper deamon trên máy ở xa, thì gatekeeper deamon sẽ kiểm
tra xem người dùng này đã được xác thực hay chưa. Nếu người dùng này đã được xác
thực thì nó sẽ tạo một job manager để quản lý và điều khiển việc thực thi công việc này.
Tùy thuộc vào biểu thời gian (scheduler) của hệ thống mà job manager có được tao ra
ngay lập tức hay không. Có nhiều loại biểu thời gian như: Portable batch system (PBS),
Load sharing facility (LSF), và Load Leveler. Trong GRAM chứa Globus resource
specification language (RSL) dùng để chứa các thông tin về tài nguyên mà một công việc
cần để thực thi như số lượng CPU, kích thước tối thiểu của bộ nhớ,…

Globus access to secondary storage (GASS): GASS là cơ chế truy cập tới các tập tin
trong hệ thống, nó cho phép ứng dụng có thể đọc, ghi các tập tin trên hệ thống từ xa.
GASS sử dụng GSI để đảm bảo đúng quyền hạn khi đọc ghi dữ liệu trên hệ thống.

Dịch vụ cung cấp thông tin của tài nguyên (Information services)

Gói này cung cấp thuộc tính của các nút (node) tham gia vào hệ thống lưới. Monitoring
and discovery service (MDS) cung cấp các hổ trợ để thông báo và truy vấn các thông tin
tài nguyên của hệ thống. MDS gồm ba tầng: tầng dưới cùng là Information providers
(IPs), nó chịu trách nhiệm tập hợp dữ liệu về thông tin, trạng thái của tài nguyên; tầng thứ
hai là Grid resource information service (GRIS), nó chịu trách nhiệm trả lời các truy vấn
về thông tin của tài nguyên và cập nhật vào cache; tầng trên cùng là Grid information
index service (GIIS), nó làm đề mục (index) cho thông tin tài nguyên được cung cấp bởi
GRIS và GIIS khác mà đăng ký với nó.

Quản lý dữ liệu (Data management)

Gói này cung cấp các tiện ích và thư viện để truyền tải, lưu trữ và quản lý các tập dữ liệu
lớn. Nó gồm 2 thành phần chính:

• GridFTP: Đây là giao thức mở rộng của giao thức FTP nhằm đảm bảo dữ liệu
được chuyển đổi trong môi trường lưới được bảo mật, đáng tin cậy và hiệu quả.
Ngoài ra, nó được chạy trên tầng GSI nhằm đảm bảo quá trình truyền nhận được
xác thực đúng người, đúng quyền.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xiii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

• Replica location and management: thành phần này hỗ trợ một file có thể được lưu
trữ nhiều nơi trong môi trường lưới. Replica location service (RLS) chịu trách
nhiệm tạo và xóa các bản sao (replica)

Dịch vụ Myproxy

Dự án về MyProxy[14] bắt đầu từ năm 2000 nhằm cung cấp một kho chứng chỉ trực tuyến
dùng cho các grid-portal và Globus Toolkit. Trước đây khi truy cập vào mỗi hệ thống tính
toán lưới chúng ta phải có chứng chỉ lưu trên máy tính mà chúng ta đang sử dụng. Điều
này nghĩa là trên nếu chúng ta ngồi trên một máy tính mà không có chứng chỉ để truy
xuất vào hệ thống lưới thì chúng ta sẽ không truy cập được vào hệ thống lưới đó.
Myproxy giúp chúng ta giải quyết đượcvấn đề này bằng cách sẽ lưu các chứng chỉ lên
một kho chứng chỉ trực tuyến được gọi là Myproxy Server, từ đó khi chúng ta ở bất kì
máy tính nào thì chúng ta đều có thể truy cập vào Myproxy Server để lấy chứng chỉ đó về
và truy cập vào hệ thống bình thường.

Myproxy có thể được dùng bằng nhiều cách khác nhau. Sau đây là một số cách dùng
của nó:

Hình 2. 3: Mô hình tổng quát của Myproxy service

Sau khi nhận được một chứng chỉ từ một cơ quan chứng thực (CA) ta có thể lưu
chứng chỉ đó lên một kho chứng chỉ online được gọi là Myproxy server bằng lệnh
myproxy-init. Về mặc định lệnh myproxy-init lưu một chứng chỉ có thời hạn 7 ngày
nhưng bạn có thể gia tăng thời gian hiệu lực của chứng chỉ đó. Sau đó khi ta cần truy cập
vào hệ thống lưới thì ta có thể lấy một chứng chỉ tạm thời từ myproxy server bằng lệnh
myproxy-logon. Với giải pháp myproxy server chúng ta không cần phải sao chép chứng
chỉ truy cập hệ thống lưới từ máy này qua máy khác vì việc này rất dễ gây ra lỗi và sẽ
không đảm bảo an toàn cho việc truy xuất hệ thống lưới của chúng ta.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xiv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 2. 4: Myproxy CA

Dùng MyProxy CA giúp chúng làm cho vấn đề lưu trữ chứng chỉ trở nên đơn giản
hơn. Trong trường hợp này Myproxy CA vừa là nơi cấp các chứng chỉ cho người dùng
vừa là nơi lưu các chứng chỉ đó tức là ta không cần phải lấy chứng chỉ người dùng được
cấp từ CA rồi dùng lệnh myproxy-init để lưu chứng chỉ đó lên Myproxy Server rồi khi
cần dùng thì ta phải gọi lệnh myproxy-logon để lấy một chứng chỉ tạm thời về máy của
mình, mà ở đây với MyProxy CA ta chỉ cần một lệnh myproxy-logon là có thể lấy một
chứng chỉ tạm thời từ Myproxy CA để phục vụ cho việc truy cập hệ thống lưới.

Hình 2. 5: Myproxy trong Grid-portal

Một grid-portal là một trang web cung cấp một giao diện cho nhiều dịch vụ khác nhau,
cho phép người dùng truy cập vào hệ thống lưới để thực hiện các tác vụ tính toán từ xa,
truyền tải file và truy vấn thông tin về các dịch vụ thông qua một trình duyệt web chuẩn.
Có nhiều cách để Myproxy có thể được dùng với các grid-portal. Trường hợp tổng quát
nhất để thông qua grid-portal truy cập đến hệ thống lưới đó là bạn đăng nhập vào portal
và portal sẽ liên hệ với Myproxy Server để lấy một chứng chỉ để nó có thể truy cập đến hệ
thống lưới với danh nghĩa của ta. Portal cần phải xác thực với Myproxy server để chứng
minh rằng nó đang thay mặt ta để lấy chứng chỉ của ta về. Một phương thức có thể dùng
đó chính là người dùng nhập thông tin của mình gồm username và password để đăng
nhập vào portal, và sau đó portal sẽ dùng username và password này để xác thực bạn với
Myproxy Server và lấy chứng chỉ của bạn về. Một cách khác đó chính là sau khi bạn đăng
nhập vào portal thì portal sẽ cung cấp một giao diện để bạn cung cấp thông tin về chứng
chỉ của bạn (hostname của Myproxy Server, username và password của chứng chỉ…),
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xv
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

portal sẽ sử dụng những thông tin đó để xác thực với Myproxy Server để lấy chứng chỉ
của bạn về.

Cơ chế hoạt động của Myproxy

Hình 2. 6: Cơ chế hoạt động của Myproxy

• Client A muốn xác thực một username sử dụng một password. Thì client A gửi
một request gồm username/password tới MyProxy server.
• MyProxy Server sử dụng nhiều cơ chế khác để xác thực Username/Password trên.
Có thể MyProxy Server sẽ kiểm tra các chứng chỉ của user này trên cơ sở dữ liệu
của mình. Hoặc có thể xác thực user này thông qua các cơ sở dử liệu bên ngoài
theo cơ chế Pluggable Authentication Module[7] hay Simple Authentication and
Security Layer(SASL)[8].
• Nếu việc xác thực thành công, MyProxy Server trả về một chứng chỉ mới cho user.
• Client A sẽ tạo ra một Session Password P' để sử dụng trong lần kế tiếp nếu một
ứng dụng nào đó đòi hỏi phải xác nhận Username.
• Client sẽ lưu lại chứng chỉ lên MyProxy Server dưới tên là Username và password
P'. Client A chỉ định thời gian tồn tại của chứng chỉ này. Đó cũng chính là thời gia
hữu dụng của Sesion password P’. MyProxy Server tự động kiểm soát thời gian
này.
• Sau khi kết thúc quá trình trên Client A có một password P' dùng để truy cập vào
các máy khác hoặc các dịch vụ khác trên hệ thống.Các dịch vụ này sẽ sử dụng
Username và password P' để xác thực user thông qua MyProxy server. Nếu sử
dụng java API thì phương thưc này được cung cấp trong file SSOUtils.java.
Tổng quan về GRAM

Để người dùng ở xa thực thi một chương trình thông qua một dịch vụ web ta cần phải
định nghĩa và cài đặt một dịch vụ web gồm một phương thức gọi thực thi chương trình từ
xa, tuy nhiên để cài đặt được ta phải giải quyết các vấn đề sau:

• State. Công việc tính toán có thể thực hiện các thao tác nhập/xuất trong khi chạy
làm ảnh hưởng tới trạng thái của tài nguyên tính toán và/hoặc tới hệ thống tập tin
gằn với công việc này. Do đó cần phải đảm bảo chỉ thực thi 1 lần: người dùng chỉ
có thể gửi lại yêu cầu sau khi nhận được kết quả phản hồi.
• User executables. Người dùng có thể cung cấp chương trình của riêng họ để gửi
thực thi từ xa.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xvi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

• Staging of input and output. Chương trình thực thi, dữ liệu vào/ra có thể lớn, ở
xa, và/hoặc được chia sẻ với các lời gọi thực thi khác. Vì thế yêu cầu bố trí dữ liệu
vào/ra là cần thiết.
• Streaming output. Một số chương trình thực thi cần được cung cấp khả năng cung
cấp kết quả kịp thời cho người dùng khi đang chạy. Vì vậy người dùng phải được
thông báo thường xuyên về dữ liệu ra của chương trình đang chạy.
• Control. Người dùng đôi khi cần ngưng 1 công việc đang thực thi vì 1 lý do nào
đó.
• Scheduler. Các tài nguyên tính toán lớn thường chịu sự điều khiển của 1 bộ lập
lịch để cấp phát tài nguyên theo các chính sách ưu tiên một cách tối ưu về hiệu
năng.
• Monitoring. Đối với 1 số công việc (job/task) phức tạp cần được theo dõi quá
trình thực thi và các thao tác can thiệp kịp thời như pending, suspending, staging…

GT4 cung cấp một dịch vụ dùng để quản lý và cấp phát tài nguyên - Grid Resource
Allocation and Management[10] (GRAM) nhằm đáp ứng các yêu cầu này. Thông thường
GRAM được triển khai cùng với các gói MyProxy và RFT để đáp ứng thêm được yêu cầu
về bảo mật, xác thực và trao đổi dữ liệu grid
Hệ thống GRAM kết hợp với các công cụ quản lý đã có được phát triển nhằm giải
quyết các yêu cầu trên. GRAM cho phép:

• Thực thi 1 chương trình bất kỳ,


• Hoàn thành các thao tác tin cậy,
• Thực hiện theo dõi các trạng thái,
• Quản lý ủy nhiệm thư,
• Bố trí tập tin và
• Tương tác với các bộ lập lịch đã có.

Cách thức hoạt động của GRAM

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xvii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 2. 7: Cấu trúc cài đặt của GRAM

Trong hình trên, các thành phần chính của GRAM gồm:

• Tập các dịch vụ chạy trên GT4 Java container:


• Dịch vụ tạo, theo dõi và quản lý công việc
• Dịch vụ đại diện nhằm quản lý các uỷ nhiệm thư
• Dịch vụ chuyển tập tin tin cậy (RFT) quản lý dữ liệu vào/ra của công việc.
• Một bộ tương thích lập lịch (GRAM adapter) để ánh xạ yêu cầu GRAM thành yêu
cầu tương ứng tới bộ lập lịch địa phương (đã có sẵn).
• GridFTP server dùng để thực thi các lệnh bố trí dữ liệu vào/ra của công việc.

Sử dụng cơ chế WS-Resource[11]

Các dịch vụ Web trong GT4 container dùng WS-Resource để biểu diễn trạng thái gắn
công việc (“ManagedJobs”), uỷ nhiệm thư, và quá trình trao đổi dữ liệu đang diễn ra.

Vấn đề bảo mật

GRAM hỗ trợ các mức độ kiểm tra an toàn bảo mật:

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xviii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

• Cơ chế WS-Sercurity nhằm xác nhận những uỷ quyền gắn với yêu cầu và cũng để
xác thực người yêu cầu.
• Phân quyền được thực hiện bằng 1 callout cấp quyền. Callout này sẽ truy vấn file
gridmap, SAML server, hay 1 cơ chế cấp quyền khác.
• Nếu có đủ quyền, công việc sẽ được thực thi và trả về 1 số hiệu ID cục bộ. Lệnh
tiện ích sudo sẽ được dùng để quản lý tài nguyên cục bộ.

Các dịch vụ chạy trong GT4 container không yêu cầu 1 quyền đặc biệt: các thao tác
cần quyền cao sẽ được thực hiện qua hàm “sudo”.
Để tránh sự can thiệp của người dùng khác, công việc (job) được gửi đi thường được thực
thi trong 1 bối cảnh an toàn tách biệt: ví dụ như dưới quyền của người dùng UNIX cụ thể
dựa vào yêu cầu của công việc và chính sách cấp quyền.
Để hỗ trợ việc tính tiền, theo dõi và ngăn chặn tấn công từ bên ngoài, GRAM cung cấp
các kỹ thuật thanh toán (audit), và ghi chép (logging) nhằm lưu trữ quá trình hoạt động
của hệ thống đặc biệt là các thao tác quan trọng.

Thao tác liên quan tới dữ liệu

Các thao tác liên quan tới việc bố trí dữ liệu vào/ra của công việc được GRAM giao cho
dịch vụ RFT đảm nhiệm. Tuỳ theo yêu cầu, dịch vụ RFT khởi tạo kết nối GridFTP giữa
máy nguồn và đích.

Ngoài các thao tác bố trí dữ liệu chuẩn, GRAM còn hỗ trợ cơ chế cập nhật dữ liệu ra
(standard output) 1 cách liên tục khi công việc đang tiến hành.

2.3 Single Sign On


Khái niệm
Single Sign-On[12] (SSO) là giải pháp phần mềm chứng thực tập trung đối với các ứng
dụng chạy trên các platform khác nhau. Khi đó, người dùng chỉ sử dụng 1 tài khoản (ID)
để được chứng thực và xác nhận quyền sử dụng tài nguyên của hệ thống.

Với hệ thống có nhiều website và application thì việc sử dụng Single Sign On (SSO)
là khá cần thiết nhằm đem lại nhiều thuận tiện cho người dùng và tăng tính năng bảo mật.
Lợi ích

• Tránh việc nhớ nhiều thông tin đăng nhập (username & password) khi dùng nhiều
dịch vụ.
• Tiết kiệm thời gian khi tái lập lại mật khẩu cho một người dùng (identity user).
• Bảo mật tất cả các cấp độ của việc thoát hay truy xuất vào hệ thống.
• Người phát triển ứng dụng không cần phải hiểu và thực hiện nhận dạng bảo mật
trong ứng dụng của họ.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xix


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 2. 8: Dịch vụ Single Sign On

Ví dụ: Trong trường học, người dùng sử dụng nhiều dịch vụ Đăng ký môn học, xem
điểm, xem thời khóa biểu được phát triển và lưu trử trên các ứng dụng khác nhau,ứng mỗi
dịch vụ ta có một tài khoản riêng. Nếu không sử dụng SSO thì với mỗi dịch vụ ta đều phải
nhập thông tin để xác thực. Khi một tổ chức đã thống nhất sử dụng SSO cho tất cả các
dịch vụ của họ thì người dùng chỉ cần đăng nhập một lần duy nhất trên bất kỳ dịch vụ nào
trong tổ chức, thì khi truy xuất những dịch vụ khác, người dùng không cần phải đăng
nhập lại.

SSO có thể được sử dụng dưới các dạng:

• Single Domain: Khi xác thực thành công vào domain.com, người dùng đồng thời
được xác thực vào các sub-domain.domain.com tồn tại.
• Multi Domain: Khi xác thực thành công vào facebook.com, người dùng đồng thời
được xác thực vào example.com

SSO thường sử dụng Cookie để nhận diện, webserver (hay webgate) gửi cookie đã
được mã hóa cho browser đã xác thực thành công, cookie này sẽ là chìa khóa sử dụng cho
các xác thực tới các tài nguyên khác hoặc cho các xác thực có cùng cấp.

Phần Cookie được mã hóa có thể bao gồm các thông tin: session, distinguished name
của người dùng đã xác thực thành công, IP của client đã yêu cầu, thời điểm khởi tạo

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xx


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

cookie, thời điểm sửa đổi cookie.. các thành phần không mã hóa của cookie có thể bao
gồm: thời gian expired, domain hoạt động, SSL/ Httponly…

Thuật toán mã hóa được recommend hiện nay là AES, bên cạnh là các thuật toán kém
bền vững hơn nhưng thông dụng như MD5-salt, RC4, RC6 vẫn được sử dụng phổ biến
trong các mã hóa cookie/ session.

Single Domain SSO

Cookie Path được cấu hình để dùng chung cho mọi subdomain: .domain.com (bao gồm
dấu . ở đầu)

Hình 2. 9: Mô hình Single Domain SSO

Multi Domain SSO

Multi Domain SSO cho phép người dùng truy cập vào nhiều domains/hosts sau 1 lần đăng
nhập. Một ứng dụng xác thực chính sẽ cung cấp các cookie hợp lệ cho mỗi domain.Chẳng
hạn người dùng truy cập vào gmail.com, khi đó toàn bộ services của Google, như
Google.com, Picasa, Blogspot… đều nhận diện tính xác thực cho người dùng đó.

Tuy nhiên cùng một cookie không thể được thiết đặt cho các domain khác nhau do
chính sách bảo mật của hầu hết browser, do đó một domain chính sẽ được chọn để xác
thực ở mọi quy trình, gọi chung là master domain. Với mỗi domain khác mà người dùng
thực hiện quá trình xác thực, mỗi webgate của hệ thống đó sẽ chuyển yêu cầu tới master
domain để xem đã yêu cầu đến từ user đó đã được xác thực chưa trước khi cho truy cập
vào hệ thống.

Master domain sẽ hoạt động như quy trình của Single Domain SSO, nó chính là
“proxy” để truyền tải cookie hợp lệ về cho mỗi domain có yêu cầu xác thực.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 2. 10:Mô hình Multi Domain SSO

Các bước hoạt động:

• Ta thiết đặt master domain, login-service.domain.com.


• Mỗi một domain nằm trong group SSO đều có script login riêng.
• Mọi hệ thống trên mỗi domain đều sử dụng chung Session Database.
• Khi mỗi Client yêu cầu người dùng xác thực, Webgate của nó sẽ redirects tới
master domain có chứa login service. Nếu người dùng chưa đăng nhập, master
domain sẽ triệu gọi script login của webgate mà user vừa mới gởi yêu cầu để thực
hiện việc login vào master domain. Khi người dùng đã xác thực, một session sẽ
được tạo trong database và master domain sẽ cung cấp session id cho client yêu
cầu để có thể tạo cookie theo session đó.

Ta có thể mô tả hoạt động của Multi Domain SSO ở hình 2 như sau:

• Bước 1: User gởi yêu cầu truy cập tới WebGate1 có domain là host1.domain1.com.
• Bước 2: WebGate1 trả lại địa chỉ của Master Domain chính là WebGate2 có
domain là host2.domain2.com.
• Bước 3: Yêu cầu đăng nhập tự động chuyển từ Browser đến WebGate2 và
WebGate 2 yêu cầu user xác thực, tạo ra SSOcookie và được lưu ở WebGate2.
• Bước 4: WebGate2 trả về cho Browser SSO cookie.
• Bước 5: Browser tự động sử dụng SSOcokie đó để truy cập vào WebGate1.
• Bước 6: Nội dung cần truy cập được trả về cho Browser.
• Bước 7: Nếu vẫn là User’s Browser đó yêu cầu truy cập vào Webgate 3 thì nó sẽ
gởi đi yêu cầu truy cập cùng SSOcookie đã được tạo ra ở bước 4, yêu cầu và
SSOcookie vẫn được chuyển tới WebGate2 nhưng lúc này SSOcookie được gởi tới
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxii
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

trùng với SSOcookie được lưu ở WebGate2 nghĩa là User đó đã được xác thực nên
lúc này sẽ không yêu cầu xác thực lại mà sẽ tự động chuyển yêu cầu truy cập đễn
WebGate3 để truy cập vào hệ thống WebGate3.

2.4 Tổng quan về sakai


Năm 2004, Quỹ tài trợ Mellon Foundation quyết định tài trợ cho bốn trường đại học hàng
đầu ở Mỹ, Đại học Michigan, Indiana University,Viện Công nghệ Massachusetts và Đại
học Stanford để hợp tác phát triển một hệ thống nền mã nguồn mở như một môi trường
phần mền để phát triển các công cụ hổ trợ cho việc giảng dạy, học tập, và nghiên cứu
khoa học. Sau đó thì đại học California tại Berkeley cũng tham gia phát triển. Từ đó dự
án Sakai[5] chính thức được ra đời. Ngày nay có tới cả triệu cá nhân thuộc các trường đại
học và các tổ chức tham gia hợp tác xây dựng hệ thống Sakai. Cùng với đó là một lượng
rất lớn người dùng sử dụng Sakai như một phần trong công việc giảng dạy, học tập,
nghiên cứu trên khắp thế giới.

Hình 2. 11: Sakai Portal

Sakai CLE (Collaboration and Learning Environment - CLE). là một phần mềm giáo
dục miễn phí, mã nguồn mở được phân phối theo Giấy phép Giáo dục Cộng đồng
(Educational Community License - một kiểu của giấy phép mã nguồn mở). Sakai CLE
được dùng để dạy học, để nghiên cứu và để cộng tác nhiều người với nhau. Hệ thống này
là một dạng của Hệ quản trị đào tạo (Learning Management System - LMS).

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxiii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ
Tính năng của sakai

Hình 2. 12:Một số tính năng của Sakai

Sakai bao gồm nhiều tính năng chung của các Hệ quản trị đào tạo(tham khao), bao gồm
đưa lên các tài liệu hướng dẫn, sách giáo trình, mục thảo luận, chat trực tuyến, bài tập lớn,
và các bài kiểm tra online…

Thêm vào đó, Sakai còn cung cấp một bộ công cụ làm việc nhóm dùng cho nghiên
cứu và các dự án nhóm. Để hỗ trợ các tính năng này, Sakai đã thêm vào khả năng thay đổi
thiết lập của tất cả mọi công cụ dựa trên vai trò, thay đổi quyền hệ thống tùy theo người
dùng. Nó cũng tích hợp một wiki, mailing list và lưu trữ, và bộ đọc RSS. Chính các chức
năng này mà dự án Vn-Grid muốn tạo một cộng đồng nghiên cứu khoa học dựa vào
Sakai ở đó ngoài những tính năng trên người dùng có thể truy cập vào hệ thống tính toán
lưới để tận dụng sức mạnh tính toán phục vụ cho nhu cầu nghiên cứu khoa học.

Bộ công cụ làm việc nhóm tích hợp trong nhân của Sakai:

• Announcements - để thông báo cho người dùng về những vấn đề chính yếu
• Drop Box - cho phép giảng viên và học viên trao đổi tài liệu với những thư mục
riêng biệt cho mỗi sinh viên
• Email Archive - tất cả tin nhắn gửi đến địa chỉ email của trang web sẽ được lưu trữ
tại đây
• Resources - chia sẻ nhiều loại thông tin yêu cầu độ bảo mật với các thành viên
trong trang, hoặc cho phép nó được nhìn thấy bởi mọi người.
• Chat Room - chat thời gian thực cho mọi thành viên đang đăng nhập vào site
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxiv
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

• Forums - công cụ để cho giảng viên và thành viên được cấp quyền có thể tạo ra các
mục thảo luận
• Threaded Discussion
• Message Center - công cụ giao tiếp cho phép các thành viên sử dụng mail nội bộ
• Message Of The Day
• News/RSS - công cụ đọc RSS
• Poll tool - cho phép người dùng bình chọn trực tuyến
• Preferences
• Presentation - cho phép thực hiện thuyết trình trực tuyến
• Profile / Roster - hồ sơ người dùng, bao gồm hình ảnh, tên tuổi và các thông tin
khác
• Repository Search - tìm kiếm thông tin được lưu trữ trên site
• Schedule - cho phép giảng viên đưa thông tin dưới dạng thông tin trên lịch
• Ngoài những công cụ trên Sakai còn rất nhiều các bộ công cụ khác phục vụ cho
việc giảng dạy và bổ trợ giảng dạy.

Kiến trúc của Sakai[13]:

Sakai không chỉ mà một môi trường hợp tác trong giáo dục mà còn là một framework
cho việc phát triển các tool như Wiki, chat tool…một cách đơn giản nhất có thể. Sakai
được xây dựng trên nền như một ứng dụng java bằng tất cả các framework và kiến trúc
hiện đại nhất như Spring, Hibernate, Servlets, Java Server Faces …. Về mặt vật lý, Sakai
được đặt trong Tomat server giữ vai trò reponse và request cho ứng dụng chạy trên Sakai.
Hình dưới là một số hình tổng quan về kiến trúc của Sakai:

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

External
Aggregator

Client
Internal
Aggregator

The Abstract Sakai Environment


Aggregator Presentation
Support

The Sakai Framework

The Sakai Tool Environment


Tool
Presentation
Presentation

Tool Code
Tools

Application
Services
Services

Framework
Services
System

System

Hình 2. 13: Mô hình trừu tượng Sakai

Sakai Portals via uPortal via uPortal via ????? via


Stand-Alone iFrame JSR-168 WSRP ????

Servlet/HTML JSR-168 WSRP ?????


Renderer Renderer Renderer Renderer

Sakai JSF
Widget Set
The Sakai Framework

The Sakai Tool Environment

Java Server
Faces in JSP

Java Tool Logic


Java Beans

Sakai Application
Services

Sakai/OKI
APIs

Hình 2. 14: Sakai Framework

Lớp Aggregation

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxvi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Mở Sakai lên trong mỗi user như hình dưới cho thấy rằng mỗi user phải làm việc với
nhiều Sites.(hình)

Trong mỗi site đó lại có nhiều trang và tool khác nhau (hình nhỏ). Do đó lớp
Aggregation này có chức năng tổng hợp các mảnh giao diện từ các trang và tool khác
nhau để cho ra một trang web tổng thể cho user. Ngoài ra lớp Aggregation này còn cho
phép user tùy chọn cách trình diễn của các mảnh giao diện trên theo ý người dùng.

Lớp Presentation

Bên dưới lớp Aggregation là lớp Presentation chứa một bộ các thành phần cấu thành một
trang của Sakai. Tham khảo hình dưới là một ví dụ các thành phần giao diện trong lớp
Presentation tập hợp trong một file JSP.

<sakai:view_container title="#{msgs.sample_title}">

<sakai:tool_bar> <sakai:tool_bar_item/> </sakai:tool_bar>

<sakai:instruction_message
value="#{msgs.sample_one_instructions}" />

<sakai:group_box
title="#{msgs.sample_one_groupbox}">

<h:inputText
value="#{MyTool.userName}" />

<sakai:date_input
value="#{MyTool.date}" />
<sakai:button_bar>
<sakai:button_bar_item
action="#{MyTool.processActionDoIt}
value="#{msgs.sample_one_cmd_go}" />
</sakai:button_bar>

Hình 2. 15: Lớp Presentation của Sakai

Các công nghệ hiện sử dụng ở lớp Presentation là JSF, JSP, Velocity,và Struts, RSF.

Lớp Tool

Tool là một đơn vị chức năng rời rạc trong Sakai ví dụ như tool announcement, wiki…
Mỗi tool giúp đáp ứng một chức năng nào đó của người dùng. Các tool thao tác trên dữ
liệu của mình bằng các dịch vụ cơ bản cung cấp ở lớp service. Chức năng của Sakai
kernel là quản lí các dịch vụ và các tool. Sakai cho phép các nhà phát triển có thể tự xây
dựng các dich vụ riêng của mình. Do đó khi một dịch vụ mới hay một tool mới được xây
dựng thì phải đăng kí với Sakai Kernel. Ví dụ ta đang chạy Sakai mà copy vào thư mục
wedapp/toolApp thì ngay lập tức toolApp sẽ được đăng ki với Sakai Kernel. Các tool này
được xây dựng dựa trên các dịch vụ bên dưới của lớp Service.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxvii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Lớp services

Việc thiết kế lớp dich vụ nhằm giúp đơn giản hóa quá trình phát triển Sakai che dấu đi các
hiện thực chi tiết bên dưới của Sakai. Nhà phát triển ứng dụng trên Sakai chỉ cần dựa trên
các dich vụ được cung cấp. Ví dụ như một tool không cần biết kiểu cơ sở dử liệu bên dưới
là MySQL hay Oracle… hay hệ thống file nào được các dịch vụ sử dụng và đặt ở đâu.
Các service cơ bản của Sakai như dịch vụ lấy, xóa, thêm một user hay thông tin về các
môn học. Hoặc ví dụ người phát triển có thể phát triển một dịch vụ thêm, điều chỉnh, xóa
trên sổ lớp. Từ đó các tool khác có thể sử dụng các dịch vụ này để thay đổi sổ lớp hay
chẳng hạn viết một công cụ in sổ lớp dưới những định dạng khác nhau dựa trên dịch vụ đã
có. Còn làm thế nào để xây dựng các dịch vụ này người đọc có thể tham khảo chương 11
của tài liệu tham khảo[Sakai-Courseware-Management-the Official-Guide].

Nhìn một các tổng quát thì Sakai như một bó khổng lồ các ứng dụng web chạy cùng
một servlet container, cùng chia sẽ các dịch vụ trung tâm. Khi một trình duyệt gửi một
request; một ứng dụng sẽ nhận request đó, làm một vài công việc, xong trả về một
respone chứa những thông tin mà request yêu cầu. Quá trình này nhìn chung là khá phưt
tạp trước hết request từ web browser sẽ đi qua một bột Aggregator ở lớp Aggregator sau
đó sẽ chia request thành nhiều request nhỏ để chỉ định cho các tool, sau đó các tool này sử
dụng các dịch bên dưới và trả về các kết quả mong muốn. Cuối cùng bộ Aggregator sẽ thu
thập các kết quả trả về của các tool đó để trả về một response cho người dùng ở web
Browser ,thông thường là một trang web.

2.5 Tổng quan về OGCE portal


OGCE portal là một portal cung cấp các portlet và tool dùng để truy cập vào hệ thống
Grid Computing thông qua môi trường web. OGCE portal được phát triển dựa trên bột
thư viện Java Cog Kit. Nó bao gồm nhiều portlet như ProxyManager, JobSubmission,
FileManager, Grid Information, Comp-file Manager… và các tool khác axis2, balancer,
applets…

Hình 2. 16: Các portlet đặc trưng của OGCE portal

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxviii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 2. 17: Portlet Myproxy Manager của OGCE portal

Portlet proxymanager dùng để quản lý các chứng chỉ proxy của user. Chỉ khi chứng
chỉ của user được load lên trong proxymanager portlet thì các portlet khác sẽ sử dụng
chứng chỉ này đề xác thực và trở nên sẵn sàng để sử dụng.

Hình 2. 18: Portlet Comp-file-management của OGCE portal

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxix


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Portlet Comp-file-management dùng để truyền file giữa các tài nguyên Grid, upload
file lên một tài nguyên Grid, download file từ tài nguyên Grid về máy.

Kiến trúc OGCE portal

OGCE portal sử dụng Gridsphere container như một portlet container để quản lý tất cả
các Grid portlet trong OGCE portal. Do đó các portlet đều phát triển trên nền Gridsphere,
ngoài tuân thủ chuẩn JSR 168, còn portlet còn phải tương thích với Gridsphere và sử dụng
một vài gói thư viện để chạy như gridsphere-tag.jar…

Hình 2. 19: Kiến Trúc của OGCE portal

Như hình ở trên tất cả các các portlet khác của portal đều phải sử dụng MyProxy
Manager để lấy chứng chỉ trước khi sẵn sàng. Các portlet này sẽ giao tiếp với Globus
Tool Kit 4.0 bằng bộ thư viện interface cung cấp cho client là java CoG API. Vì tất cả các
portlet JSR 168 này đều khả chuẩn từ Gridsphere framework sang uPortal. Do đó để chạy
các portlet JSR 168 này trong pluto container ở trong Sakai là hoàn toàn có cơ sở. Vì
pluto về bản chất là một bản thu gọn của uPortal.

2.6 Tổng quan về Axis Service


Trước hết tại sao nhóm phải giới thiệu gói dịch vụ Axis[14] ở đây là vì trong quá trình thực
hiện đề tài thì nhóm gặp lỗi liên quan đến gói dịch vụ này của apache tomcat. Cũng chính
lỗi đó mà nhóm đã tốn rất nhiều thời gian để debug.

Apache Axis là một gói dịch vụ dùng để điều khiển luồn dữ liệu vào và ra portal. Vì
các dữ liệu lưu thông trên portal đều đưa về dạng một file XML,ví dụ như các giá trị,

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxx


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

thuộc tính của các Java Object, theo một giao thức nào đó cùng với thông tin phụ đi kèm
để truyền đi đến các dịch vụ. Do đó để điều khiển các luồn vào ra này thì bên dưới
Apache cung cấp một gói gọi là Axis ở cả client và server để điều phối dữ liệu.

Trước hết xin gới thiệu hình mô tả cấu trúc bên trong của Axis

Hình 2. 20: Kiến trúc của Axis Services

Hình trên là quá trình hoạt động của Axis Engine bên phía server. Một message đến
tại Transport Listener. Trong trường hợp này ta xem nó là một HTTP servlet . Công việc
của Listener là sẽ đóng gói request đó thành một Message rồi đặt Message này vào một
class gọi là MessageContext. Trong MessageContext chứa Message còn chứa nhiều
thuộc tính khác được Listener thiết lập. Khi MessageContext đã được xây dựng thành
công thì nó được truyền qua bộ AxisEngine. Công việc của AxisEngine là xác định được
service bên dưới mà request cần và trả về một reponse cho Listener. Thông tin chi tiết về
cấu tạo các class bên trong xin xem thêm tài liệu tham khảo, mô tả chi tiết các quá trinh
tạo Message và truyền message.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

2.7 Chuẩn portlet JSR 168


Chuẩn portlet JSR 168[15] dùng để định nghĩa portlet và cách thức giao tiếp giữa portlet và
portal.

Hình 2. 21: Mô hình chuẩn của JSR 168

Hình trên mô tả sự giao tiếp giữa portal và các portlet. Sự giao tiếp này được thực hiện
thông qua các API được cung cấp bởi chuẩn JSR 168.
Một số khái niệm chính:

Portal
Portal là một ứng dụng web dùng để tích hợp các nội dung từ các nguồn khác nhau vào
cùng một trang web. Các nội dung có thể được cấu hình tùy thuộc vào người sử dụng
khác nhau mà Portal cho phép. Một Portal có thể chứanhiều Portlet.

Portlet
Portlet là một thành phần dựa trên nền Web sử dụng các công nghệ của Java. Portlet được
quản lý bởi một Portlet Container. Portlet dùng để xử lý các yêu cầu và tạo ra các thành
phần dữ liệu động để phản hồi các yêu cầu.

Portlet có thể tích hợp vào Portal và Portal sẽ cung cấp tầng trình diễn cho các thành
phần của Portlet.
Nội dung được tạo ra bởi các Portlet được gọi là Fragment. Một Fragment là một
mảnh dữ liệu được tạo ra bởi các ngôn ngữ như: HTML, XML… theo một định dạng
được quy định. Các Fragment này có thể được kết hợp với các Fragment của các Portlet
khác để hình thành trang Web của portal.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Người sử dụng tương tác với Portlet thông qua cơ chế yêu cầu/phản hồi được cung cấp
bởi Portlet. Nội dung phản hồi yêu cầu được Portlet tạo ra và nội dung này cũng tùy thuộc
vào cấu hình ứng với từng người sử dụng.

Portlet Container

Portlet Container cung cấp một môi trường để chứa đựng và quản lý chu kỳ sống của một
Portlet.

Portlet Container nhận yêu cầu từ Portal và chuyển yêu cầu này đến Portlet tương ứng
để Portlet xử lý yêu cầu và tạo nội dung phản hồi.

Giao diện Portlet

Giao diện Portlet khai báo các API cơ bản nhất của một Portlet. Mọi Portlet được xây
dựng đều phải hiện thực hóa trực tiếp hoặc gián tiếp giao diện Portlet.
Lớp GenericPortlet hiện thực hóa giao diện Portlet và định nghĩa các chức năng cơ bản
nhất mà một Portlet cần có. Do đó khi xây dựng Portlet, lập trình viên nên mở rộng trực
tiếp hoặc gián tiếp lớp GenericPortlet này.

Một Portlet được quản lý thông qua chu trình sống của nó bắt đầu từ lúc Portlet được
tải lên, tạo thể hiện của nó và khởi tạo, hoạt động để phản hồi yêu cầu của người sử dụng
đến lúc nó được loại bỏ. Các phương thức được gọi đến trong chu trình sống của Portlet
là:

• Gọi Phương thức init trong quá trình khởi tạo Portlet.
• Nêu yêu cầu do máy khách gởi tới là yêu cầu hành động( Action Request) thì
phương thức processAction được gọi. Nếu yêu cầu do máy khách gởi tới là yêu cầu
biểu hiện ( Render Request) thì phương thức render được gọi
• Khi Portlet Container xác định một Portlet không còn sử dụng nữa thì gọi đến
phương thức destroy của Portlet đó. Khi phương thức destroy được gọi thì Portlet
sẽ giải phóng tài nguyên mà nó đang sử dụng và lưu lại trạng thái hiện thời của nó.

Portlet URL

Một Portlet có thể tạo ra URL tham chiếu đến chính Portlet đó. Khi đó các URL này được
gọi là Portlet URL.
Để tạo ra một Portlet URL thì Portlet cần phải sử dụng đối tượng PortletURL. Nếu
phương thức createActionURL được gọi thì sẽ tạo ra một Action URL và nếu phương
thức createRenderURL được gọi thì sẽ tạo ra một render URL.
Portlet Mode

Kiểu portlet xác định chức năng mà Portlet đó đang thực hiện. Thông thường Portlet
thực hiện các tác vụ và tạo ra nội dung tùy thuộc vào chức năng hiện thời. Kiểu Portlet
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxiii
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

cho ta biết những tác vụ nào một Portlet cần thực hiện và những nội dung nào Portet cần
phải tạo ra.

Có 3 kiểu Portlet được quy đinh là:

• VIEW:

Chức năng chính của Portlet khi sử dụng kiểu VIEW là tạo ra nội dung cho biết
trạng thái của Portlet.

Lập trình viên sẽ hiện thực hóa kiểu VIEW bằng cách định nghĩa lại phương thức
doView của lớp GenericPortlet.
Mọi Portlet đều phải hỗ trợ mode VIEW .

• EDIT:

Trong kiểu EDIT, một Portlet sẽ cung cấp nội dung và cấu hình các thành phần
của nó để người sử dụng có thể tối ưu hóa hoạt động của Portlet.

Lập trình viên sẽ hiện thực hóa kiểu EDIT bằng cách định nghĩa lại phương thức
doEdit của lớp GenericPortlet.

Mọi Portlet không nhất thiết phải hỗ trợ kiểu EDIT.

• HELP

Trong kiểu HELP, Portlet cung cấp những tin về Portlet. Những thông tin này
thường là những thông tin chung về toàn bộ Portlet.

Portlet Request

• Một yêu cầu gởi đến Portlet chứa các thông tin về yêu cầu từ phía máy khách, các
tham số của yêu cầu, nội dung dữ liệu yêu cầu, kiểu Portlet, trạng thái cửa sổ…
• Yêu cầu được đại diện bởi một đối tượng và đối tượng này được truyền vào như là
đối số của phương thức procesAction hay render.
• Mỗi đối tượng yêu cầu chỉ có thể hoạt động trong phạm vi của một phương thức
processAction hay render.
• Các chức năng cần thiết của đối tượng PortletRequest được khai báo trong giao
diện PortletRequest.

Portlet Respone

• Một phản hồi của Portlet bao gồm những thông tin được tạo ra bởi Portlet gởi trả
về cho Portlet Container dựa trên yêu cầu được gởi đến như: sự thay đổi kiểu

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxiv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Portlet, tiêu đề, nội dung… Portlet Container sẽ sử dụng những thông tin này để
tạo ra phản hồi đến người sử dụng, thông thường là một trang Web Portal.
• Mỗi đối tượng phản hồi chỉ có thể hoạt động trong phạm vi của một phương thức
procesAction hay render.
• Các chức năng cần thiết của đối tượng Portlet Respone được khai báo trong giao
diện PortletRespone.

Portlet Preferences

• Portlet thông thường được cấu hình cho phù hợp với từng người sử dụng. Các
thông tin về cấu hình của Portlet được gọi là Portlet Preference. Portlet Container
sẽ chịu trách nhiệm lưu giữ những thông tin cấu hình này.
• Portlet có thể truy cập vào các thông tin cấu hình của nó thông qua giao diện
PortletPreferences và Portlet chỉ có thể thay đổi các thônt tinh về cấu hình của nó
bên trong phương thức processAction.
• Định nghĩa Portlet xác định các thuộc tính preference mà một Portlet sử dụng.
Định nghĩa này bao gồm các giá trị khởi tạo và xác định xem thuộc tính này có
phải là thuộc tính chỉ đọc hay không.

Caching

• Việc lưu các nội dung cần sử dụng vào vùng nhớ tạm thời được thực hiện nhằm
mục đích rút ngắn thừoi gian xử lý của Portlet, đồng thời cũng rút ngắn thời gian
xử lý của Server.
• Đặc tả Portlet xác định cơ chế hết hạn việc lưu trữ nội dung lưu tạm thời này. Cơ
chế này hoạt động tùy thuộc vào từng Portlet và từng người sử dụng Portlet. Nội
dung được lưu trữ tạm thời không được chia sẻ giữa các người sử dụng khác nhau
đang sử dụng đồng thời cùng một Portlet.
• Một Portlet muốn tăng thời gian xử lý bằng cách sử dụng cơ chế lưu trữ tạm thời
nội dung cần phải định nghĩa thời gian hết hạn của nội dung lưu tạm thời ( tính
bằng đơn vị giây) trong đặc tả triển khai của nó. Ví dụ sau đây cho biết một Portlet
muốn nội dung của nó được lưu trữ tạm thời và có thời gian hết hạn là 300 giây.

<portlet>

<expiration-cache>300</expiration-cache>

• Một Portlet nếu đã định nghĩa thời gian hết hạn lưu trữ dữ liệu tạm thời của nó
trong đặc tả triển khai của nó vẫn có thể thay đổi được.
• Thời gian hết hạn của việc lưu trữ tạm thời này có thể được thay đổi bằng cách
thay đổi thuộc tính của đối tượng RenderResponse.
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxv
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

• Nếu thời gian hết hạn này được gán bằng 0 thì việc lưu trữ dữ liệu tạm thời bị bỏ
qua đối với Portlet. Nếu giá trị này được gán bằng -1 thì các nội dung lưu trữ tạm
thời của Portlet sẽ không bao giờ bị hết hạn.
• Nêu một Portlet không định nghĩa thời gian hết hạn của dữ liệu lưu trữ tạm thời
trong đặc tả triển khai của nó thì việc thay đổi giá trị thời gian này trong đối tượng
RenderResponse sẽ không có tác dụng do sẽ bị Portlet Container bỏ qua.
• Nếu nội dung của Portlet được lưu trữ tạm thời và chưa hết hạn, đồng thời không
có một yêu cầu nào đến Portlet từ phía người sử dụng thì Portlet Container sẽ sử
dụng nội dung được lưu trữ tạm thời khi cần thiết.

Ứng dụng Portlet

Ứng dụng Portlet là một ứng dụng Web nên ngoài việc bảo gồm Portlet và đặc tả triển
khai Portlet, nó còn có thể chứa các thành phần khác như: Servlet, trang JSP, các class…
Do đó, bên cạnh các thông tinh về ứng dụng Portlet, nó còn chứa đựng thông tin về các
thành phần được đưa vào ứng dụng Portlet.

Cấu trúc cây thư mục

Một ứng dụng Portlet cũng có cấu trúc cây thư mục được tổ chức giống như một ứng
dụng Web. Tuy nhiên có một số khác biệt sau:

- Có thêm tập tin /WEB_INF/portlet.xml là tập tin đặc tả triển khai của Portlet.
- Các lớp được sủ dụng cho ứng dụng Portlet và các tài nguyên khác được truy cập
bởi ứng dụng Portlet cần phải được lưu trong thưmục /WEB-INF/classes hoặc
trong các tập tin JAR được lưu trong thư mục /WEB-INF/lib.

Tập tin lưu trữ của ứng dụng Portlet

Một ứng dụng Portlet cũng được đóng gói như một ứng dụng Web. Nghĩa là sử dụng
dạng WAR (Web Application Archive) khi triển khai ứng dụng.

Các đặc tả đóng gói và triển khai

Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet

Trong các ứng dụng Portlet, luôn tồn tại 2 tập tin đặc tả là:

• Tập tin web.xml dung để đặc tả các tài nguyên của ứng dụng Web.
• Tập tin portlet.xml dung để đặc tả các tài nguyên của ứng dụng Portlet.

Các tài nguyên nào không liên quan đến Portlet thì được khai báo trong tập tin đặc tả
web.xml. Còn các tài nguyên nào liên quan đến Portlet thì được khai báo trong tập tin

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxvi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

portlet.xml. Ngoài ra, một số thông tin của Portlet cần phải được khai báo trong tập tin
web.xml như sau:

• Mô tả về ứng dụng Portlet được khai báo bằng thẻ <description>.


• Tên của ứng dụng Portlet được khai báo bằng thẻ <display-name>.
• Việc ánh xạ các vai trò bảo mật( Security Role Mapping) của ứng dụng Portlet
được khai báo bằng thẻ <security-role>.

Triển khai ứng dụng Portlet và ứng dụng Web

Các Portlet, đặc tả triển khai và mọi tài nguyên phải được đóng gói trong cùng một tập tin
WAR. Trong đó, thư mục WEB-INF bao gồm các thành phần:

- Tập tin đặc tả triển khai /WEB-INF/portlet.xml


- Các lớp của Portlet nằm trong thư mục /WEB-INF/classes
- Các tập tin JAR được lưu trong thư mục /WEB-INF/lib

Chương 3: Phân tích và hiện thực hệ thống đề tài luận


văn
3.1 Phân tích hệ thống
Dựa trên mục tiêu của đề tài là phải kết nối hệ thống Sakai với hệ thống Tính Toán Lưới
của trường. Hệ thống Sakai của trường đang dùng là phiên bản Sakai 2.5.4 và hệ thống

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxvii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Tính Toán Lưới được hiện thực bởi Globus Toolkit 4.0.x. Và để truy cập vào hệ thống
Tính Toán Lưới này bằng một môi trường web thì có nhiều portal hổ trợ công việc đó.
Hiện tại OGCE(Open Grid Computing Environments) là một trong những portal hỗ trợ
gần như đầy đủ các chức năng tương tác với hệ thống Tính Toán Lưới qua Globus
Toolkit 4.0. Trong portal OGCE gồm các portlet: iframe-portlet, jobsubmission,
proxymanager-portlet, gp-browser-2, gp-job-submission, condor-job-submission… thông
qua những portlet này người dùng sử dụng và quản lý hệ thống Grid Computing.

Hình 3. 1: Mô hình tổng quát hệ thống ban đầu

Hình trên mô tả tổng quát hệ thống OGCE portal kết nối với Globus Toolkit 4.0.
Trong đó người dùng sử dụng các portlet JSR 168 để tương tác với hệ thống Tính Toán
lưới. Trong đó ta thấy có ba portlet mà tiêu biểu thể hiện trên hình là ProxyManager
Portlet, JobSubmit Portlet, Comp-file-Manager portlet. OGCE đáp ứng được khả năng
truy cập hệ thống Tính Toán Lưới nhưng lại không được phát triển nhằm tạo ra một cộng
đồng những người sử dụng hệ thống Tính Toán Lưới. Quay lại mô hình ban đầu, kế bên
portal OGCE lúc này là hệ thống Sakai của trường mà ở đây người dùng độc lập với hệ
thống Tính Toán Lưới. Mục đích của đề tài lúc này là làm sao kết nối hệ thống Sakai này
với hệ thống Tính Toán Lưới của trường.

Hình sau thể hiện mô hình mà nhóm đã quyết định xây dựng. Sau khi ta hoàn thành
xong thì người dùng có thể kết nối với hệ thống Tính Toán Lưới bên dưới thông qua
Globus Toolkit 4.0 sử dụng cơ chế xác thực bằng chứng chỉ khóa công cộng.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxviii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 3. 2:Mô hình tổng quát hệ thống cần xây dựng.

Từ hình trên cho thấy là nhóm phải bằng cách nào đó đưa các chức năng hiện có ở
OGCE portal vào Sakai..

Trước hết để kết nối hệ thống Sakai và hệ thống Grid Computing hiện nay chúng ta
phải làm gì?

Rõ ràng là phải giải quyết được vấn đề truy cập, cấp phát quyền người dùng , sao cho
người dùng của Sakai có thể truy cập vào hệ thống tính toán lưới thông qua Globus. Cơ
chế xác thực và cách quản lý user của Sakai và Globus Toolkit 4.0 là hoàn toàn khác
nhau. Một bên Sakai sẽ sử dụng cơ chế xác thực User Directory Service. Một bên Globus
Toolkit 4.0 sử dụng chứng chỉ khóa công cộng để quản lý người dùng. Qua quá trình khảo
sát và nghiên cứu thì nhóm thực hiện đề tài chưa đi sâu giải quyết vấn đề mâu thuẫn trên.
Tức là trên hệ thống Sakai có nhiều nhóm người dùng khác nhau, có nhóm sử dụng hệ
thống Tính Toán Lưới, có nhóm không sử dụng tại một thời điểm nào đó. Do đó phải cần
can thiệp bên dưới sao cho những nhóm người dùng sử dụng các portlet chức năng của
Globus Toolkit 4.0, có khả năng đăng nhập Globus một cách tự động. Còn những nhóm
người dùng không được cấp quyền sử dụng Globus thì không có bất kỳ một chứng chỉ
nào để truy cập Globus.

Từ những đánh giá ở trên ta sẽ có được mô hình hoạt động chi tiết của hệ thống mong
muốn như hình dưới. Trong mô hình đó cần có một dịch vụ getProxyService( username,

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxix


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

passphrase). Dịch vụ này có chức năng tự động lấy các chứng chỉ proxy mà người dùng
username trên sakai có về sakai.

1 .Là quá trình dịch vụ getProxyService() lưu tất cả các chứng chỉ proxy vào một
bảng chứng chỉ proxy.

2. Là quá trình từ phía người sẽ có một portlet ProxyManager tự động cập nhật tất
cả các chứng chỉ proxy và liệt kê ra cho người dùng username sử dùng một trong
các chứng chỉ đó.

Hình 3. 3:Sơ đồ hoạt động của hệ thống mong muốn

Dưới đây là các hình ảnh của hai portlet ProxyManager và JobSubmission trên portal
OGCE trong mô hình hệ thống ban đầu.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xl


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 3. 4:Portlet MyproxyManager của OGCE portal

Hình trên là hình ảnh của proxymanager-portlet, portlet này sẽ tương tác với MyProxy
server để lấy các chứng chỉ Proxy của user. Mục đích của nhóm là rút gọn giai đoạn này
người dùng Sakai sẽ không còn phải nhập username và passphrase một lần nữa. Mà sẽ có
một dịch cụ GetProxyservice(username, passphrase) bên dưới trong Sakai đảm nhận vai
trò này. Giao diện người dùng sẽ chuyển sang giao diện của hình tiếp theo. Giữ lại cac
chức nay còn lại của ProxyManager Portlet.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xli


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 3. 5: Lấy Proxy của người dùng qua OGCE portal

Hình trên là hình ảnh proxymanager-portlet của OGCE portal đã lấy về chứng chỉ Proxy
của user. Proxymanager-portlet còn hỗ trợ sử dụng nhiều chứng chỉ cùng thời, ở đó cho
phép user chuyển quyền sử dụng từ Proxy cộng đồng và Proxy cá nhân bằng chức năng
Set as default. Các portlet khác sẽ sử dụng Proxy được thiết lập mặc định là default proxy.
Còn bên dưới là hình của portlet OGCE jobsubmission:

Hình 3. 6:Portlet JobSubmission của OGCE portal

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Trong quá trình tìm hiểu và thực hiện đề tài thì nhóm đã hiện thực được hệ thống, có thể
nói là chấp nhận được hoạt động như hình bên dưới, bằng cách thực hiện tích hợp các
portlet JSR 168 của OGCE vào Sakai Portal.

Hình 3. 7:Sơ đồ hoạt động hệ thống đã hiện thực

Trong hệ thống Sakai của nhóm thì người dùng login vào Sakai ở bước 1,trong bước 2
sau đó sử dụng Portlet ProxyManger của OGCE portal để lấy các chứng chỉ từ Myproxy
Server. Tiếp theo tại bước 3 là lưu lại các chứng chỉ này vào Proxy Table trên portlet.

3.2 Đề xuất cơ chế tích hợp portlet JSR 168 vào Sakai
Từ yêu cầu của đề tài thì đòi hỏi phải có một cơ chế nào đó mà user đăng nhập vào Sakai
phải truy cập được hệ thống lưới thông qua Globus tookit 4.0. Dưới đây là ba phương án
mà nhóm đã tìm hiểu được.

3.2.1 Xây dựng các tool tương ứng


Sakai có thể chia ra làm hai phần một là Sakai container và Sakai tool. Để khai thác các
ứng dụng web người phát triển phải viết các tool cho Sakai.

Nhóm cũng đã tìm hiểu viết một tool cho Sakai sử dụng công cụ Sakai App Builder.

Quay lại vấn đề là chúng ta cần truy cập Grid thông qua Sakai do đó nhóm sẽ phải
phát triển các tool như proxymanager-tool hay jobsubmision-tool... các tool tương ứng
với các portlet của Sakai.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xliii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Do đó người viết các tool này phải đảm bảo hiểu được hoạt động của code từng portlet
và các thư viện hỗ trở cho việc giao tiếp với globus và myproxy bên dưới.

Sakai App Builder là một công cụ khá mạnh nhằm hỗ trợ hoạt động viết tool của Sakai
theo các chuẩn như RSF( Reasonable Server Face), JSF( Java Server Face) và Wicket
Face.

Cài đặt Sakai App Builder như sau:

• Download cài đặt phiên bản Sakai mới nhất.


• Chạy Eclipse
• Chọn tab Windown -> Preferences
• Click double Java
• Click double Build Path
• Chọn Classpath Variables
• Click mục New
• Nhập M2_REPO cho mục Name
• Click vào folder dẫn đến thư mục .m2/respository
• click ok -> ok.
• Chọn tab Help chọn Install New Software
• Chọn New Remote Site
• Nhập AppBuilderSite vào mục Name
• Nhập http://source.Sakaiproject.org/appbuilder/update/
• Click finish
• click Next
• Click Install

Để sử dụng được SakaiAppBuilder:

• Chọn File->New-> Project->SakaiProject->SakaiAppBuilder


• Nhập tên project
• Lựa chọn các tuỳ chọn như key project( kí tự đầu viết hoa)
• Sau đó lựa chọn hiện thực RSF, JSF hay Wicket ...

Các kĩ thuật dàng trang hỗ trợ phát triển tool Sakai rất phong phú như Java Servlets,
Velocity, JSP, JSF, RSF, Wicket. Lựa chọn kĩ thuật phụ thuộc và chủ quan của người
phát triển. Nhóm thực tập cũng đã thử phát triển một tool-proxymanager bằng Wicket.
Qua quá trình tìm hiểu và tiến hành code thử, thì Wicket khá là dễ sử dụng để thiết kế
giao diện cho người dùng. Nhưng về mặt toàn thể thì để phát triển hết tất các tool cần
thiết tương ứng với OGCE thì đòi hỏi nhiều đầu tư về mặt thời gian và công sức để tìm
hiểu các công cụ xây dựng tool cho Sakai và phải hiểu sâu sắc kiến trúc của Sakai, vì thời
gian luận văn có hạn nên nhóm không đi theo hướng này.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xliv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

3.2.2 Tích hợp Grid portlet dựa vào chuẩn WSRP


WSRP[17] (Web Services for Remote Portlet) định nghĩa một chuẩn tương tác, sử dụng
Web Services để tương tác với những portlet JSR 168. Các portlet thuộc chuẩn WSRP
này được gắn với một portal. Các portlet này sẽ thực thi bên ngoài máy chủ portal, bên
trong máy chủ một tổ chức khác ở một vị trí xa. Khi một portal cần một đoạn trang nào đó
của WSRP portlet nó sẽ gọi portlet từ xa thông qua giao thức SOAP.

Hiện tại đây là một hướng giải quyết khá tốt. Sakai hỗ trợ WSRP. Nhưng hiện tại
OGCE portal lại không hỗ trợ. Để thực hiện chuyển các truy cập vào Grid thông qua
Sakai bằng OGCE portal là không khả thi mấy!. Mặc dù WSRP hỗ trợ API để phát triển
portlet chuẩn này. Mục đích của đề tài là yêu cầu các dịch vụ Grid phải được đáp ứng trực
tiếp từ Sakai portal.

3.2.3 Tích hợp portlet JSR 168 vào Sakai


Thông qua tìm hiểu các bài viết của Charles Serverance[18] thì cách tiếp cận này là khả thi.
Các phiên bản Sakai từ 2.4.x trở về sau đã bắt đầu hỗ trợ portlet JSR 168. Hiện tại phiên
bản Sakai mà nhóm dùng là 2.7.1 nên Sakai đã hỗ trợ sẵn portlet JSR 168 thông qua pluto
1.1

Charon Sakai Sakai Tool


Portal Site Setup Registration
Pluto
Container
Pluto Portlet
Registration
Sakai Tool
Dispatch

RequestFilter PortletServlet

Sakai JSR-168
Tool Tool

Hình 3. 8: Sakai Tool Registration

Portlet JSR 168 được deploy trong một servlet container như một ứng dụng web. Do
đó Sakai cũng có một servlet gọi là PortletServlet dùng để điều khiển các request và đáp
ứng các resquest đó giữa portal và JSR-168 tool. Portlet servlet này tự động nhận dạng và
đăng kí trong Pluto[20] Portlet Register.

Sau khi JSR-168 được đăng kí trong Pluto Portlet Register thì portlet cũng được đăng
kí như một tool với Sakai Tool Registration của portal vì vậy portlet sẽ xuất hiện trong
Sakai Sites tool và Site Setup tool khi người dùng thiết lập. Điều này thể hiện rỏ trong quá
trình ta khởi động Sakai Portal.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Mỗi khi tìm thấy một portlet thì portlet đó sẽ tự động đăng kí với Sakai và Pluto. Sau
khi đăng kí xong thì trong bảng Sakai Tool Registration sẽ có thêm một entry như sau:

<registration>
<tool
id=" proxymanager-portlet.ProxyManagerPortlet"
title=”ProxyManager"
description="Proxy Manager Portlet”
>
<category name="course" />
<category name="project" />
</tool>
</registration>

Trong quá trình thực thi Charon portal trong Sakai sẽ tìm kiếm trong Sakai Tool
Registration của portal, khi thấy một portlet tool nó sẽ sử dụng Pluto container để chuyển
các request tới portlet và trả về các response cho portal.

Mô tả các bước tích hợp

Hiện tại nhóm luận văn có một gói deploy Sakai-Ogce[19], đã tích hợp sẵn các portlet của
OGCE vào Sakai. Nhưng gói này không có source code để build cho Sakai 2.5.4 và chưa
chạy được. Do đo nhóm luận văn phải tiến hành build và tích hợp các portlet từ OGCE
vào Sakai.

Các bước tiến hành

• Bước 1: Build các portlet của OGCE Portal chung với OGCE Portal hoặc dùng
NetBean IDE, hoặc dùng Eclispse IDE để build từng portlet. Kinh nghiệm của
nhóm cho thấy với phiên bản mới nhất của NetBean IDE dễ dàng build portlet hơn
là dùng Eclipse IDE.
• Bước 2:Chỉnh file cấu hình web.xml và project.xml
• Bước 3: Copy các gói jar cần thiết bên OGCE Portal vào Sakai Portal.
• Ở bước một nhóm chọn phương án dễ nhất là build nguyên cả OGCE Portal sau đó
sử dụng các deployment đó để đem sang Sakai Portal. Về cách build OGCE portal
thì xin tham khảo chi tiết chương 2.

Cấu hình ProxyManager Portlet

Trước hết là chỉnh file cấu hình web.xml như hình ở dưới.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlvi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 3. 9: Cấu hình file web.xml cho portlet Proxy Manager.


Trên hình trên chỉ ra những lớp cần phải chỉnh sửa. Hình bên trái là file web.xml lúc ta
chưa cấu hình. Hình bên phải là file web.xml ta đã cấu hình. Trong tất cả các portlet trong
Sakai Portal chúng ta đều phải chỉnh ở hai lớp listener class và Servlet class và tag <url-
pattern> khi đem từ OGCE Portal sang Sakai Portal. Sau bước này ta khởi động Sakai
Portal lên. Vào WorkSite setup chúng ta sẽ thấy portlet lúc này đã được đăng kí trong
sakai.

portlet-jsr-api-2.1.jar

proxymanager-api-4.3.jar

log4j-1.2.8.jar

cog-jglobus-1.4-dev-071030.jar
Hình 3. 10: Portlet Proxy Manager trong Sakai.
jgss-OGCE.jar
Đến bước copy các gói jar từ OGCE Portal và Sakai Portal thì điều này còn phụ thuộc vào
từng commons-logging-1.1.jar
portlet. Thứ nhất là xem code của các portlet cần tích hợp, xem phần import, tất cả

commons-io-1.0.jar

SVTH:jce-jdk13-131.jar
Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlvii

jarpc-OGCE.jar
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

các gói import phải được đem qua và đặt đúng cấu trúc thư mục như bên OGCE Portal.
Đối với ProxyManager Portlet thì cần các gói sau:

Tất nhiên ngoài những gói jar cần thiết trong file source code thì còn nhiều gói phụ thuộc khác.
Cần phải căn cứ vào dòng báo lỗi của Apache Tomcat để xác định gói còn thiếu. Ví dụ

Caused by: java.lang.NoClassDefFoundError:


org/globus/wsrf/impl/security/authorization/SelfAuthorization
at
org.globus.cog.abstraction.impl.execution.gt4_0_0.DelegatedTaskHandlerFactory
.newTaskHandler(DelegatedTaskHandlerFactory.java:21)
at
org.globus.cog.abstraction.impl.execution.gt4_0_0.TaskHandlerImpl.submit(Task
HandlerImpl.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39 at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
pl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)

Nhìn dòng đầu của dòng lỗi cho ta biết portlet thiếu class và không tìm thấy class
org/globus/wsrf/impl/security/authorization/SelfAuthorization này. Vậy việc cuối cùng là tìm ra
class SeftAuthorization nằm trong gói jar nào của OGCE portal. Sau đó copy sang Sakai Portal.
Để nhanh chóng thì có thể dùng các công cụ tìm kiếm trong linux. Nhóm sử dụng ngay chính
công cụ tìm kiếm của GNOME có sẵn trong CentOS 5.4

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlviii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 3. 11: Công cụ tìm kiếm trong GNOME

Vấn đề gặp phải lúc tích hợp nhìn chung nằm ở từng portlet cụ thể. Mỗi khi tích hợp bất kỳ một
portlet nào đòi hỏi người làm phải hiểu được nội dung, chức năng của portlet đó, các dịch vụ mà
portlet đó sử dụng để kết nối với GLOBUS TOOLKIT 4.0 từng đó nắm được các gói jar cụ thể.
Sau khi các file thư viện cần thiết đã được copy đầy đủ ta sẽ được portlet như hình sau:

Hình 3. 12: Myproxy tích hợp thành công vào Sakai và có thể lấy proxy

Cấu hình Job Submit Portlet

Cấu hình tương tự ProxyManager Portlet ta sẽ chạy được Portlet này như hình. Đến khi cài đặt
JobSubmission portlet ta phải copy thư mục coglibs từ OGCE portal vào Sakai Portal. Sau đó sẽ
có nhiều thông báo lỗi thiếu gói jar cần thiết, thì tiếp tục copy các gói trong /ogce-portal-
home/shared sang /sakai-portal-home/shared.

Hình dưới là kết quả trước khi chạy Job Submit portlet.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlix


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 3. 13: Portlet Job Submit trong Sakai

Nhưng khi chạy portlet này thì bị lỗi


WARN: Factory
org.apache.axis.configuration.EngineConfigurationFactoryServlet Ignored:
missing required method: public static EngineConfigurationFactory
newFactory(Object). (2010-11-16 13:55:17,750 http-8080-
Processor22_org.apache.axis.configuration.EngineConfigurationFactoryFinder
)
WARN: Factory
org.apache.axis.configuration.EngineConfigurationFactoryDefault Ignored:
missing required method: public static EngineConfigurationFactory
newFactory(Object). (2010-11-16 13:55:17,752 http-8080-
Processor22_org.apache.axis.configuration.EngineConfigurationFactoryFinder
)
.java:60)
at
xportlets.jobsubmit.JobSubmitAction.submitJob(JobSubmitAction.java:571)

ERROR: Unable to locate a valid EngineConfigurationFactory (2010-11-16


13:55:17,752 http-8080-
Processor22_org.apache.axis.configuration.EngineConfigurationFactoryFinder)

org.globus.cog.abstraction.impl.common.sandbox.SandboxException:
Unexpected exception: org.globus.wsrf.encoding.SerializationException:
Serialization failed [Caused by: java.lang.NullPointerException]
at
org.globus.cog.abstraction.impl.common.sandbox.SandboxingTaskHandler.subm
it(SandboxingTaskHandler

Caused by: org.globus.wsrf.encoding.SerializationException: Serialization failed


SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong l
[Caused by: java.lang.NullPointerException]

at
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Sau khi debug trên chính gói Jar đã gây ra lỗi thì nhóm xác định được lỗi do chính gói
Apache Axis.

Khi Sakai Portal khởi động nhưng không thể cấu hình được
EngineConfigurationFactory. Nguyên nhân chính là nhóm đã đặt gói Axis-OGCE.jar
trong Sakai Portal không đúng thư mục giống như bên OGCE Portal. Như vậy có thể là
nói vô vàn nguyên nhân lỗi có thể xảy ra nhưng chung qui là do cấu hình chưa đúng hay
thiếu các gói Jar cần thiết, hoặc vị trí đặt các gói Jar. Cấu trúc thư mục của Sakai hầu như
không thay đổi gì ngoại trừ việc thêm một thư mục /apache-tomcat-5.5.30/coglibs/. Thư
mục coglibs chứa hầu như tất cả các file Jar cần thiết cho GLOBUS TOOLKIT 4.0 .

Ngoài những việc trên, thì nhóm tinh chỉnh một vài thứ ở lớp giao diện như hostname,
các cấu hình mặc định, thì nhóm đã đưa lên được ba portlet ProxyManager,
JobSubmission, Comp-fileManager. Quá trình thử nghiệm trên một máy và mạng Lan là
hoàn toàn thành công. Dưới là các hình ảnh trong lúc chạy thử nghiệm của ba portlet. Từ
đó có thể rút ra được một kết luận là tích hợp portlet từ OGCE Portal sang Sakai Portal là
hoàn toàn khả thi.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong li


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Chương 4: Kết luận


4.1 Những thành quả đạt được của luận văn:
Trong quá trình từ lúc bắt đầu đến lúc hoàn thành luận văn nhóm đã thu được những kết
quả sau:

• Bước đầu nắm bắt được công nghệ Grid-Computing.


• Nắm bắt được bộ công cụ Globus Toolkit 4.0 và vận dụng vào cài đặt thực tế.
• Tìm hiểu được một số công nghệ được dùng để xây dựng Grid-portal như: Single
Sign On(SSO), chuẩn portlet JSR 168 …
• Triển khai thành công các portal như: OGCE, Sakai.
• Tích hợp thành công các portlet JSR 168 vào Sakai trong đó có 2 portlet quan
trọng nhất đó chính là Myproxy và Job-Submission. Chính sự tích hợp thành công
này đã biến Sakai trở thành một Grid-Portal, từ đó người dùng khi đăng nhập vào
Sakai có thể tham gia vào mạng lưới tính toán Grid-Computing.

4.2 Những hạn chế của luận văn


Mặc dù đạt được một số thành quả như đã kể trên nhưng vì thời gian gấp rút nên luận văn
vẫn còn một số hạn chế nhất định:

• Chưa thể chuyển toàn bộ các portlet từ OGCE portal sang Sakai portal.
• Chưa thiết lập được cơ chế Single Sign On (SSO) từ Sakai vào Globus nghĩa là khi
một người dùng có quyền truy cập đến hệ thống tính toán lưới thì khi người dùng
đó truy cập vào Sakai thì đồng thời cũng chính là truy cập vào hệ thống tính toán
lưới. Yêu cầu này đòi hỏi phải am hiểu sâu kiến trúc của Sakai bởi vì cách quản lý
user của Sakai và cách quản lý user của Myproxy là hoàn toàn khác nhau, để có thể
mapping user của Sakai và Myproxy với nhau đòi hỏi nhiều thời gian để tìm hiểu,
vì thời gian luận văn có hạn nên nhóm vẫn chưa hoàn thành được chức năng này.

4.3 Những khó khăn khi thực hiện đề tài


Thành thật thì khi thực hiện đề tài nhóm gặp rất nhiều khó khăn cả về chủ quan và khách
quan.

• Đề tài liên quan đến nhiều framework nhau. Trong đó nhóm hoàn toàn phụ thuộc
vào các thư viện và OGCE portlet là một trở ngại lớn. Bên cạnh đó để nghiên cứu
và phát triển portlet JSR168 độc lập cho Sakai đòi hỏi một lượng thời gian lớn.
Mặt khác Sakai không hoàn toàn làm việc trực tiếp với các portlet JSR168 mà phải
thông qua Pluto portal. Điều đó có nghĩa là nếu phát triển portlet lại từ đầu thì phải
phát triển trên uPortal[], sau đó phải cấu hình lại cho Pluto[]. Như vậy phát triển lại
từ đầu theo chuẩn JSR 168 là điều không cần thiết. Nhưng nếu chuyển toàn bộ
code của các portlet JSR 168 sang kiểu tool trên sakai là một công việc quá sức đối
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lii
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

với đề tài luận văn. Cấu trúc một tool của Sakai, các xử lý các request và reponse
là hoàn toàn khác với portlet JSR 168. Do đó nếu phát triển chỉ kế thừa được giải
thuật chung của portlet mà thôi. Như vậy là khá khó khăn và mạo hiểm đối với
nhóm, trong khi thời gian làm luận văn không có nhiều. Từ nhận định đó nhóm
chấp nhận sự ràng buộc các thư viện của OGCE, thay vì xây dựng lại, thì tiến hành
tìm hiểu về các gói thư viện đó.
• Khó khăn thứ hai mà nhóm gặp phải là thiếu công cụ hỗ trợ cho việc phát triển và
biên dịch portlet JSR168 cho Sakai. Vì mọi bộ phát triển portlet đều chuyên dụng
cho một portlal nhất định. Trong khi đó Sakai lại hoàn toàn không hỗ trợ công cụ
phát triển cho portlet mà Sakai chỉ hỗ trợ những công cụ phát triển tool. Do đó
dường như nhóm phải debug cả apache tomcat, dùng công cụ decompile các gói
jar của OGCE sau đó build lại các gói bị lỗi từ đó truy tìm nguyên nhân để sửa lỗi.
Điều đó cũng có nghĩa tốn rất nhiều thời gian để debug mỗi lỗi.
• Cuối cùng từ phía chủ quan của nhóm, do tiếp cận với lĩnh vực mới hoàn toàn,
kiến thức liên quan đến đề tài của nhóm hầu như bắt đầu từ con số không. Dẫn đến
tiếp cận và làm chủ vấn đề, phân tích các vấn đề gặp phải là hết sức khó khăn và
tốn nhiều thời gian. Để có thể thay đổi các mã nguồn của các OGCE portlet đòi hỏi
phải có thời gian dài tiếp xúc và có nhiều kinh nghiệm trong việc phát triển portlet.

4.4 Hướng phát triển của luận văn:


Có thể nói càng ngày càng có nhiều nhu cầu về giải quyết các bài toán lớn mà các máy
tính đơn không thể giải quyết nổi và Grid-Computing chính là giải pháp để giải quyết
những bài toán như thế này. Hệ thống tính toán lưới là một công nghệ có triển vọng rất
lớn trong tương lai khi mà cơ sở hạ tầng về mạng và tài nguyên mạng ngày càng phát
triển. Grid- Computing có thể tận dụng nguồn tài nguyên mạng này để giải quyết các bài
toán lớn trong khoa học, giáo dục…

Nếu có thể tiếp tục phát triển đề tài này nhóm sẽ tập trung vào giải quyết các vấn đề sau:

• Chuyển toàn bộ các portlet từ OGCE portal sang Sakai để Sakai hoàn toàn mang
đầy đủ chức năng của một Grid-portal.
• Thiết lập cơ chế Single Sign On (SSO) từ Sakai vào Globus để tạo nên sự thuận
tiện cho người dùng khi muốn truy cập vào mạng lưới tính toán bằng Sakai portal.
• Quảng bá việc truy cập đến các hệ thống tính toán lưới bằng Sakai portal đến với
mọi người bởi Sakai portal được xây dựng để hướng tới cộng đồng và đang ngày
càng phát triển mạnh mẽ. Nếu có thêm các tính năng để truy cập đến hệ thống tính
toán lưới thì cộng đồng Sakai sẽ có thêm bước phát triển đột phá và có thể trở
thành portal chủ đạo trong cộng đồng khoa học và giáo dục.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong liii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Chương 5: Phụ lục và tài liệu tham khảo


5.1 Cài đặt Globus Toolkit 4.0
Để cài đặt GT4.0.1 trước hết trong CentOs, cần phải cài đặt gói RPMforge. Đây là gói
service hỗ trợ yum.

Thực hiện lệnh vim /etc/hosts để chỉnh lại domain localhost của bạn sẽ được sử dụng
trong nhiều bước cài đặt sau. Thực ra không thay đổi domain localhost thì ta cài đặt vẫn
bình thường. Nhưng việc thay đổi localost thành một tên dễ nhớ sẽ tốt hơn:

[root@phongcnttbk]$ vim /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 phongcnttbk localhost

Download gói gridserver đi kèm với bản báo cáo. Giải nén chuyển vào thư mục vừa giải
nén.

[root@phongcnttbk ~]$ cd gridserver/

[root@phongcnttbk gridserver]$ ls

certs config.env INSTALL packages pts uninstall.sh

config config_globus.sh install.sh README test

Bạn Comment dòng script cuối cùng của file install.sh rồi lưu file lại.

#su globus $GLOBUS_LOCATION/setup/globus/setup-simple-ca

Tiếp theo tiến hành cài GT4.0.8 bằng lệnh:


[root@phongcnttbk gridserver]$ ./install.sh

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong liv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Giờ chúng ta cần một hostcert cho máy và một usercert cho chúng ta. Để làm được điều
đó chúng ta cần phải cài đặt một SimpleCA. Ta thực hiện các lệnh sau:

Các lệnh này thực hiện trong user globus, lúc này có thể coi globus đóng vai trò là một
CA.

[globus@phongcnttbk gridserver]$ cd

[globus@phongcnttbk ~]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[globus@phongcnttbk ~]$ /usr/grid/globus/setup/globus/setup-simple-ca

Màn hình sẽ hiện ra thông báo, yêu cầu có giữ nguyên CA hay không ta nên chọn mặc
định là có. Lúc đó subject name của CA là:
cn=Globus Simple CA, ou=simpleCA-phongcnttbk, ou=GlobusTest, o=Grid

trong đó:

- cn: là tên gọi chung(common name)

- Ou: là đơn vị tổ chức (organization unit), nó nhận biết CA này từ các - CA khác
tạo bởi SimpleCA bởi người dùng khác nữa.

Tiếp theo là nhậpp email cho CA, email nà là nơi các yêu cầu chứng thực sẽ được gởi đến
để ký được ký duyệt bởi CA.
Tiếp theo là thời hạn hiệu lực của CA mặc định là 1825 ngày (5 năm).
Tiếp theo sẽ là yêu cầu người dùng khởi tạo mật khẩu cho CA.
Enter PEM pass phrase:<MyPEMpassPharse>

Verifying - Enter PEM pass phrase: <MyPEMpassPharse>

Đến đây một chứng thực tự ký duyệt được khởi tạo cho CA với subject của người
dùng, người dùng ở đây là globus. Đồng thời cấp cho gloubs 2 khóa cho thiết lập bảo mật
tin cậy là cakey.pem và cacert.pem cả 2 được lưu trữ trong thư mục home của globus
/home/globus/.globus/simpleCA//private/cakey.pem

/home/globus/.globus/simpleCA//cacert.pem

Để hoàn thành việc thiết lập CA thì gloubs phải cài đặt phần mềm GSI, sau khi cài đặt
GSI chứng thực CA của globus sẽ được ký và do đó globus có thể tạo chứng thực đại diện
/home/globus/.globus/simpleCA/globus_simple_ca_e25b0701_setup-0.19.tar.gz
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lv
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

cho bất kỳ người dùng nào khác. Gói cài đặt GSI được đặt trong thư mục home của
globus, nó được tạo ra trong quá trình cài đặt simpleCA:

Lệnh cài đặt GSI phải được thực hiện trong root:

[root@phongcnttbk globus]#
$GLOBUS_LOCATION/setup/globus_simple_ca_e25b0701_setup/setup-gsi –default

Quá trình cài đặt thành công lúc này CA đã có thể chứng thực cho người dùng khác.

Tiếp theo ta sẽ chứng thực cho host của ta. Đăng nhập vào root và gõ lệnh:

[root@phongcnttbk globus]# source $GLOBUS_LOCATION/etc/globus-user-env.sh

Lệnh này để set biến môi trường và bắt đầu gõ lệnh:

[root@phongcnttbk globus]# grid-cert-request –host ‘hostname’

Hostname ở đây chính là tên đầy đủ của host đã cài globus. Trong trường hợp này hostname là
phongcnttbk

[root@phongcnttbk globus]# grid-cert-request –host phongcnttbk

Lệnh này dùng để yêu cầu CA xác thực cho host có tên là phongcnttbk. Có hai file yêu cầu được
sinh ra là /etc/grid-security/hostcert_request.pem và một khóa riêng kèm theo là /etc/grid-
security/hostkey.pem.

Bây giờ để CA chứng thực yêu cầu vừa rồi của host ta phải đăng nhập vào globus và thực hiện
lệnh sau:
[globus@phongcnttbk ~]$ grid-ca-sign -in /etc/grid-security/hostcert_request.pem
-out hostsigned.pem
Sau khi nhập password cho CA thì sẽ tạo ra file hostsigned.pem chứng tỏ host đã được CA xác
thực và việc cuối cùng ta copy file hostsigned.pem này vào thư mục /etc/grid-security và đổi tên
thành hostcert.pem. Lệnh copy này phải thực hiện trong root.

root@phongcnttbk:~# cp ~globus/hostsigned.pem /etc/grid-security/hostcert.pem

Vậy là ta đã hoàn tất việc xác thực cho host.

Hai chứng chỉ hostcert.pem và hostkey.pem thuộc quyền sở hữu của root và sẽ được
dùng bởi gridFTP server. Trong khi các webservices container lại chạy trong non-root. Do

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lvi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

đó chúng ta cần tạo ra một bản sao của hostcert.pem và hostkey.pem thuộc quyền sở hữu
của globus. Quá trình tạo bảng sao như sau:
[root@phongcnttbk grid-security]# cp hostcert.pem containercert.pem

[root@phongcnttbk grid-security]# cp hostkey.pem containerkey.pem

[root@phongcnttbk grid-security]# chown globus:globus container*.pem

Kiểm tra quyền sở hữu của các chứng chỉ vừa được tao ra:

[root@phongcnttbk grid-security]# ls -l *.pem

-rw-r--r-- 1 globus globus 0 Dec 29 01:51 containercert.pem

-r-------- 1 globus globus 887 Dec 29 01:51 containerkey.pem

-rw-r--r-- 1 root root 0 Dec 29 01:22 hostcert.pem

-rw-r--r-- 1 root root 1407 Dec 29 01:22 hostcert_request.pem

-r-------- 1 root root 887 Dec 29 01:22 hostkey.pem

Bây giờ chúng ta sẽ chứng thực cho user, ở đây user chúng ta sẽ là phongcnttbk đóng vai
trò người dùng cần được xác thực.

Đăng nhập vào phongcnttbk và thiết lập các biến môi trường:

[phongcnttbk@phongcnttbk ~]$ source $GLOBUS_LOCATION/etc/globus-user-


env.sh

Tương tự như việc xác thực của host ta cũng tạo ra một yêu cầu xác thực với user
phongcnttbk:

[phongcnttbk@phongcnttbk ~]$ grid-cert-request

Nó sẽ yêu cầu nhập một passphrase dùng để xác thực cho user phongcnttbk sau này và
xác nhận lại passphrase đó.

Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lvii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Quá trình yêu cầu thực hiện xong sẽ tạo ra một file private key là
/home/phongcnttbk/.globus/userkey.pem và một file yêu cầu là
/home/phongcnttbk/.globus/usercert_request.pem. Ta cần chuyển yêu cầu này đến CA
để được chứng thực. Ta có thể dùng lệnh:

[phongcnttbk@phongcnttbk ~]$ cat /home/bacon/.globus/usercert_request.pem |


mail bachdienthusinh290489

Để gởi mail tới CA hoặc có thể dùng lệnh cp để chuyển yêu cầu đến CA. Ở đây ta copy
file usercert-request.pem vào thư mục home của globus(chính là CA) để tiến hành xác
thực cho user phongcnttbk. Kiểm tra thư mục /home/globus có file usercert_request.pem
thuộc quyền sở hữu của globus là được.

Sau đó ta tiến hành xác thực yêu cầu của user phongcnttbk bằng lệnh:
[globus@phongcnttbk ~]$ grid-ca-sign -in usercert_request.pem -out usercert.pem

Sau đó trả lại file usercert.pem về cho user phongcnttbk bằng cách gởi mail hay copy. File
usercert.pem trả về phải được lưu vô thư mục /home/phongcnttbk/.globus
[phongcnttbk@phongcnttbk .globus]$ ll

total 12

-rw-r--r-- 1 phongcnttbk phongcnttbk 2647 Dec 29 02:24 usercert.pem

-rw-r--r-- 1 phongcnttbk phongcnttbk 1400 Dec 29 02:00 usercert_request.pem

-r-------- 1 phongcnttbk phongcnttbk 963 Dec 29 02:

Và ta sẽ có chứng chỉ hiển thị trên terminal như sau:

/O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=host/phongcnttbk

Như vậy quá trình xác thực cho phongcnttbk đã hoàn tất. Bây giờ chúng ta cần tạo ra file
grid-mapfile để map user phongcnttbk với proxy của nó là dùng để chứng thực về sau.

Đăng nhập vào root và gõ lệnh:


[root@phongcnttbk ~]# vim /etc/grid-security/grid-mapfile

để tạo ra file grid-mapfile. Nhớ lưu lại file này.Sau đó ta gõ lệnh:


[root@phongcnttbk~]#cat/etc/grid-security/grid-mapfile
“/O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=PhongDang”
phongcnttbk

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lviii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Như vây là ta đã xác thực cho user và map user phongcnttbk với proxy của nó.

Cài đặt Myproxy-server

Myproxy server dùng để xác thực user trước khi cho phép user truy cập vào các dịch vụ
globus. Để cấu hình Myproxy server ta phải sửa lại file myproxy-server.config được
cung cấp tại $GLOBUS_LOCATION/share/myproxy/myproxy-server.config và copy nó
đến /etc/myproxy-server. Nếu ta bỏ qua bước này thì myproxy-server không thể khởi
động được.

Đầu tiên ta thực hiện lệnh:


[root@phongcnttbk ~]# cp $GLOBUS_LOCATION/etc/myproxy-server.config /etc

để copy file myproxy-server.config đến /etc, sau đó thực hiện lệnh:


[root@phongcnttbk ~]# gedit /etc/myproxy-server.config

và sửa lại nội dung của nó như sau:

#
# Complete Sample Policy
#
# The following lines define a sample policy that enables all
# myproxy-server features. See below for more examples.
accepted_credentials "*"
authorized_retrievers "*"
default_retrievers "*"
authorized_renewers "*"
default_renewers "none"
authorized_key_retrievers "*"
default_key_retrievers "none"
trusted_retrievers "*"
default_trusted_retrievers
và sau đó lưu lại. "none"

Tiếp theo là thêm dịch vụ myproxy-server vào hệ thống bằng lệnh sau:
[root@phongcnttbk ~]#cat
$GLOBUS_LOCATION/share/myproxy/etc.services.modifications >> /etc/services
Ta kiểm tra lại xem myproxy server đã được thêm vào hệ thống hay chưa bằng lệnh sau:

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lix


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

[root@phongcnttbk ~]#tail /etc/services và xem kết quả:


[root@phongcnttbk ~]tail /etc/services
binkp 24554/tcp # binkp fidonet protocol
asp 27374/tcp # Address Search Protocol
asp 27374/udp
dircproxy 57000/tcp # Detachable IRC Proxy
tfido 60177/tcp # fidonet EMSI over telnet
fido 60179/tcp # fidonet EMSI over TCP
# Local services
gsiftp 2811/tcp
myproxy-server 7512/tcp # Myproxy server

Nếu thấy myproxy-server 7512/tcp ở dòng cuối là được.

Sau đó ta cần cho cấu hình để myproxy-server khởi động cùng với hệ thống

root@choate:~# cp $GLOBUS_LOCATION/share/myproxy/etc.xinetd.myproxy
/etc/xinetd.d/myproxy
root@choate:~# vim /etc/xinetd.d/myproxy
root@choate:~# cat /etc/xinetd.d/myproxy
service myproxy-server
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/globus-4.0.1/sbin/myproxy-server
env = GLOBUS_LOCATION=/usr/local/globus-4.0.1

LD_LIBRARY_PATH=/usr/local/globus-4.0.1/lib
disable = no
}
Tiếp theo là khởi động dịch vụ myproxy-server lên.

[root@phongcnttbk ~]# /etc/init.d/xinetd reload

Reloading configuration: [ OK ]

Kiểm tra myproxy-server đã được start lên chưa bằng lệnh:

[root@phongcnttbk ~]# netstat -an | grep 7512

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lx


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Nếu thấy được dòng dưới đây:


tcp 0 0 0.0.0.0:7512 0.0.0.0:* LISTEN

Như vậy là ta đã cài đặt cấu hình thành công.

Một chú ý rất quan trọng trong việc cài đặt và cấu hình globus, myproxy server đó chính
là lệnh nào thực hiện trong user nào phải rõ ràng không được lẫn lộn vì có một số lệnh chỉ
chạy được trong root mà không chạy được trong các user khác hay trường hợp ta dùng
CA xác thực cho phongcnttbk mà lại chạy lệnh yêu cầu xác thực cho root thì ta sẽ gặp các
vấn đề lỗi về sau này.

Myproxy-init, Myproxy-logon.

Để lưu trữ chứng chỉ vào trong kho myproxy thì ta sử dụng lệnh myproxy-init như sau:

Myproxy-init -s ‘hostname’ –l ‘username’

Trong đó hostname chính là hostname của myproxy server

Username là tài khoản của myproxy.

Trong trường hợp của tôi thì tôi sẽ gõ lệnh là:

[phongcnttbk@phongcnttbk ~]$ myproxy-init -s phongcnttbk -l phong

Trên màn hình Terminal sẽ hiện ra như sau:

Your identity: /O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=Phong


Dang
Enter GRID pass phrase for this identity:
Creating proxy ............................... Done
Proxy Verify OK
Your proxy is valid until: Thu Jan 6 02:10:54 2011
Enter MyProxy pass phrase:
Verifying - Enter MyProxy pass phrase:
A proxy valid for 168 hours (7.0 days) for user phong now exists on phongcnttbk.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Trong quá trình này sẽ có 3 lần đòi passphrase. Lần đầu tiên là chính là pass phrase của
chứng chỉ của chúng ta 2 lần tiếp theo là passphrase dùng để truy cập vào myproxy
server. Sau khi gõ đúng các pass phrase này thì chứng chỉ của ta sẽ được lưu trữ trên kho
myproxy và khi ngồi ở các máy tính khác ta có thể vào kho myproxy này để lấy chứng chỉ
đó về để truy cập vào các dịchvụ của globus.

Để lấy chứng chỉ được lưu trữ trên kho myproxy thì ta sử dụng lệnh myproxy-logon, có
cấu trúc như sau:
Myproxy-logon -s ‘Hostname’ -l ‘Username.

Hostname chính là Hostname của myproxy server.


Username chính là username của proxy phải trùng với username được nhập trong lệnh
myproxy-init trước đó.

Trong trường hợp của tôi tôi sẽ nhập là:

[phongcnttbk@phongcnttbk ~]$ myproxy-logon -s phongcnttbk -l phong

Sau lệnh này sẽ có yêu cầu đòi pass pharase của myproxy server ta nhập đúng vào thì
chứng chỉ của username phongcnttbk sẽ được load về máy của chúng ta và dùng nó để
truy cập các dịch vụ của globus.

Submit job trong gloubus

Để Submit một tác vụ chẳng hạn như in ra hostname của máy ra file ta làm như sau:

[phongcnttbk@phongcnttbk ~]$ globusrun-ws -c -submit /bin/hostname

Nếu tác vụ thành công thì màn hình Terminal sẽ thông báo:

Submitting job...Done.

Job ID: uuid:fd99fcb2-1382-11e0-b294-000c29b9b001

Termination time: 12/30/2010 19:36 GMT

Current job state: CleanUp

Current job state: Done


Tương tự cho một tác vụ khác chẳng hạn như in thời gian hiện hành trên máy ra màn
hình terminal ta làm như sau:
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxii
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

[phongcnttbk@phongcnttbk ~]$ globusrun-ws -c -s -submit /bin/date

Và nếu thành công thì kết quả sẽ trả về là:

Delegating user credentials...Done.


Submitting job...Done.
Job ID: uuid:a859b110-1383-11e0-be17-000c29b9b001
Termination time: 12/30/2010 19:41 GMT
Current job state: CleanUp-Hold
ThulỗiDec
Các hay30gặp
02:41:42
khi càiICT
đặt,2010
cấu hình globus:
Current job state: CleanUp
Current
Lỗi job state:
connection Done
refuse:
Destroying job...Done.

Cleaning up any delegated credentials...Done.

Một số lỗi thường gặp trong quá trình cài đặt và cấu hình Globus

a. Lỗi không kết nối được tới myproxy server

[phongcnttbk@phongcnttbk ~]$ myproxy-init -s phongcnttbk -l phong

Unable to connect to 127.0.0.1:7512

Nguyên nhân của lỗi này có thể là:

• Do firewall đã chặn các traffic của dịch vụ myproxy, nếu như vậy thì chỉ cần đăng
nhập vào quyền root tắt đi hoặc cho phép traffic của myproxy được đi qua.
• Do myproxy server chưa khởi động, nếu như vậy thì ta làm như sau:

[root@phongcnttbk]# myproxy-server

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxiii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Và kiểm tra lại bằng lệnh:


[root@phongcnttbk ~]# netstat -an | grep 7512

Nếu thấy được dòng bên dưới là:

tcp 0 0 0.0.0.0:7512 0.0.0.0:* LISTEN

thì tức là đã khởi động thành công, nếu không thấy được dòng này tức là trong quá trình
cấu hình myproxy ta đã làm sai ở một chỗ nào đó và cần coi lại quá trình cấu hình đó.

b. Lỗi không thể lưu được chứng chỉ lên myproxy server:

[phongcnttbk@phongcnttbk ~]$ myproxy-init -s phongcnttbk


Your identity: /O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=Phong
Dang
Enter GRID pass phrase for this identity:
Creating proxy .................................................................................. Done

ERROR: Couldn't verify the authenticity of the user's credential to generate a proxy
from.
Use -debug for further information.

grid-proxy-init
Nguyên nhân: failed

Trong quá trình tạo proxy cần có 2 file hash.0 và hash.signing_policy để xác thực cho
proxy nên việc tạo proxy đưa lên myproxy server thất bại, bình thường thì sau khi kí sẽ
nằm đúng vị trí của nó là /home/phongcnttbk/.globus/certificates nhưng có một lý do gì
đó làm mất hai file này đi thì sẽ gây ra lỗi trên. Để khắc phục được lỗi này ta chỉ cần vào
thư mục /etc/grid-security/certificates/ và copy 2 file đó về đúng vị trí của nó là
/home/phongcnttbk/.globus/certificates. Lỗi sẽ được giải quyết.

c. Lỗi không submit được Job:

[phongcnttbk@phongcnttbk ~]$ globusrun-ws -c -submit /bin/hostname

Submitting job...Failed.

globusrun-ws: Error submitting job


SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxiv
globus_xio: Unable to connect to localhost:8443
Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Nguyên nhân: Có thể có 2 nguyên nhân

• Do firewall chặn traffic của dịch vụ globusrun-ws, nếu như vậy ta chỉ cần đăng
nhập vào quyền root và tắt firewall đi.
• Do không biết Job sẽ được thực hiện ở host nào. Trong trường hợp này ta chỉ cần
vào file /etc/hosts và thêm vào địa chỉ IP map với tên host đang được dùng để
submit.

Trên đây là 3 lỗi ta hay gặp nhất trong quá trình sử dụng globus , ngoài ra còn một
số lỗi khác ít gặp hơn không được nêu ở đây. Những lỗi tốn của ta rất nhiều thời gian để
giải quyết chúng nhất là đối với những người mới bắt đầu sử dụng globus. Một lời khuyên
cho những người mới sử dụng globus đó chính là trong lúc cài đặt và cấu hình các thành
phần của globus chúng ta phải tuân thủ chặt chẽ từng bước 1 và làm đúng như theo hướng
dẫn để tránh đi những lỗi không đáng có và đỡ tốn thời gian để giải quyết chúng.

5.2 Cài đặt OGCE portal


Sau khi cài đặt globus thành công chúng ta chuyển sang user thường để cài đặt OGCE
portal.
Trước hết cần thiết lập các đường dẫn cần thiết:
Thiết lập đường dẫn JAVA_HOME:
export $JAVA_HOME = /usr/grid/java

Thiết lập đường dẫn path đến thư mục maven 2.2.0-2
export $PATH=$PATH:$HOME/maven2.2.0-2/bin

Thiết lập đường dẫn đến thư mục catalina home:

export $CATALINA_HOME=$HOME/ogce-portal-only/portal-deploy/apach-
tomcat-5.5.27/bin

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Chỉnh file pom.xml của OGCE như sau: ở đây domain localhost là phongcnttbk, lưu file
lại sau đó chuyển vào thư mục ogce-portal chạy lệnh:

mvn clean install

Lưu ý là install chứ không phải là install.sh

Quá trình cài đặt thành công. Để chạy OGCE portal thì ta phải chạy tomcat trước:

[phongcnttbk@phongcnttbk bin]$ /home/phongcnttbk/ogce-portal-


only/portal_deploy/apache-tomcat-5.5.27/bin/startup.sh

Using CATALINA_BASE: /home/phongcnttbk/ogce-portal-


only/portal_deploy/apache-tomcat-5.5.27

Using CATALINA_HOME: /home/phongcnttbk/ogce-portal-


only/portal_deploy/apache-tomcat-5.5.27

Using CATALINA_TMPDIR: /home/phongcnttbk/ogce-portal-


only/portal_deploy/apache-tomcat-5.5.27/temp

Using JRE_HOME: /usr/grid/java

Mở trình duyệt firefox gõ:

http://phongcnttbk:8080/gridsphere/

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxvi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Ở đây phongcnttbk là domain localhost mà ta đã chỉnh trong file /etc/host và file pom.xml
Hình 4. 1: OGCE portal

Tiếp bạn khởi tạo một tài khoản admin cho portal OGCE.

5.3 Cài đặt sakai phiên bản 2.5.4


Môi trường chuẩn bị:

• JDK 1.5 update 18


• SVN
• Maven 2.2.1
• Tomcat 5.5.26
• MySQL

JDK:

Link : http://java.sun.com/javase/downloads/5u22/jdk

Thiết lập biến môi trường:


Chú ý: Tất cả biến môi trường nên được khai báo trong $USER_HOME/.bash_profile

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxvii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

export JAVA_HOME=your/java/dir

export PATH=$PATH:$JAVA_HOME/bin

Sakai không phù hợp với phiên bản 1.6 , chỉ có thể sử dụng JDK phiên bản 1.5 update 18 là tốt
nhất.

SVN:

Cài đặt từ repository của CentOS

yum install subversion

Cài đặt từ gói binary

http://subversion.apache.org/packages.html

Maven 2.2.1:

Link: http://maven.apache.org/download.html
Tải xuống và giải nén gói apache-maven-2.x.x-bin.
Thiết lập biến môi trường:

export MAVEN_HOME=/your/maven/dir

export PATH=$PATH:$MAVEN_HOME/bin

export MAVEN_OPTS='-Xms256m -Xmx512m -XX:PermSize=64m


-XX:MaxPermSize=128m'

Tạo thư mục repository cho maven:

mkdir –p ~/.m2/repository

Cấu hình Maven: Tạo tập tin settings.xml tại ~/.m2/ với nội dung như sau:

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxviii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

<settings xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/settings-1.0.0.xsd">

<profiles>

<profile>

<id>tomcat5x</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<properties>

<appserver.id>tomcat5x</appserver.id>

<appserver.home>/opt/tomcat</appserver.home>

<maven.tomcat.home>/opt/tomcat</maven.tomcat.home>

Tomcat 5.5.26
Link: http://tomcat.apache.org/download-55.cgi
Tải xuống và giải nén gói apache-tomcat-5.5.26.tar.gz
Thiết lập biến môi trường:

export CATALINA_HOME=/your/tomcat/dir

export PATH=$PATH:$CATALINA_HOME/bin

Bộ nhớ mặc định của Tomcat không đủ cho việc khởi động Sakai, cho nên ta cần phải
khai báo thêm biến JAVA_OPTS cho Tomcat bằng cách tạo tập tin setenv.sh tại
$CATALINA_HOME/bin/ với nội dung như sau

export JAVA_OPTS="-server -XX:+UseParallelGC -Xmx768m


-XX:MaxPermSize=160m -Djava.awt.headless=true"

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxix


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Tomcat cần có JDBC driver để kết nối tới MySQL


Link: http://dev.mysql.com/downloads/connector/j/
Tải xuống và chứa tại thư mục $CATALINA_HOME/common/lib

MySQL

Cài đặt bằng yum

yum install mysql mysql-server mysql-devel

Cài đặt bằng gói binary hoặc gói source


Link: http://dev.mysql.com/downloads/mysql/
Tạo cơ sở dữ liệu cho Sakai:
Đăng nhập vào Mysql với quyền root rồi gõ các lệnh sau.

create database sakai default character set utf8;

grant all privileges on sakai.* to 'sakai'@'localhost' identified by ironchef';

flush privileges;
Biên dịch và khởi động Sakai:

Cấu hình Sakai:

Sakai được cấu hình qua tập tin sakai.properties được đặt ở $CATALINA_HOME/sakai.
Trong sakai source có cung cấp sẵn một tập tin mẫu để tham khảo tại

sakaisrc/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/defa
ult.sakai.properties

Mặc định Sakai sử dụng HSQLDB để làm cơ sở dữ liệu. HSQLDB chỉ thích hợp cho môi
trường testing và sử dụng nội bộ với số lượng truy cập nhỏ. Để đáp ứng nhu cầu truy cập
lớn, ta cần cấu hình cho Sakai hỗ trợ MySQL.

Chép tập tin default.sakai.properties trên sang $CATALINA_HOME/sakai và đổi tên


thành sakai.properties. Sau đó mở ra và sửa lại như sau:

Thêm dấu comment vào phần HSQLDB settings

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxx


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

## HSQLDB settings - on by default

#vendor@org.sakaiproject.service.framework.sql.SqlService=hsqldb

#driverClassName@javax.sql.BaseDataSource=org.hsqldb.jdbcDriver

#hibernate.dialect=org.hibernate.dialect.HSQLDialect

Bỏ comment phần MySQL settings

## MySQL settings - make sure to alter as appropriate

vendor@org.sakaiproject.db.api.SqlService=mysql

driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver

hibernate.dialect=org.hibernate.dialect.MySQLDialect

Khai báo username và password cho MySQL

set username@javax.sql.BaseDataSource=sakai

set password@javax.sql.BaseDataSource=ironchef

Biên dịch Sakai:


Đứng tại thư mục sakai-src

cd master

mvn clean install

cd ../

Khởi động Sakai


Vào thư mục $CATALINA_HOME/bin

startup.sh

Lúc này quá trình cài đặt Sakai đã hoàn tất, mở trình duyệt và vào địa chỉ
http://localhost:8080/portal để kiểm tra.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxxi


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 4. 2: Sakai sau khi cài đặt thành công

Để kết thúc sakai chạy shutdown.sh.


Hướng dẫn sử dụng các kèm theo trong đề tài luận văn để xây dựng môi trường truy cập
hệ thống tính toán lưới thông qua Sakai

Đầu tiên sử dụng gói gridserver để cài đặt GT4 ( Hướng dẫn cài đặt ở trên)

Tiếp theo bạn build OGCE portal cần chú ý đến việc cấu hình file pom.xml ở đây sẽ cấu
hình cho server và cấu hình các host sử dụng các dịch vụ GRAM và GridFTP

<portal.server.ip>phongcnttbk</portal.server.ip>

<host.base.url>http://${portal.server.ip}:8080/</host.base.url>
………….
<gridftp.host.names>phongcnttbk</gridftp.host.names>
<gram.host.names>phongcnttbk</gram.host.names>

ở đây bạn cần chú ý đến các việc cấu hình các host sử dụng các dịch vụ cho phù hợp với
yêu cầu của bạn.

Sau đó cài đặt OGCE bình thường như hướng dẫn trên.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxxii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Cài đặt OGCE thành công bạn có thể copy các portlet của OGCE vào thư mục webapp
của gói Sakai kèm theo luận văn, nhớ cấu hình cho các portlet của OGCE cho tương thích
với Sakai như trong chương 3. Ở đây vì yêu cầu của luận văn nên nhóm chỉ tích hợp 3
portlet là Poroxymanager, Jobsubmit, và GridPortFileManagement. Sau đó bạn khởi động
Sakai portal lên là có thể sử dụng được các dịch vụ của hệ thống tính toán lưới thông qua
Sakai.

Sau đây là một số kết quả:

Hình 4. 3:Sakai có tích hợp Proxymanager portlet và có thể lấy proxy

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxxiii


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 4. 4:Sakai có tích hợp JobSubmit portlet và có thể submit một job

Hình 4. 5:Kết quả của việc thực thi

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxxiv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Tài liệu tham khảo


[1] Tiến sĩ Hoàng Lê Minh, Báo cáo trong hội thảo "Công nghệ tính toán mạng lưới và
tính toán hiệu năng cao"

[2] XIAOBO YANG and ROB ALLANCCLRC e-Science CentreDaresbury Laboratory


Warrington WA4 4AD, Sakai VRE Demonstrator Project: Realise e-Research through
Virtual Research Environments.
[3] Vngrid project, http://www.cse.hcmut.edu.vn/~vngrid/wiki/Main_Page

[4] Các bài báo nghiên cứu về


Globus ,http://www.globus.org/alliance/publications/papers.php

[5] Các public chi tiết các phần của GT4,http://www.globus.org/toolkit/docs/4.0/

[6] An Early and Incomplete Draft, A Globus Primer Or Everything You Wanted to
Know about Globus,but Were Afraid To Ask Describing Globus Toolkit Version 4

[7] Sakai_Courseware_Management_the Official _ Guide_2009.pdf

[8] Sakai Project,Sakai Java Framework,December 3, 2004,Version 1.0.

[9] Web Services for Remote Portlets Specification.pdf

[10] OGCE Portal, http://www.collab-ogce.org/ogce/index.php/Main_Page

[11] Khóa luận tốt nghiệp của Đặng Đình Vương, Bùi Vĩnh Phú, phần JSR 168, trang 44.

[12] Sakai JSR 168 Portlet Support, http://collab-ogce.blogspot.com/2007/03/sakai-jsr-


168-portlet-support.html

[13] Charles Serverance, JSR-168 Portlet Support in Sakai,February 6, 2007, link:


http://www.sfr-fresh.com/unix/www/sakai-src-2.5.4.tgz:a/sakai-src-
2.5.4/reference/docs/architecture/sakai-168-portlet-tool.doc

[14] Myproxy, http://grid.ncsa.illinois.edu/myproxy/scenarios/

[15]GRAM,http://globus.org/toolkit/docs/4.0/execution/wsgram/WS_GRAM_Approach.ht
ml

[16] Single Sign-on, http://en.wikipedia.org/wiki/Single_sign-on

[17] Axis service, http://ws.apache.org/axis/java/architecture-guide.html

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxxv


Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

[18] Charles Serverance, JSR-168 Portlet Support in Sakai,February 6, 2007, link:


http://www.sfr-fresh.com/unix/www/sakai-src-2.5.4.tgz:a/sakai-src-
2.5.4/reference/docs/architecture/sakai-168-portlet-tool.doc

[19] Gói Sakai-Ogce: https://ogce.svn.sourceforge.net/svnroot/ogce/Sakai-ogce/

[20] Pluto 1.1, http://communitygrids.blogspot.com/2007/a03/Sakai-jsr-168-tests.html

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lxxvi

You might also like