Bảng lưu lại tên cũng như mật khẩu của các dịch vụ có trong hệ thống.
TT Tên cột Kiểu dữ liệu Null Constraint Mô tả
1 PrincipalID Tinyint Khóa chính Id của dịch vụ 2 PrincipalName Nvarchar(50) Tên của dịch vụ 3 Password Nvarchar(1000) Mật khẩu của dịch vụ
Cài đặt, triển khai và thử nghiệm hệ thống
1.8. Cài đặt
1.8.1. Công cụ và công nghệ sử dụng
Ngôn ngữ lập trình: Java, javascript.
Nền tảng Web Service: Java EE6
IDE: Eclipse.
Server: Apache Tomcat version 6.
Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2005
1.8.2. Tổng quan hoạt động của hệ thống Foloyu
Hình 4-22: Sơ đồ hoạt động của Foloyu
Ở phía client, ta dùng javascript để thực hiện việc gửi các yêu cầu và các dữ liệu đến Foloyu Server.
Phía Foloyu Server sẽ tiếp nhận yêu cầu thông qua servlet, xử lý các yêu cầu và thực hiện lời gọi các web service của các engine tương ứng. Dữ liệu trả về phía client thông qua servlet dưới dạng text hoặc json. Đồng thời Foloyu Server sẽ cập nhật trạng thái của người dùng ở trong bộ nhớ của Foloyu.
Dữ liệu trả về sẽ được xử lý và hiển thị lên cho người dùng dưới dạng html.
Ngoài ra Foloyu Server sẽ gửi thông tin về tọa độ của người dùng và địa điểm đến Google Map Server để server này hiển vị lên phía client.
1.8.3. Cài đặt cho bài toán bảo mật áp dụng Kerberos
Dựa vào các mô tả các thông điệp trao đổi giữa phía client và Foloyu Server ở trên, cùng với các thao tác phải thực hiện trong quá trình xác thực người dùng và kiểm tra tính hợp lệ của vé,ta thiết kế được sơ đồ các lớp dưới đây.
Hình 4-23: Các lớp cài đặt cho bài toán bảo mật
Gói com.foloyu.kerberos.data:
Gói này sẽ chứa các lớp mô tả các thông điệp trong giao thức Kerberos:
o AppRequestMsg: chứa dữ liệu của gói tin APP_REQ.
o AuthenticationServerRequest: chứa dữ liệu trong gói tin AS_REQ.
o Authenticator: chứa dữ liệu trong Authenticator
o KDCReplyMessage: chứa dữ liệu của gói tin AS_REP, TGS_REP.
o Nounce: lớp tạo timestamp.
o Ticket: chứa dữ liệu về vé dịch vụ.
o TicketRequestMessage: chứa dữ liệu của gói tin TGS_REQ
Gói com.foloyu.kerberos.service:
Gói này chứa các lớp, tạo ra các gói tin yêu cầu sau khi nhận dữ liệu từ phía client, xử lý các gói tin gửi đến từ các client, kiểm tra tính hợp lệ của các vé và tạo ra các gói tin gửi về cho phía client.
o AppRequestClient: Lớp tạo ra gói tin APP_REQ.
o AppRequestService: Lớp xử lý gói tin APP_REQ và tạo gói tin APP_REP.
o AuthenticationClient: Lớp tạo gói tin AS_REQ
o AuthenticationService: Lớp xử lý gói tin AS_REQ và tạo gói tin AS_REP
o CheckUtil: Lớp có các hàm kiểm tra tính hợp lệ của vé và của Authenticator.
o TicketGrantingClient: Lớp tạo gói tin TGS_REQ.
o TicketGrantingService: Lớp xử lý gói tin TGS_REQ và tạo gói tin TGS_REP.
Gói com.fsn.core.util:
Gói này chứa các lớp tiện ích như sau dùng cho toàn project, trong đó có một số lớp phục vụ cho Kerberos như sau:
o AES: Lớp chứa các hàm dùng để mã hóa và giải mã thông điệp theo thuật toán mã hóa AES.
o RandomGeneration: Lớp để tạo khóa phiên ngẫu nhiên.
StringToKey: Lớp để băm mật khẩu của người dùng và dịch vụ để tạo khóa bí mật. Thuật toán băm sử dụng là MD5.
1.8.4. Cài đặt Profile Engine a. Sơ đồ lớp
Dựa vào phân tích các chức năng yêu cầu chức năng về Profile từ phía Foloyu Server và thiết kế cơ sở dữ liệu, ta có các lớp cài đặt cho Profile Engine như sau:
Hình 4-24: Sơ đồ lớp cài đặt cho Profile Engine
Gói com.foloyu.ws.profile.bean
Là gói chứa các lớp thực thể chứa các dữ liệu được lấy từ các bảng trong cơ sở dữ liệu ra.
o AnswerBean: Lớp chứa dữ liệu lấy từ bảng ChallengeQusestion.
o CategoryPrivacyBean: Lớp chứa dữ liệu lấy từ bảng PrivacyCategory.
o ChallengeQuestionBean: Lớp chứa dữ liệu lấy từ bảng ChallengeQuestion.
o FriendBean: Lớp chứa dữ liệu lấy từ bảng Friend.
o PrivacySettingBean: Lớp chứa dữ liệu lấy từ bảng UserPrivacySetting.
o PrivacyTypeBean: Lớp chứa dữ liệu lấy từ bảng UserPrivacyType.
o ServiceBean: Lớp chứa dữ liệu lấy từ bảng Principal.
o SuggestFriendBean: Lớp chứa dữ liệu lấy từ bảng SuggestFriend.
o UserBean: Lớp chứa dữ liệu lấy từ bảng User.
Gói com.foloyu.ws.profile.dal:
Gói này chứa các lớp có các phương thức thao tác trên các đối tượng bean và tương tác với cơ sở dữ liệu.
o AccountDAL: lớp chứa các phương thức thao tác liên quan đến tài khoản người.
o FriendDAL: lớp chứa các phương thức thao tác liên quan đến bạn bè của người dùng.
o ServicePrincipalDAL: lớp chứa các phương thức liên quan đến các dịch vụ trong hệ thống.
o UserInfoDAL: lớp chứa các phương thức thao tác liên quan đến thông tin cá nhân của người dùng.
Gói com.fsn.com.util:
Gói này chứa các tiện ích của toàn Project, trong đó có các tiện ích liên quan đến Profile như sau:
o DBProcess: lớp có nhiệm vụ mở kết nối, đóng kết nối với cơ sở dữ liệu, chứa các hàm liên quan đến việc gọi các store procedure ở trong cơ sở dữ liệu.
Gói com.foloyu.profile.kerberos.data: Gói này sẽ chứa các lớp mô tả các thông điệp trong giao thức Kerberos.
o AuthenticationServerRequest: chứa dữ liệu trong gói tin AS_REQ.
o KDCReplyMessage: chứa dữ liệu của gói tin AS_REP, TGS_REP.
o Nounce: lớp tạo timestamp.
o SesionKeyWrapper: chứa dữ liệu của gói tin chứa session key.
o Ticket: chứa dữ liệu về vé dịch vụ.
Gói com.foloyu.profile.kerberos.service: Gói này chứa các lớp xử lý các thông tin để xác thực người dùng.
o AuthenticationClient: Lớp tạo gói tin AS_REQ
o AuthenticationService: Lớp xử lý gói tin AS_REQ và tạo gói tin AS_REP
Gói com.foloyu.ws.profile:
Gói này chứa lớp ProfileService bao gồm tất các các hàm mà Profile Engine sẽ cung cấp cho Foloyu Server.
b. Profile API
Chi tiết các hàm được Profile Engine cung cấp được mô tả dưới đây
TT Tên phương thức
Input Output Mô tả
1 createAccount UserBean Result : int 1 : Thành công 2 : Email này đã được đăng kí 3: Tên đăng nhập này đã được đăng kí 3 : Các lỗi khác
Phương thức tạo mới một tài khoản người dùng trong hệ thống
2 checkAccount UserName : String Result : int 1 : Thành công 2 :Sai UserName hoặc Password 3 : Lỗi khác
Kiểm tra xem UserName đã được đăng ký trong hệ thống hay chưa?
3 activateAccount UserId : long State: int
Result : boolean Thiết lập trạng thái State của User
State = 0: inactive State = 1 : active 4 changePassword UserId : long
Current Password : String
New Password : String
Result : boolean Thay đổi password của người dùng