Hình 4-22: Sơ đồ hoạt động của Foloyu Hình 4-23: Các lớp cài đặt cho bài toán bảo mật

Một phần của tài liệu giải pháp xác thực và bảo mật cho mạng xã hội ứng dụng mô hình kerberos (Trang 54 - 61)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

5 sendUserPasswor d

UserId: long Result : boolean Gửi password đến email của user 6 createAnswerQue stion UserId:long QuestionId:long Answer:String

Result: boolean Thêm câu trả lời của người dùng ứng với câu hỏi bí mật tương ứng. 6 verifyAnswer UserId: long

QuestionId: int Answer: String

Result: boolean Kiểm tra câu trả lời của người dùng ứng với câu hỏi có chính xác hay không?

Cho chức năng quản lý thông tin người dùng

TT Tên phương thức

Input Output Mô tả

1 editUserInfo UserBean Result : boolean Thay đổi thông tin cá nhân của user

2 getUserInfoByOt her

UserId(của người yêu cầu) : long UserId(của người mà người gửi yêu cầu muốn xem thông tin):long

UserInfo Object Lấy ra thông tin cá nhân của user do user khác yêu cầu.

3 getUserInfo UserId:long UserInfo Object Lấy ra thông tin cá nhân của user theo id (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 4-11: Các hàm chức năng quản lý thông tin người dùng

Cho chức năng thiết lập riêng tư về thông tin cá nhân

TT Tên phương thức

Input Output Mô tả

1 getPrivacy UserId:long Aray of

PrivacySettingBean

Lấy ra thiết lập thông tin riêng tư

2 setPrivacy PrivacyId:int PrivacyTypeId: int PrivacyValue:int

Result : boolean Sửa đổi các thiết lập bảo mật của user

Bảng 4-12: Các hàm cho chức năng thiết lập riêng tư về thông tin cá nhân

Cho chức năng quản lý bạn bè

TT Tên phương thức Input Output Mô tả

1 requestFriendship UserId (của người gửi yêu cầu) UserId (của người nhận yêu cầu)

Result : boolean Thêm 1 entry vào bảng Friend với isConfirmed = false

2 getFriendRequest UserId List of FriendBean Lấy ra danh sách bạn bè có yêu cầu làm bạn của 1 user từ bảng Friend với isConfirmed=false 3 approveFriendship UserId (của người

trả lời yêu cầu) UserId (của người gửi yêu cầu kết bạn)

Result : boolean Set isConfirmed = true cho bản ghi có FriendId

4 removeFriendship UserId (của người muốn xóa)

UserId (của người bị xóa khỏi danh sách bạn bè)

Result : boolean Xóa entry liên quan trong bảng Friend

5 suggestFriends UserId (của người gợi ý)

UserId (của người được nhận gợi ý) UserId (của người được gợi ý)

Result : boolean Thêm entry vào bảng Suggest Friend

6 getSuggestedFriend UserId List of

SuggestFriendBean

Lấy ra danh sách bạn bè được gợi ý của User 7 searchFriend UserId

keyword

List of FriendBean Tìm kiếm trong danh sách bạn bè của user theo tên đăng nhập

Bảng 4-13: Các hàm cho chức năng quản lý bạn bè

Một số hàm chức năng khác (adsbygoogle = window.adsbygoogle || []).push({});

TT Tên phương thức Input Output Mô tả

1 getAllUsers Array of UserBean Lấy ra toàn bộ User trong hệ thống 2 getServicePrincipals Array of

ServiceBean

Lấy ra toàn bộ các dịch vụ có trong hệ thống 3 createAsRequest ClientName: AuthenticationServe Tạo ra AS_REQ

String TgsnNme: String rRequest 4 Authenticate Request: AuthenticationS erverRequest

KDCReplyMessage Tạo ra AS_REP để cung cấp thông tin xác thực người dùng cho Foloyu

Một phần của tài liệu giải pháp xác thực và bảo mật cho mạng xã hội ứng dụng mô hình kerberos (Trang 54 - 61)