1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)

73 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đề Tài Phát Triển Ứng Dụng Kết Nối Facebook Trên Cơ Sở Giao Thức OAuth (Open Authentication)
Người hướng dẫn TS. Nguyễn Hải Châu
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại luận văn thạc sĩ
Năm xuất bản 2012
Thành phố Hải Phòng
Định dạng
Số trang 73
Dung lượng 1,98 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Yêu cầu đối với các nhà phát triển mạng là: - Nghiên cứu một giao thức hỗ trợ người duyệt web lưu trữ thông tin trên mộtwebsite riêng biệt, và sau đó cho phép website khác truy xuất dữ l

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRẦN VĂN LỄ

ĐỀ TÀI PHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊN

CƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)

Ngành : Công nghệ thông tin

Chuyên ngành : Hệ thống thông tin

Mã số : 60 48 05

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN HẢI CHÂU

Hải Phòng – 2012

Trang 2

Lời cam đoan

Ngày nay, với sự phát triển mạnh mẽ của các mạng xã hội trên Internet, nhu cầuchia sẻ các nguồn tin của người dùng như: hình ảnh, video, danh sách liên lạc, tàikhoản ngân hàng,… được lưu trữ trên một trang web với các trang web khác trở lên rấtcấp thiết Nhưng vấn đề đặt ra là các thông tin riêng tư như tên người dùng và mậtkhẩu cần phải được giữ an toàn Yêu cầu đối với các nhà phát triển mạng là:

- Nghiên cứu một giao thức hỗ trợ người duyệt web lưu trữ thông tin trên mộtwebsite riêng biệt, và sau đó cho phép website khác truy xuất dữ liệu đã lưu trong khivẫn bảo mật những thông tin nhận dạng của người duyệt web

- Phải cho phép chia sẽ tài nguyên cá nhân như hình ảnh, video, bạn bè, ngânhàng đang được lưu trữ trên một website với trang web khác, nhưng vẫn giữ kín tênngười dùng và mật khẩu

Phạm vi của luận văn tập trung vào phát triển hệ thống kết nối ứng dụng web

với trang mạng xã hội ảo Facebook trên cơ sở giao thức OAuth (Open Authentication).

Em xin kính gửi lời cảm ơn chân thành tới các thầy cô trường Đại học Côngnghệ cũng như các thầy cô của trường Đại học Hàng hải đã tận tình giảng dạy vàhướng dẫn chúng em trong suốt thời gian học vừa qua Nhờ có sự chỉ dạy tận tình củacác thầy cô, chúng em đã tích lũy nhiều thêm kiến thức cho bản thân cả về chuyênmôn và kiến thức xã hội

Trong quá trình hoàn thành luận văn, ngoài những cố gắng của chính bản thân

em đã nhận được sự giúp đỡ rất nhiều của các thầy cô hướng dẫn, các anh chị đi trước

và tất cả bạn bè

Em xin gửi lời cảm ơn chân thành nhất tới thầy Nguyễn Hải Châu, người thầy

đã trực tiếp hướng dẫn, giúp đỡ, chỉ bảo em nhiệt tình, để em có thể hoàn thành luậnvăn cao học của mình

Hải Phòng, tháng 8 năm 2012

Trang 3

Mục lục

Trang

Lời cam đoan 2

Mục lục 3

Danh mục các ký hiệu và chữ viết tắt 5

Danh mục các hình vẽ, đồ thị 6

MỞ ĐẦU 7

CHƯƠNG 1 Mạng xã hội FaceBook 8

1.1 Tổng quan về mạng xã hội ảo 8

1.1.1 Lịch sử phát triển của mạng xã hội 8

1.1.2 Tình hình phát triển của mạng xã hội trên thế giới 10

1.1.3 Các thể loại mạng xã hội phổ biến 10

1.1.4 Chọn mạng xã hội nào? 11

1.2 Mạng xã hội Facebook 13

1.2.1 Lịch sử phát triển 13

1.2.2 Cơ chế hoạt động của Facebook 14

1.2.3 Cách thức làm việc 15

1.2.4 Các dạng ứng dụng trên Facebook hiện nay 16

1.2.5 Điểm mạnh và yếu của mạng Facebook 17

1.3 Ứng dụng trên Facebook 17

CHƯƠNG 2 Xác thực và xác thực bằng OAuth 18

2.1 Tổng quan về xác thực 18

2.1.1 Định nghĩa xác thực 18

2.1.2 Vấn đề xác thực người dùng và tầm quan trọng của nó 18

2.1.3 Các dạng xác thực 19

2.1.4 Các giao thức xác thực 19

2.1.5 Các phương thức về xác thực 22

2.2 Giao thức xác thực OAuth 23

2.2.1 Một số khái niêm liên quan 23

2.2.2 OAuth - phương thức xác thực mở 24

2.2.3 Cách hoạt động của OAuth 25

2.2.4 Phân biệt OAuth và OpenID 27

CHƯƠNG 3 Xây dựng ứng dụng kết nối Facebook (OAuth.F.B.) 28

3.1 Giới thiệu về Facebook Platform 28

3.2 Các đối tượng nền tảng của Facebook 28

3.2.1 Facebook API 28

3.2.2 Các phương thức của API 29

3.2.3 Data Store API 36

3.2.4 Thư viện khách 36

Trang 4

3.2.5 Ngôn ngữ đánh dấu Facebook - FBML 36

3.2.6 CSS 49

3.2.7 Ngôn ngữ truy vấn – FQL 49

3.2.8 Ngôn ngữ tạo script – FBJS 52

3.3 Xây dựng ứng dụng OAuth.F.B 53

3.3.1 Mô tả môi trường thực nghiệm 53

3.3.2 Thiết kế OAuth.F.B 54

3.3.3 Cơ sở dữ liệu của OAuth.F.B 54

3.3.4 Sơ đồ hoạt động của ứng dụng OAuth.F.B 56

3.3.5 Một số hàm sử dụng trong OAuth.F.B 58

3.4 Sử dụng OAuth.F.B 66

3.4.1 Đăng ký sử dụng 66

3.4.2 Sử dụng ứng dụng 69

3.4.3 Tính hợp ứng dụng OAuth.F.B 71

KẾT LUẬN 72

TÀI LIỆU THAM KHẢO 73

Trang 5

Danh mục các ký hiệu và chữ viết tắt

OAuth Open Authentication

WebApp Web Application

OAuth.F.B OAuth FaceBook

FBML Facebook Markup Language

FQL Facebook Query Language

CAS Central Authentication Service

SAML Secure Assertion Markup Language

WebSSO Web Single Sign On

Trang 6

Danh mục các hình vẽ, đồ thị

Trang

Hình 1.1: Sơ đồ mạng xã hội 9

Hình 1.2: Các mạng xã hội 12

Hình 1.3: Mô hình web thông thường 14

Hình 1.4: Mô hình web Facebook 14

Hình 1.5: Mô hình web Facebook sử dụng cache 15

Hình 1.6: Cách thức làm việc của Facebook 15

Hình 2.1: Mô hình quá trình xác thực người dùng 20

Hình 2.2: Hệ thống xác thực người dùng của Gmail và Yahoo 21

Hình 3.1: Cách thức làm việc của Facebook API 29

Hình 3.2: Dòng chảy thông tin từ máy chủ ứng dụng đến trình duyệt của người dùng 37 Hình 3.3: Sơ đồ hoạt động của OAuth.F.B 56

Hình 3.4: Sơ đồ đăng ký sử dụng OAuth.F.B 56

Hình 3.5: Sơ đồ xác nhận đăng ký sử dụng OAuth.F.B 57

Hình 3.6: Sơ đồ chi tiết hoạt động của OAuth.F.B 57

Hình 3.7: Trang nền của ứng dụng OAuth Facebook 66

Hình 3.8: Trang yêu cầu đăng ký sử dụng dịch vụ OAuth Facebook 67

Hình 3.9: Cập nhật điện thoại để đăng ký sử dụng dịch vụ thành công 67

Hình 3.10: Xác nhận số điện thoại thành công 68

Hình 3.11: Đã hoàn tất đăng ký 68

Hình 3.12: Demo sử dụng chức năngOAuth FaceBook 69

Hình 3.13: Demo đọc tin mới, sử dụng OAuth.F.B trên SSH 70

Hình 3.14: Tích hợp OAuth.F.B lên website bán hàng 71

Trang 7

MỞ ĐẦU

Ngày nay, công nghệ thông tin phát triển, các mạng xã hội phát triển, việc traođổi thông tin trên mạng xã hội trở lên phổ biến Bài toán đặt ra là cần có hệ thống cóthể cập nhật thông tin từ một hệ thống bán hàng, hay từ một hệ thống quản lý nội dùngnào đó gửi nên mạng xã hội nhanh chóng Hệ thống phải có thể dễ dàng tích hợp trênnhiều website khác nhau

Luận văn gồm các nội dụng như sau:

Mở đầu: Giới thiệu về đề tài luận văn, ý nghĩa và tính khả thi của đề tài.

Chương 1 Mạng xã hội Facebook và cách phát triển ứng dụng Facebook:

Trình bày về mạng xã hội Facebook và các mạng xã hội phổ biến hiện này

Chương 2 Xác thực và xác thực bằng OAuth: Trình bày về vấn đề xác thực

trong mạng xã hội và trình bày về xác thực mở Open Authentication

Chương 3 Xây dựng ứng dụng trên Facebook: Trình bày các vấn đề liên quan

đến việc cài đặt và triển khai hệ thống Kết quả đạt được khi chạy thử hệ thống

Kết luận: Trình bày tóm tắt các kết quả đạt được Hướng mở rộng, phát triển hệ

thống

Trang 8

CHƯƠNG 1 Mạng xã hội FaceBook

1.1 Tổng quan về mạng xã hội ảo

1.1.1 Lịch sử phát triển của mạng xã hội

Mạng xã hội xuất hiện lần đầu tiên năm 1995 với sự ra đời của trang Classmatevới mục đích kết nối bạn học, tiếp theo là sự xuất hiện của SixDegrees vào năm 1997với mục đích giao lưu kết bạn dựa theo sở thích

Năm 2002, Friendster trở thành một trào lưu mới tại Hoa Kỳ với hàng triệuthành viên ghi danh, tuy nhiên sự phát triển quá nhanh này cũng là con dao hai lưỡi:server của Friendster thường bị quá tải mỗi ngày, gây bất bình cho rất nhiều thànhviên

Năm 2004, MySpace ra đời với các tính năng như phim ảnh (embedded video)

và nhanh chóng thu hút hàng chục ngàn thành viên mới mỗi ngày, các thành viên cũcủa Friendster cũng lũ lượt chuyển qua MySpace và trong vòng một năm, MySpacetrở thành mạng xã hội đầu tiên có nhiều lượt xem hơn cả Google và được tập đoànNews Corporation mua lại với giá 580 triệu USD

Năm 2006, sự ra đời của Facebook đánh dấu bước ngoặt mới cho hệ thốngmạng xã hội trực tuyến với nền tảng lập trình "Facebook Platform" cho phép thànhviên tạo ra những công cụ (apps) mới cho cá nhân mình cũng như các thành viên khácdùng Facebook Platform nhanh chóng gặt hái được thành công vược bực, mang lạihàng trăm tính năng mới cho Facebook và đóng góp không nhỏ cho con số trung bình

19 phút mà các thành viên bỏ ra trên trang này mỗi ngày

*) Cấu thành

Nút (node): Là một thực thể trong mạng Thực thể này có thể là một cá nhân,

một doanh nghiệp hoặc một tổ chức bất kỳ nào đó

Liên kết (tie): là mối quan hệ giữa các thực thể đó Trong mạng có thể có nhiều

kiểu liên kết Ở dạng đơn giản nhất, mạng xã hội là một đơn đồ thị vô hướng các mốiliên kết phù hợp giữa các nút Ta có thể biểu diễn mạng liên kết này bằng một biểu đồ

mà các nút được biểu diễn bởi các điểm còn các liên kết được biểu diễn bởi các đoạnthẳng

Trang 9

Hình 1.1: Sơ đồ mạng xã hội

Ví dụ lan truyền tin: Mạng có 1.000.000 thành viên liên thông, mỗi thành viênthuộc ít nhất 1 nhóm trung bình khoảng 100 cá thể Một bản tin A được đăng lên bởithành viên nào đó, lần thứ nhất tin A lan truyền đến 100 thành viên trong nhóm

Lần thứ 2, mỗi thành viên lại lan truyền tiếp cho các thành viên thuộc nhómkhác, số thành viên biết A có thể là 100 x 100 = 10.000

Lần thứ 3, lại lan truyền như trên, số thành viên biết A có thể là 100 x 10.000 =1.000.000

Như vậy chỉ sau 3 lần lan tin một triệu thành viên có thể biết tin A Tuy nhiênthời gian loan in còn phụ thuộc vào việc các thành viên có online hay không? Nếu mọingười đều online thì tin A ngay lập tức tin được lan toàn mạng

Trang 10

1.1.2 Tình hình phát triển của mạng xã hội trên thế giới

MySpace: Phù hợp với mọi lứa tuổi, nhưng chủ yếu dành cho lứa tuổi teen, tuy

nhiên một số ca sĩ cũng chọn nơi đây là nơi chia sẽ và lăng xê tên tuổi

Facebook: Phù hợp với mọi lứa tuổi, nhưng chủ yếu dành tầng lớp trí thức (bao

gồm sinh viên, các học sinh trung học và các công dân lớn tuổi khác)

Yahoo! 360: Phục vụ cho nhu cầu viết blog nhiều hơn là để giao lưu.

Ngoài ra còn có: Flickr, Flixster, Fotolog, Friendster, Hi5, imeem, Orkut,PerfSpot, SS Free, Tagged.com, Windows Live Spaces

Mạng xã hội là món ăn tinh thần với người dân trên toàn thế giới, đặc biệt vớicác thanh thiếu niên Trước sự ảnh hưởng mạnh mẽ của mạng xã hội đối với các bạntrẻ, một nghiên cứu mang tên “Pew/Internet & American Life” đã ra đời, theo đó mốiquan hệ giữa “teen” và mạng xã hội đã cho thấy những kết quả thú vị

Pew Internet & American Life là một dự án nghiên cứu về sự ảnh hưởng củamạng Internet đối với mọi mặt của cuộc sống người dân trên toàn thế giới như giađình, giáo dục, sứ khỏe, chính trị…Nghiên cứu này được thực hiện bởi 4 nhà xã hộihọc người Mỹ là Amanda Lenhart, Mary Madden, Alexandra Rankin Macgill và AaronSmith

1.1.3 Các thể loại mạng xã hội phổ biến

Ego centric Là mạng xã hội lấy cá nhân làm trung tâm Các hoạt động xã hội

sẽ xoay quanh bản thân mình, vì thế người ta gọi loại này lfa Ego centric Điển hìnhcho dạng này là MySpace, VietSpace và phần nào là Mash của Yahoo, Y360 cũng cómột chút Đặc điểm là trang chủ càng dễ tùy biến càng tốt, càng nhiều thứ để trưng bàycàng tốt, nhiều người lập trình Widget giúp mình trưng bày càng tốt Lựa chọn tốt làMySpace, Mash

Relationship centric Mạng xã hội loại này lấy mối quan hệ giữa cá nhân

người dùng và bạn bè làm trung tâm Nó giúp chúng ta biết được bạn mình đang làm

gì, nhóm bạn mình đang làm gì, cũng như giúp những người quan tâm tới ta biết tađang làm gì Điển hình cho dạng này là FaceBook, Twitter, Y360, Mash Việt nam cómột số mạng xã hội loại này đã ra mắt Đặc điểm của mạng này là mối quan hệ càngthật, càng thắt chặt càng tốt, các tính năng phải hỗ trợ tối đa các nhu cầu này

Content centric Đặc điểm chung của mạng loại này là nhằm trưng bày content domình hoặc nhóm của mình tạo ra cho bạn bè và công chúng (Bài viết, ảnh,audio/video, v.v )

Opera (phổ biến ở VN) , LiveSpace (phổ biến ở châu Âu), Y360 (phần MyPage) Loại này giúp dàn trang dễ dàng, có các tính năng cần thiết giúp chúng tapublish mọi loại nội dung, một chút kết nối bạn bè và giao tiếp Có thể nói nó gần nhưphần My Page của Y360, nhưng linh hoạt hơn, tùy biến cao hơn

Ning, v.v Loại này thiên về content nhóm, tạo điều kiện cho một nhóm cùngpublish, chia sẻ contents Ý tưởng có vẻ hay, nhưng thực tế các mạng này rất yếu ớt

Trang 11

YouTube, MetaCafe, Clipvn của Việt nam, flickers, Các nhóm này gọi làmạng xã hội có lẽ không chuẩn, có thể gọi chúng là hệ thống chia sẻ nội dung có tínhnăng mạng xã hội thì chuẩn hơn.

Wordpress, Blogger, TypePad, Y360 blog, Opera Blog, Live Spaces Blog.Nhóm này gọi là mạng xã hội cũng được, nhưng còn gượng ép hơn nhóm trước Xếpchúng vào loại blogging platform thì đúng hơn Nhưng nhiều người Việt nam thực chấtđang sử dụng blog mà cứ nghĩ là mình đang sử dụng mạng xã hội

Các mạng kết hợp 3 dạng mạng trên chỉ là dạng cơ bản, còn rất nhiều loại mạng xãhội khác là sự pha trộn giữa các loại này, cũng như nhắm các mạng chuyên biệt chotừng mảng nội dung, công nghệ,

1.1.4 Chọn mạng xã hội nào?

*) Yahoo 360 Không thể không nhắc tới Yahoo 360 vì nó là hệ thống thống trị

thị trường mạng xã hội Việt nam, đặc biệt là thống trị trên cả 3 phương diện: Ego,Relationship và content Tuy vậy trên thế giới Y360 lại gần như không có địa vị Lý dođơn giản, trên internet khi anh cố là mọi thứ anh sẽ không là ai Và trên từng phươngdiện Ego, Relationship hay content, Y360 lại rất yếu ớt, kém hẳn các platform kia Tuyvậy, đặc điểm thị trường Việt nam là người dùng chưa khó tính, cộng với nỗi lo ngại

về mất độc giả, mất friend nên Y360 vẫn còn vị trí Tuy vậy, xu hướng người dùngchuyển sang Wordpress, Blogger, Opera, Mash và FaceBook bắt đầu nhận thấy rõ

Yahoo rời bỏ Y360 là điều không thể tránh khỏi, nhưng có thể yên tâm rằngYahoo đã đảm bảo cho tất cả người dùng quá trình chuyển đổi hoàn hảo, có tráchnhiệm

*) Wordpress Đây là lựa chọn lý tưởng cho blogger chuyên nghiệp Những ai

đặt mối quan tâm hàng đầu vào nội dung viết cho độc giả diện rộng chứ không chỉ giớihạn cho gia đình, bạn bè Tự tin rằng nội dung của mình sẽ được mọi người theo dõi

mà không cần tới friendlist trên Y360

Cần một blogging platform tạo điều kiện cho việc viết, tương tác với độc giả,tương tác với blogger cùng mối quan tâm khác thông qua các tính năng tuyệt vời về:comment, tagging, trackback, blog roll, RSS, social media sharing, và hàng ngàn add-

on khác phục vụ content blogging

Tự hosting hoặc host miễn phí trên wordpress

Khả năng xây dựng nhóm blogger liên quan cùng viết

5xu cũng như một số người hay viết khác nên ngay lập tức vứt bỏ Y360 vàchuyển sang hệ thống này

*) Opera, Live Space Những ai quan tâm nhiều tới viết cho gia đình, bè bạn,

nhật ký cá nhân, album ảnh - có thể cân nhắc việc chuyển sang Opera, LiveSpace Hainền tảng này linh hoạt và dễ cấu hình hơn Y360 Tuy vậy việc chuyển đổi chưa hẳn làcần thiết, vì giá trị nhận được sẽ không lớn bằng việc đánh mất các quan hệ xã hộiđang có Trừ trường hợp đa số friends của mình đã move sang Opera hoặc LiveSpace

Trang 12

Nguyên tắc chung Trừ trường hợp blogger chuyên nghiệp, nguyên tắc căn bảncủa việc lựa chọn mạng xã hội là bạn ở đâu thì mình ở đấy Cũng không nên ngần ngạiviệc duy trì song song cùng một lúc 2 hệ thống mạng xã hội, cuối cùng thì tất cả mọingười sẽ chạy về nơi phù hợp với mình nhất, vì thế cũng nên thử các loại mạng xã hộitrước khi chọn một loại phù hợp nhất cho riêng mình.

Hình 1.2: Các mạng xã hội.

*) Facebook là một dịch vụ mạng xã hội trực tuyến phổ biến, nó là một sáng

tạo độc đáo dành cho sinh viên và mở ra cho bất cứ ai có thư điện tử Facebook chongười dùng một khoảng không gian để tạo profile và kết nối với bạn bè Facebook cónhững tiện ích như chat, chia sẻ hình ảnh, liên kết, nhóm ưa thích, status messages vàtin thời sự (feed)

Facebook là một bước tiến lớn của mạng xã hội, ban đầu được Zuckerberg lậptrình để tạo ra một mạng kết nối hấp dẫn cho bạn bè, sản phẩm này được sử dụng nội

bộ cho sinh viên ĐH harvard và sau này nhân rộng ra khắp thế giới với hơn 49 triệuthành viên đang hoạt động Nó là một nền tảng phát triển giúp cho người sử dụng cóthể tạo ra những ứng dụng của riêng mình Người dùng có thể thêm vào bất kì nhữngứng dụng nào mà họ muốn, sau đó tổng hợp và sắp xếp lại trong hồ sơ cá nhân

Trang 13

1.2 Mạng xã hội Facebook

1.2.1 Lịch sử phát triển

Facebook là một website mạng xã hội truy cập miễn phí do công tyFacebook,Inc điều hành và sở hữu tư nhân Người dùng có thể tham gia các mạng lướiđược tổ chức theo thành phố, nơi làm việc, trường học và khu vực để liên kết và giaotiếp với người khác Mọi người cũng có thể kết bạn và gửi tin nhắn cho họ, và cập nhậttrang hồ sơ cá nhân của mình để thông báo cho bạn bè biết về chúng

Tên của website nhắc tới những cuốn sổ lưu niệm dùng để ghi tên những thànhviên của cộng đồng campus mà một số trường đại học và cao đẳng tại Mỹ đưa cho cácsinh viên mới vào trường, phòng ban, và nhân viên để có thể làm quen với nhau tạikhuôn viên trường

Facebook mở đầu là một phiên bản Hot or Not của đại học Harvard với tên gọiFacemash Mark Zuckerberg, khi đang học năm thứ hai tại Harvard, đã dựng nênFacemash vào ngày 28 tháng 10 năm 2003 Ngày 4 tháng 2 năm 2004, Zuckermanthành lập “The Facebook”, ban đầu đặt tại thefacebook.com Việc đăng ký thành viênban đầu giới hạn trong những sinh viên của đại học Harvard, và trong vòng một thángđầu tiên, hơn một nửa số sinh viên tại Harvard đã đăng ký dịch vụ này

Eduardo Saverin (lĩnh vực kinh doanh), Dustin Moskovitz (lập trình viên),Andrew McCollum (nghệ sĩ đồ họa), và Chris Hughes nhanh chóng tham gia cùng vớiZuckerberg để giúp quảng bá website Vào tháng 3 năm 2004, Facebook mở rộng sangStanford, Columbia, và Yale Việc mở rộng tiếp tục khi nó mở cửa cho tất cả cáctrường thuộc Ivy League và khu vực Boston, rồi nhanh chóng đến hầu hết đại học ởCanada và Hoa Kỳ

Tháng 6 năm 2004, Facebook chuyển cơ sở điều hành đến Palo Alto, California.Công ty đã bỏ chữ The ra khỏi tên sau khi mua được tên miền facebook.com vào năm

2005

Tới tháng 9 năm 2005, Facebook ra mắt phiên bản trung, Zuckerberg gọi nó làmột bước logic tiếp theo Vào thời gian đó, các mạng của trường trung học bắt buộcphải được mời mới được gia nhập Facebook sau đó mở rộng quyền đăng ký thànhviên cho nhân viên của một vài công ty, trong đó có Apple Inc và Microsoft

Tiếp đó vào ngày 26 tháng 9 năm 2006, Facebook mở cửa cho mọi người trên

13 tuổi với một địa chỉ email hợp lệ Vào tháng 10 năm 2008, Facebook tuyên bố nó

đã thiết lập một trụ sở quốc tế tại Dublin, Ireland

Trang 14

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

*) Mô hình ứng dụng web thông thường

Hình 1.3: Mô hình web thông thường

Ứng dụng và cơ sở dữ liệu được đặt trên một máy chủ Web Ứng dụng sẽ chạytrên server và người dùng thực thi ứng dụng bằng cách sử dụng giao thức HTTP thôngqua trình duyệt Mô hình này sẽ làm việc hiệu quả nếu như server và client có 1 kết nốiInternet ổn định

*) Mô hình ứng dụng web Facebook

Hình 1.4: Mô hình web Facebook

Người dùng truy cập Facebook.com và ứng dụng thông qua trình duyệt Internet.Tuy nhiên ứng dụng không được đặt tại máy chủ của Facebook mà được lưu trên máychủ của chính người tạo ra ứng dụng đó Facebook Platform cũng cung cấp một giaodiện cho người viết ứng dụng

Với một máy chủ web bình thường trung bình chỉ chịu được từ 100 tới 500 truyvấn cùng một lúc Tuy nhiên với Facebook trung bình mỗi giây phải hiện 600 nghìnhình ảnh cùng một lúc Vấn đề đặt ra ở đây là làm thế nào để mỗi giây Facebook hiệnđược 600 ngàn hình ảnh ? Để giải quyết vấn đề này Facebook đã sử dụng vùng lưu trữđệm (cache) và đây cũng chính là trái tim của hệ thống

Trang 15

Hình 1.5: Mô hình web Facebook sử dụng cache

Facebook đã phát triển Haystack – một hệ thống quản lý các tập tin hình ảnhtrung gian để cải tiến sự truy vấn Trước đây, Facebook đã sử dụng hệ thống 2 tầng:một tầng chuyên cho việc upload hình ảnh và lưu trữ vào server Tầng kia có nhiệm vụtìm và lấy hình ảnh từ server để trả lời các truy vấn Tuy vậy việc xử lý theo cách cổđiển này là không phù hợp với nhu cầu tăng rất nhanh số lượng người dùng củaFacebook dẫn tới tình trạng nghẽn mạch Input / Output Haystack sẽ quản lý và lưu trữcác hình ảnh trong vùng đệm và từđây sẽ trả lời các truy vấn hình ảnh Bên cạnh đóFacebook còn cải tiến các đoạn code trên webserver để giảm thiểu kích thước tập tin

và thời gian tính toán Ngôn ngữ lập trình cho từng bộ phận cũng dần được tối ưu hóa.Người truy cập sẽ được phân luồng ngẫu nhiên vào các ngân hàng dữ liệu để giảm tải

và các truy vấn của họ sẽđược hệ thống cache trả lời nhanh chóng

1.2.3 Cách thức làm việc

Hình 1.6: Cách thức làm việc của Facebook

Trang 16

1) Trình duyệt của người dùng yêu cầu http://apps.facebook.com/myapp Địachỉ này trỏ tới một cụm máy chủ trong trung tâm dữ liệu của Facebook Những servernày sẽ phân tích các yêu cầu , xác định các ứng dụng tương ứng, sau đó tìm kiếm Urlcallback mà nhà phát triển ứng dụng cung cấp và thực hiện gọi tới Url đó.

2) Máy chủ của Facebook sẽ gửi yêu cầu tới máy chủ của người tạo ứng dụng.Yêu cầu này người dùng hoàn toàn không biết

3) Server chứa ứng dụng tạo một lời gọi API tới server của Facebook bằng cách

sử dụng FQL thông qua phương thức fql.query() của API hoặc trực tiếp bằng các hàmAPI

4) Máy chủ chứa ứng dụng sẽ trả về FBML tới máy chủ của Facebook Kết quảđạt được cuối cùng là 1 tài liệu FBML Tài liệu này sẽđược gửi trả lại server củaFacebook để thực thi

5) Tài liệu FBML sẽ được chuyển sang dạng HTML và phục vụ cho người sửdụng Đây là bước cuối cùng trong quá trình thực thi và trả về kết quả cho trình duyệt

1.2.4 Các dạng ứng dụng trên Facebook hiện nay

Sự phát triển ngày càng lớn mạnh của Facebook đã kéo theo sự ra đời của rấtnhiều các ứng dụng Theo thống kê hiện nay có khoảng 90.000 ứng dụng trênFacebook , với sự tham gia của 120 công ty

Theo thống kê năm 2008 ứng dụng trên Facebook được chia làm các loại:

Tiếp theo là các ứng dụng Café world, Facebook for Iphone, Texas HoldEmPoker,…

Trang 17

1.2.5 Điểm mạnh và yếu của mạng Facebook

*) Ưu điểm

- Là mạng phổ biến hiện nay

- Tính kết nối cao, chia sẻ cập nhật thông tin hàng ngày mà vẫn bảo vệ đượcquyền riêng tư

- Ứng dụng được thiết kế khoa học , thao tác nhanh gọn, hỗ trợ tiếng Việt tốt

- Dễ dàng lưu trữ và chia sẻ hình ảnh, video clip…

- Nhiều ứng dụng , game, quiz Người dùng cũng có thể tạo ra ứng dụng choriêng mình

- Khả năng kết nối, giao lưu với các thành viên trên các lãnh thổ khác nhau

- Tính năng viết blog cho phép soạn thảo dễ dàng

*) Nhược điểm

- Người dùng không tùy chỉnh được template để có trang riêng cho mình

- Nếu là người mới dùng Facebook sẽ gặp khó khăn về thao tác

1.3 Ứng dụng trên Facebook

Facebook cung cấp cho người dùng nền tảng lập trình để có thể phát triển ứngdụng chạy trên mạng xã hội này Một số ứng dụng có thể được cài đặt ngay trongphạm vi Facebook, những ứng dụng khác lại dễ dàng cài đặt hơn nếu bắt đầu trên trangweb của ứng dụng trước

Facebook có khoảng 1 tỷ người dùng và đã thu hút một số lượng lớn các nhàphát triển ứng dụng, trong đó có những ứng dụng thu hút được hàng chục triệu ngườidùng mỗi tháng và doanh thu đạt hàng chục triệu đô $, điển hình là một loạt game củahãng phát triển game nổi tiếng Zynga

Khi người dùng bắt đầu lập trang trên Facebook, sẽ có vài ứng dụng cơ bản củaFacebook ở cột bên trái Những ứng dụng này do chính hãng Facebook cung cấp baogồm Ảnh (Photos), Phim (Videos), Liên kết (Links), Sự kiện (Events) và Ghi chú(Notes) Bất cứ ứng dụng nào khác người dùng cài đặt thêm sẽ là ứng dụng của bênthứ ba, không phải Facebook tạo ra nó

Ứng dụng của Facebook cũng bao gồm các trò chơi như CityVille và MafiaWars và một số các ứng dụng khác mà bạn có thể đã thấy như Give a Hug hoặcBirthday Calendar

Vì ứng dụng được phát triển bởi bên thứ ba, do đó không phải tất cả các ứngdụng đều hoạt động tốt và đều đáng tin cậy Người dùng có thể đã gặp phải một vấn đềtrên Facebook như các ứng dụng thư rác, phá rối hay lừa đảo

Trang 18

Xác thực là đặc biệt quan trọng để cho sự hoạt động của hệ thống được an toàn.

Hệ thống luôn luôn trước tiên xác thực một thực thể khi nó cố thử thiết lập sự liên lạc.Khi đó nét nhận dạng của thực thể được dùng để xác định sự truy nhập của nó như mộtđặc quyền hoặc để đạt được sự sẵn sàng phục vụ Suốt quá trình thực hiện giao thứcxác thực, hai bên luôn luôn trao đổi bí mật chung, mà nó sẽ được dùng để đưa đến sựbảo mật và toàn vẹn

2.1.2 Vấn đề xác thực người dùng và tầm quan trọng của nó

Hệ thống xác thực người dùng đóng vai trò hết sức to lớn trong việc bảo mậtthông tin của người dùng trong thời kì hiện đại hoá ngày nay Vậy nếu không có hệthống xác thực người dùng thì làm sao giữ an toàn được những thông tin bí mật hoặclàm sao quản lý được các bí mật trong kinh doanh, thương mại và tài khoản ở ngânhàng hoặc những nguồn tài nguyên được chia sẻ ở trên mạng từ một máy chủ?

Với tên và mật khẩu chính xác người dùng có thể truy cập vào các tệp tin, thưđiện tử, tài khoản của mình ở ngân hàng hay những thông tin cá nhân của khác…Màngười dùng không muốn một người dùng nào khác biết được Vì vậy có thể nói lợi ích

do hệ thống này mang lại là rất lớn đối với cuôc sống hiện đại ngày nay Nhưng các hệthống xác thực người dùng hiện nay cũng gặp phải không ít những vấn đề khó khăn:

Mật khẩu của người dùng có thể bị đánh cắp bởi những người dùng trên mạnginternet Những hacker có rất nhiều công cụ để có thể lấy được mật khẩu Do đó đốivới hệ thống xác thực người dùng để đảm bảo an toàn thì người dùng phải thay đổimật khẩu thường xuyên, do đó sẽ làm cho người dùng khó nhớ

Trên thế giới hiện nay phương thức xác thực phổ biến vẫn là sử dụng các ký tựlàm mật khẩu và xu hướng đặt mật khẩu của người dùng có thể là sở thích, tên mộtnhân vật nổi tiếng ưa thích, hoặc ngày sinh nhật… Sẽ làm cho kẻ tấn công sẽ dự đoánđược Đối với những mật khẩu thông thường thì người dùng có thể mô tả được hoặcghi lại được vì vậy rất dễ bị lộ

Trang 19

+ Trong sự xác thực một phía, chỉ một phía thực hiện sự xác thực tự bản thânmình khi liên lạc

+ Trong sự xác thực thực thể đồng thời, cả hai bên phải xác thực lẫn nhau

- Sự xác thực trách văn bản gốc cung cấp bằng chứng để một đoạn dữ liệu, cũngnhư một thư điện tử, trong thực tế được tạo bởi người sử dụng chính thức

2.1.4 Các giao thức xác thực

Sức mạnh của một hệ xác thực phụ thuộc khả năng của hạ tầng, hỗ trợ để lưugiữ khóa mật mã dài và thực hiện các phép toán mật mã Con người không có cả haikhả năng này Trừ khi hạ tầng bổ sung thêm các đại lượng này cho người dùng, và hệthống xác thực cần phải dựa vào mật khẩu ngắn để kiểm tra nhận dạng của ngườidùng Điện thoại và thiết bị không kêu (dumb terminals) là những ví dụ về hạ tầngkhông có khả năng này

Nếu một người truy nhập đến một thiết bị thông minh, ví như máy tính hoặcSmart card, bằng bất cứ cách nào, hệ thống xác thực hứa hẹn một giao thức xác thực tỉ

mỉ hơn với thiết bị kiểm tra nét nhận dạng của người truy nhập Các giao thức này cóthể thúc đẩy các phép toán mật mã tổng hợp và dùng khóa mật mã dài để phá vỡ nhiềudạng tấn công thông tin

+ Giao thức thử thách và trả lời: Giao thức thử thách và trả lời cho phép

người truy nhập tự xác thực mình với hệ thống bằng cách chứng minh hiểu biết củamình về giá trị mật mã bí mật mà không yêu cầu người truy nhập tiết lộ bí mật Hệthống xác thực đưa ra cho người truy nhập một số được tạo ra một cách ngẫu nhiênđược gọi là thử thách Người truy nhập nhập số thử thách và giá trị mật để hàm mật mãtính ra câu trả lời Hệ thống xác thực nét nhận dạng của người truy nhập nếu câu trả lời

là giá trị mong đợi Bởi vì thử thách là một số ngẫu nhiên, giao thức thử thách – trả lờicung cấp một lá chắn có hiệu quả chống lại sự tấn công lặp lại

Trang 20

Hình 2.1: Mô hình quá trình xác thực người dùng

Hầu hết các hệ thống xác thực người dùng hiện nay người dùng muốn đăngnhập đều phải nhập tên và mật khẩu Trong đó tên và mật khẩu là do người dùng tạo

ra Tên và mật khẩu của người dùng sẽ được hệ thống mã hoá và lưu vào cơ sở dữ liệu.Mật khẩu của người dùng phải được các hệ thống xác thực mã hoá để đảm bảo an toànbằng những thuật toán mã hoá khác nhau Đặc biệt là các hệ thống máy tính mật khẩucủa người dùng phải được mã hoá bằng những thuật toán đặc biệt, ví dụ như hệ điềuhành Linux hay Unix sử dụng các thuật toán DES, MD5, hay Blowfish để mã hoá mậtkhẩu thành hàm băm trước khi lưu vào cơ sở dữ liệu, hay WindowNT sử dụng MD4 vàDES để mã hoã mật khẩu Khi đăng nhập vào hệ thống thì người dùng phải nhập lạitên và mật khẩu mà người dùng đã đăng kí Hệ thống sẽ so sánh tên và mật khẩu màngười dùng nhập với mật khẩu đã đăng kí Nếu đúng người dùng đăng nhập thànhcông, ngược lại người dùng sẽ phải đăng nhập lại Hệ thống sẽ từ chối nếu sau một vàilần đăng nhập không thành công Hình vẽ 2.2.4-1 mô tả quá trình xác thực người dùng

Trên thế giới hiện nay các hệ thống xác thực người dùng phổ biến vẫn là sửdụng các kí tự làm mật khẩu ví dụ như các hệ thống thư điện tử của yahoo hoặc gmail,ATM…

Trang 21

Hình 2.2: Hệ thống xác thực người dùng của Gmail và Yahoo

+ Giao thức mật khẩu được chuyển đổi: Trong giao thức này, người truy

nhập chế biến mật khẩu của mình qua hàm băm rồi gửi kết quả tới hệ thống xác thực

Hệ thống so sánh giá trị băm với giá trị băm chính xác của mình và xác thực nét nhậndạng của người sử dụng nếu hai giá trị như nhau Nếu hệ thống lưu giữ mật khẩu thay

vì giá trị băm của chúng, hệ thống sẽ tính giá trị băm của mật khẩu trước khi đưa ra sosánh Giao thức mật khẩu được chuyển đổi thể hiện mật khẩu dưới dạng hiện, nên nó

dễ bị tổn thương trước sự tấn công lặp lại

+ Giao thức mật khẩu sử dụng một lần: Giao thức mật khẩu sử dụng một lần

là một dạng quan trọng của giao thức mật khẩu được chuyển đổi để che chắn chống lại

sự tấn công lặp lại được thực hiện bởi kẻ nghe trộm Giao thức này yêu cầu người truynhập và hệ thống xác thực chia một số bí mật nhỏ n Người truy nhập băm mật khẩucủa mình n lần để tạo ra mật khẩu sử dụng một lần và xác thực người truy nhập nếuhai kết quả là như nhau Trên cơ sở của sự xác thực thành công, cả hai bên giảm lượng

n Một kẻ trộm không thể thực hiện việc tấn công lặp lại bởi vì mật khẩu sử dụng mộtlần tiếp theo là khác và nó không thể xác định từ giá trị trước đó Trong giao thức này,cần phải thay đổi mật khẩu của người dùng và lập lại n khi n tiến tới 0

Trang 22

+ Giao thức chứng chỉ số: Giao thức chứng chỉ số là một dạng của giao thức

thử thách - trả lời mà ở đó giá trị mật mã bí mật là một khóa riêng và hệ thống xácthực dùng khóa công khai tương ứng với khóa riêng để xác thực câu trả lời

+ Giao thức nhận dạng sinh trắc học: Khi người dùng đăng nhập mật khẩu

của người dùng sẽ được so sánh với mật khẩu đã lưu trong cơ sở dữ liệu thông quamạng máy tính Nếu đúng quá trình xác thực thành công Giao thức này có độ bảo mậtcao

2.1.5 Các phương thức về xác thực

+ Xác thực theo thẻ: Xác thực theo thẻ, là công nghệ để xác thực người dùng

muốn đăng nhập vào một hệ thống, mạng hay máy chủ, được sử dụng khá phổ biếnhiện nay trên thế giới cũng như ở Việt Nam Ví dụ như : key card, bank card, smartcard, ATM card… Mật khẩu mà người dùng phải nhớ đó là số PIN

+ Xác thực dựa theo tri thức: Xác thực dựa theo tri thức là phương thức sử

dụng rộng rãi nhất hiện nay trên thế giớ Đây là phương thức đã rất quen thuộc vớingười dùng Phương thức này bao gồm cả sử dụng mật khẩu bằng dãy các kí tự vàhình ảnh

+ Xác thực dựa theo nhân trắc quan: Xác thực dựa theo nhân trắc quan là

phương thức sử dụng công nghệ như nhận dạng vân tay, võng mạc, khuôn mặt, giọngnói, loại máu, những chi tiết sinh học nhỏ trên cở thể người dùng… Hệ thống sẽ kiểmtra những đặc điểm sinh học duy nhất của nguời dùng để xác định nguời dùng đó là aibằng cách sử dụng dấu vân tay hay âm thanh …của người dùng làm mật khẩu Do đómật khẩu không dễ dàng thay đổi được Mật khẩu được mã hoã dưới dạng hàm bămbằng hệ thống PKCs và được lưu ở một nơi khác

Trang 23

2.2 Giao thức xác thực OAuth

2.2.1 Một số khái niêm liên quan

*) Authentication (sự xác nhận là đúng): thường liên quan đến việc người dùng

phải “đăng nhập” vào hệ thống Xác nhận thông tin đăng nhập (người sử dụng) cóchính xác không

*) Authorization (sự cho phép): chỉ quyền được cấp của người sử dụng trên tài

nguyên hệ thống

*) Single Sign On: là việc người dùng có thể đăng nhập vào một website (như

google.com) và sử dụng đăng nhập đó trên các website khác SSO là một tiện ích,thường được sử dụng trên các website liên quan mật thiết đến nhau Tiện ích SSO cónhiều phương pháp để thực hiện, Secure Assertion Markup Language (SAML) là mộttrong các phương pháp đó

Nguyên lý hoạt động của WebSSO cơ bản:

Bước 1: Người dùng đăng nhập vào tài khỏan tại url của dịch vụ SSOAuthentication Service Ví dụ: https://login.live.com, https://login.yahoo.com Sau khiđăng nhập thành công chuyển sang bước 2

Bước 2: Authentication Service sẽ thực hiện việc sinh ra Authentication Token.Đây là một string chứa thông tin chứng thực (không chứa password) và thông thườngđược mã hóa bằng DES hoặc RSA

Bước 3: Authentication Token sẽ được truyền tải trên http (không mã hóa SSL)giữa ứng dụng web (partner) và Authentication Service Trên mỗi ứng dụng web sẽ cómột SSOAgent, có nhiệm vụ xử lý Authentication Token và kiểm tra việc chứng thực.Trong quá trình này session cookie sẽ được tạo tại trình duyệt của người dùng đăngnhập nếu SSOAgent kiểm tra Authentication Token thành công

Bước 4: [Sign Out]: Khi chứng thực tự động vào một partner, AuthenticationService sẽ lưu lại thông tin partner này, khi người dùng click [Sign Out] thìAuthentication Service sẽ lần lượt Sign Out (xóa toàn bộ session cookie của partners)

*) Central Authentication Service (CAS): là một protocol phục vụ Single

Sign-on trên nền web được phát triển tại đại học Yale Nó cho phép user truy cập nhiềuứng dụng web khác nhau mà chỉ cần login một lần

Protocol CAS bao gồm ít nhất 3 thành phần: web browser, web application vàCAS server

Khi web browser truy cập vào web application, application sẽ redirect user tớitrang đăng nhập của CAS server

Nếu đăng nhập thành công, CAS server sẽ redirect trở về lại web application,kèm theo một security ticket Web application sẽ dùng identifier của chính nó và ticketnày để kiểm tra với CAS server xem user đó đã đăng nhập hay chưa

Hiện nay có 3 bản implement protocol CAS phần server được sử dụng nhiều:

- Jasig CAS server: Được phát triển bởi tổ chức Jasig, sử dụng ngôn ngữ Java

Trang 24

- ESUP CAS server: Một phần của dự án ESUP Portail, sử dụng ngôn ngữJava.

- RubyCAS server: CAS server phát triển bằng ngôn ngữ Ruby

Kết hợp CAS vào các ứng dụng web đã có: Các CAS server chỉ làm nhiệm vụ

hỗ trợ authenticate, thông tin về các user cần được quản lí bằng một application khác

Vì vậy đầu tiên ta cần xác định sẽ để cho một web application sẵn có quản lí các userhay tạo application mới chuyên dùng cho việc này

Sau khi triển khai xong CAS server và application quản lí các user, ta cần triểnkhai các CAS client cho các ứng dụng còn lại để user có thể đăng nhập bằng tài khoảntại CAS server

Hiện có rất nhiều CAS client cho các ngôn ngữ khác nhau như Java, PHP,Python, Ruby, NET, và các module hỗ trợ CAS cho các web framework nhưDrupal, Moodle, Django,

OAuth là phương pháp chia sẻ tài nguyên giữa các ứng dụng mà không phảiđưa ra username và password Các hãng lớn như Google, Aol, Yahoo… đều có cácphương pháp Authorization của riêng mình Nhưng nó khiến các bên thứ ba khó khănkhi tích hợp với họ Vì vậy họ họp nhau lại để tạo ra chuẩn Open Authorization

Có rất nhiều giao thức chứng thực trên internet: Google AuthSub, AOLOpenAuth, Yahoo BBAuth, Upcoming API, Flickr API, Amazon Web Services API,Facebook Auth… gây khó khăn cho lập trình viên khi phát triển ứng dụng OAuth là

sự tập hợp những ưu điểm của chúng và gom lại thành chuẩn chung

sẽ sản xuất một hoặc nhiều tài liệu thích hợp để xem xét như là tiêu chuẩn mà sẽ:

- Cải thiện các thuật ngữ được sử dụng

- Bảo đảm an ninh thực tế, hoặc các tài liệu trong các khoảng trống khả năng và

đề xuất một con đường chuyển tiếp cho các địa chỉ khoảng cách

- Phát triển các khả năng làm việc nhóm

- Cung cấp các hướng dẫn có thể mở rộng

Trang 25

Điều này cụ thể có nghĩa là một điểm khởi đầu cho nhóm làm việc OAuth 1.0(tức là, dự thảo-hammer-oauth), một bản sao của bản gốc OAuth đặc điểm kỹ thuậttrong IETF, được sử dụng và có thể được mở rộng Trong công việc cập nhật OAuth1.0 trở thành OAuth 1 1, nhóm vẫn giữ các tương thích với oAuth 1.0 về các tiêuchuẩn kỹ thuật Tuy nhiên, các thay đổi mà không tương thích có thể được chấp nhậnnếu các nhóm xác định rằng mục tiêu và các tài liệu rõ ràng và các thay đổi được yêucầu phải đáp ứng yêu cầu của của nhóm kỹ thuật

Xa hơn, OAuth 1.0 định nghĩa ba phương thức “chữ kí” để bảo vệ các yêu cầuPLAINTEXT, HMAC-SHA1 và RSA -SHA1 Nhóm sẽ làm việc trên các phương thứcxác thực “chữ kí” mới và sẽ mô tả môi trường nơi mà các yêu cầu an ninh sử dụng.Hiện nay, phương pháp chữ kí không được sửa đổi, nhưng có thể bỏ đi phần backwardcủa các hoạt động tương thích Các ứng dụng hiện tại và các phương pháp mới xácthực giao thức khác so với HTTP sẽ được nghiên cứu tỉ mỉ

*) Mục tiêu và lộ trình nghiên cứu :

- Tháng 4 năm 2009: Đệ trình “OAuth: Phương thức ủy quyền cấp phép HTTP”như một tin tức của nhóm làm việc ( bản dự thảo hammer-oauth sẽ được sử dụng đềbắt đầu các công việc xa hơn)

- Tháng 7 năm 2009: Gửi một tài liệu như là tin tức của nhóm làm việc về chứcnăng của cơ chế xác thực 2-legged HTTP

- Tháng 7 năm 2009: Bắt đầu hội thảo về các mở rộng OAuth mà nhóm nênthực thi

- Tháng 10 năm 2009: Bắt đầu nhóm làm việc là OAuth: phương thức ủy quyềnxác thực HTTP

- Tháng 11 năm 2009: Đệ trình “OAuth:phương thức ủy quyền xác thực” tớiIESG để cân nhắc tiêu chuẩn đề xuất

- Tháng 11 năm 2009: Bắt đầu Working Group Last Call về các tài liệu cơ chếxác thực 2-legged HTTP

- Tháng 11 năm 2009: chuẩn bị lộ trình cập nhập để bắt đầu công việc mớitrong phạm vi của bản tuyên bố

- Tháng 12 năm 2009: Đệ trình tài liệu phương thức xác nhận 2-legged HTTPtới IESG để cân nhắc tiêu chuẩn đề xuất

2.2.3 Cách hoạt động của OAuth

OAuth là phương pháp để Client sử dụng được tài nguyên của You bên phíaServer Bắt đầu với Authorization với những bên liên quan như sau:

Client: là ứng dụng, chỉ là một ứng dụng và có thể là ứng dụng Desktop hay

cũng có thể là website như http://www.youbrainy.com muốn có quyền sử dụng tàinguyên của Server

Server: là một ứng dụng khác, chẳng hạn như google.com.

You: chính bạn, người có tài nguyên trên Server và muốn cho Client quyền sử

dụng tài nguyên đó

Trang 26

*) Phân biệt hai loại OAuth

2-legged OAuth: là kiểu Authorization trong đó vai trò của You và Client là

như nhau Tức là Client chính là You của Server Đó là kịch bản Client-Server thôngthường

3-legged OAuth: là kiểu Authorization trong đó You và Client là phân biệt.

Client muốn You chia sẻ tài nguyên đã có bên phía Server

*) Cách OAuth hoạt động

2- legged OAuth:

1 Client đăng ký sử dụng dịch vụ với Server

2 Server cho Client

 CONSUMER_SECRET_KEY

3 Client sử dụng các keys trên để thực hiện Authorization

3- legged OAuth

1 Client đăng ký sử dụng dịch vụ với Server

2 Server cho Client

 CONSUMER_SECRET_KEY

3 You có tài nguyên ở Server

4 You sử dụng dịch vụ ở Client, Client yêu cầu You cho phép khai thác tàinguyên của You ở Server

5 Client yêu cầu Server gửi REQUEST_TOKEN cho You

6 Client chuyển You đến Server Authentication

7 You đăng nhập vào Server, Server hỏi You có muốn chia sẻ quyền khaithác dữ liệu cho Client hay không

8 You đồng ý, Server chuyển You về Client kèm theo ACCESS_TOKEN

9 Client sử dụng ACCESS_TOKEN để thực hiện thao tác trên các tàinguyên của You thuộc Server

Trang 27

2.2.4 Phân biệt OAuth và OpenID

OpenID OAuthĐăng nhập và lấy thông tin người sử dụng Có Có

Post / Retrieve không cần xác thực lại Không Có

OpenID: OpenID cho phép user sử dụng một account đã có ở một web site hỗtrợ như Google, Yahoo!, MySpace, để login vào một web site khác Khác với CAS ởchỗ user vẫn phải login vào từng site, còn đối với CAS user chỉ cần login một lần

OAuth: OAuth là một protocol cho phép user cấp phép cho một web applicationtruy cập thông tin của mình trên một site khác mà không cần cung cấp thông tin logincho web application đó

Trang 28

CHƯƠNG 3 Xây dựng ứng dụng kết nối Facebook

(OAuth.F.B.)

3.1 Giới thiệu về Facebook Platform

Facebook Platform cung cấp một framework cho người phát triển để tạo ra cácứng dụng tương tác và tích hợp với các tính năng cốt lõi của Facebook Được giớithiệu vào ngày 24 tháng 5 năm 2007 và đến ngày 09 tháng 12 năm 2009 đã có hơn500.000 ứng dụng hoạt động trên Facebook Platform Facebook platform bao gồm 4thành phần: FBML, API, FQL và FBJS

Khi tạo ra một ứng dụng từ Facebook Platform, có thể tích hợp một vài thànhphần trong framework:

- Hiện thư mục ứng dụng

- Cung cấp trang giới thiệu

- Cung cấp cho người sử dụng những lựa chọn

- Giới thiệu cho những người khác

- Hiển thị trang Facebook Canvas

- Tạo Left Nav

- Hiển thị box thông tin

- Tạo link liên kết tới profile

- Thực thi và gửi thông báo tới nguồn tin

- Gửi thông báo email

- Tạo yêu cầu

- Tạo tin nhắn đính kèm

- Tích hợp với các thiết lập bảo mật của Facebook

3.2 Các đối tượng nền tảng của Facebook

3.2.1 Facebook API

API là viết tắt của Application Programming Interface ( giao diện chương trìnhứng dụng ) Facebook API là một nền tảng để xây dựng những ứng dụng cho các thànhviên của mạng xã hội Facebook API cho phép các ứng dụng sử dụng các kết nối xãhội và các thông tin hồ sơ để làm cho các ứng dụng liên quan tới nhau nhiều hơn, và

để phổ biến những hoạt động tới nguồn cung cấp tin và trang hồ sơ của Facebook, tùythuộc vào cài đặt cá nhân của người dùng API cung cấp những lời gọi để lấy thông tin

về người sử dụng, nhóm người dùng, bạn bè, thông báo, sự kiện và nguồn cấp dữliệu…Cũng có thể dùng lời gọi API để cập nhật và lấy thông tin hồ sơ

API sử dụng giao thức RESTful và các hồi đáp được trả lại dưới dạng XML

Trang 29

*) Facebook API làm việc như thế nào?

API là nền tảng do Facebook cung cấp cho người viết ứng dụng để dễ dàngtrong việc tạo ứng dụng và đảm bảo người viết ứng dụng không can thiệp quá sâu vào

hệ thống của Facebook API cho phép thực thi nền tảng thông qua các phương thứcđược định nghĩa Thông qua các lời gọi API, người tạo ứng dụng có thể lấy thông tin

về user, groups, photo,… mà họ cần

Hình 3.1: Cách thức làm việc của Facebook API

Facebook gửi phương thức POST tới máy chủ Facebook API Nó bao gồm một

số các thông số yêu cầu như api_key của ứng dụng Session_key của người dùng đưa

ra yêu cầu Bên cạnh đó Facebook còn thêm vào tham số fb_sig để thông báo ứngdụng đưa ra yêu cầu bằng cách này tất cả các lời gọi API sẽ được đảm bảo, Facebook

có thể xác minh các yêu cầu được gửi từ một ứng dụng đã được chấp thuận Thông tin

mà Facebook sẽ trả lại là một tài liệu XML

3.2.2 Các phương thức của API

Các phương thức API của Facebook được chia thành các nhóm một cách hợplý:

Trang 30

+ Auth.createToken()

- Mô tả: tạo ra một auth_token để vượt qua trang login.php của Facebook để sau

đó tạo ra một phiên giao dịch khi người dùng đã đăng nhập

- Tham số: api_key, sig, v

bỏ qua, phương thức trả về tất cả các sự kiện liên quan tới eids được cung cấp

- Tham số: uid, eids,start_time, end_time, rsvp_status

- Ví dụ:

Lọc sự kiện của một người dùng:

$events = $facebook->apiclient->events_get(

12345,null,null,null,null);

Lọc sự kiện của tập id sự kiện được cung cấp

$events = $facebook->api_client->events_get (null,

array(14381739642,16044821668), null,null,null);

+ Events.getMember()

- Mô tả: Trả về danh sách thành viên liên quan tới một sự kiện Đây là mộtmảng đa chiều với chiều thứ nhất chứa tình trạng RSVP( attending, unsure, declined,not_replied) và chiều thứ 2 là uid của người dùng

- Tham số: eid

- Ví dụ:

$members=$facebook->api_client->events_GetMembers($eid);

Trang 31

- Ví dụ: $facebook->api_client->stream_publish($mess);

e) Fql

Như đã biết, Facebook cung cấp các nhóm hàm API để lấy dữ liệu, bên cạnh đó,API còn cung cấp một nhóm hàm để giúp người viết ứng dụng sử dụng các câu truyvấn FQL để lấy dữ liệu từ cơ sở dữ liệu của Facebook

+ Fql.query()

- Mô tả: Thực hiện một truy vấn FQL Với các truy vấn phức tạp, kết quả củamột truy vấn ở bên trong truy vấn khác, để tránh lặp lại việc gọi hàm API nhiều lần, cóthể sử dụng phương thức fql.multiquery()

- Tham số: query

- Ví dụ:

$query = "SELECT name FROM user WHERE uid IN

(SELECT uid2 FROM friend WHEREuid1=211031)";

$result = $facebook->api_client->fql_query($query);

Trang 32

$query2 = "SELECT pid, subject FROM photo_tag

WHERE pid IN ($pids)";

Trang 33

- Mô tả: Trả về danh sách thành viên của một nhóm Kết quả trả về là một mảng

đa chiều với chiều đầu tiên là kiểu thành viên (admin, member, officer, not_replied)

+ Photos.addTag()

- Mô tả: Thêm một thẻđi kèm thông tin cho một bức ảnh Thẻ chỉ có thể thêmvào những bức ảnh đang chờ giải quyết thuộc sở hữu của người dùng cụ thể hoặcngười dùng hiện hành Ứng dụng với quyền mở rộng photo_upload có thể thêm thẻvào bất kì bức ảnh nào thuộc quyền sở hữu của người dùng

- Tham số: pid, tag_uid,tag_text, x, y

- Ví dụ:

$result = $facebook->api_client->photos_addTag(

$pid,$uid,null,50,50,null,null);

Trang 34

+ Photos.createAlbum()

- Mô tả: Tạo và trả về một album mới thuộc quyền sở hữu của một người dùng

cụ thể hoặc người dùng hiện hành

- Tham số: subj_id, aid, pids

- Ví dụ:

$photos=$facebook->api_client->photos_get(

null,$pid,null);

+ Photos.getAlbum()

- Mô tả: Trả về siêu dữ liệu về tất cả các album ảnh được tải lên bởi người dùng

cụ thể Phương thức này trả về thông tin của tất cả các album dựa theo tiêu chí lọc Nó

có thểđược sử dụng để trả lại tất cả các album ảnh được tạo ra bởi người dùng, truyvấn một danh sách các album thông qua aids hoặc lọc theo cả 2 tiêu chí trên

- Tham số: uid, aids

Trang 35

- Mô tả: Trả về thông tin của người dùng cụ thể

- Tham số: uids, fields

Trang 36

3.2.3 Data Store API

Data store API chủ yếu thiết kế để giúp các nhà phát triển ứng dụng nhanhchóng tìm ra một giải pháp lưu trữ mở rộng, có thể theo kịp với sự tăng nhanh của cơ

sở dữ liệu của họ API này cung cấp các phương thức cơ bản như tạo, đọc, xóa , cậpnhật

Data Store API bao gồm 3 nhóm cơ bản: Specialized Tables,Distributed Tables, Associations được phân chia vào 5 API riêng biệt(User Preference, Object Data Definition, Object DataAccess, Association Data Definition, and Association DataAccess)

Association: Theo phương pháp tiếp cập cơ sở dữ liệu truyền thống, sử dụng

chỉ sốđể tăng tốc độ truy vấn Tuy nhiên phương pháp này lại không hiệu quả trongmột hệ thống phân phối vì không có thư mục tập trung để đánh chỉ mục Facebook đãgiải quyết vấn đề này với Association Association có 2 trường và có thể là một chiềuhoặc hai chiều

- Một chiều: cho phép ứng dụng liên kết một thông điệp tới người dùng

- Hai chiều: Cho phép ứng dụng liên kết những người nhận thông điệp

Specialized Tables: Một trong những điểm thuận lợi của việc sử dụng Data

Store API là bảng chuyên dụng, được thiết kế và tối ưu hóa để lưu các loại dữ liệu choứng dụng và hiện nay mới chỉ có User Preference được triển khai

3.2.4 Thư viện khách

Thư viện khách cung cấp một đối tượng API khách của Facebook, một đốitượng ủy quyền để chuyển lời gọi phương thức thành các yêu cầu đến các máy chủ củaFacebook Nó hỗ trợ các ngôn ngữ lập trình như: ActionScript, ASP.Net,ASP(VBScript), ColdFusion, C++, C#, D, Emacs Lisp, Lisp, Perl, PHP(4 và 5),Python, Ruby, VB.Net và Windows mobile

Thư viện khách PHP của Facebook bao gồm 2 đối tượng chính: Facebook(Facebook.php) và FacebookRestClient ( facebook_api_php5_restlib.php ) LớpFacebookRestClient tóm tắt những tương tác với API của Facebook Lớp Facebook sửdụng các phương thức của lớp FacebookRestClient để tách ra các tương tác phổ biếnvới Facebook Platform

3.2.5 Ngôn ngữ đánh dấu Facebook - FBML

FBML là ngôn ngữ đánh dấu do Facebook phát triển, là phần mở rộng củaHTML, được sử dụng để hiện thị các trang bên trong trang vải nền Facebook Hầu hếtcác thẻ FBML giống hệt với các thẻ HTML và dẫn đến nội dung trình duyệt giốngnhau khi phân tích cú pháp, nhưng FBML cũng cung cấp nhiều thẻ hành vi và các thẻtrích ra thông tin từ các cơ sở dữ liệu Facebook và đưa nó vào trong nội dung của ứng

Ngày đăng: 28/12/2021, 10:12

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
3. Hasin Hayder and Dr.Mark Alexander Bain (5-2008), Learning Facebook Application Development, Publisher: Packt Sách, tạp chí
Tiêu đề: Learning FacebookApplication Development
4. Jay Goldman (10-2008), Facebook Cookbook, Publisher: O’Reilly Media Sách, tạp chí
Tiêu đề: Facebook Cookbook
5. Jesse Stay (7-2008), FBML Essentials, Publisher: O’Reilly Media Sách, tạp chí
Tiêu đề: FBML Essentials
6. Wayne Graham (2008), Facebook API Developers Guide, Publisher: Apress Sách, tạp chí
Tiêu đề: Facebook API Developers Guide
Tác giả: Wayne Graham
Năm: 2008
7. Simon St. Laurent Joe Johnston Edd Dumbill (7-2001), Programming Web Services with XML-RPC, Publisher: O'Reilly Sách, tạp chí
Tiêu đề: Programming WebServices with XML-RPC

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Sơ đồ mạng xã hội - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 1.1 Sơ đồ mạng xã hội (Trang 9)
Hình 1.2: Các mạng xã hội. - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 1.2 Các mạng xã hội (Trang 12)
Hình 1.4: Mô hình web Facebook - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 1.4 Mô hình web Facebook (Trang 14)
Hình 1.5: Mô hình web Facebook sử dụng cache - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 1.5 Mô hình web Facebook sử dụng cache (Trang 15)
Hình 1.6: Cách thức làm việc của Facebook - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 1.6 Cách thức làm việc của Facebook (Trang 15)
Hình 2.1: Mô hình quá trình xác thực người dùng - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 2.1 Mô hình quá trình xác thực người dùng (Trang 20)
Hình 2.2: Hệ thống xác thực người dùng của Gmail và Yahoo - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 2.2 Hệ thống xác thực người dùng của Gmail và Yahoo (Trang 21)
Hình 3.1: Cách thức làm việc của Facebook API - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.1 Cách thức làm việc của Facebook API (Trang 29)
Hình 3.2: Dòng chảy thông tin từ máy chủ ứng dụng đến trình duyệt của người dùng - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.2 Dòng chảy thông tin từ máy chủ ứng dụng đến trình duyệt của người dùng (Trang 37)
Hình 3.3: Sơ đồ hoạt động của OAuth.F.B. - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.3 Sơ đồ hoạt động của OAuth.F.B (Trang 56)
3.3.4. Sơ đồ hoạt động của ứng dụng OAuth.F.B. - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
3.3.4. Sơ đồ hoạt động của ứng dụng OAuth.F.B (Trang 56)
Hình 3.5: Sơ đồ xác nhận đăng ký sử dụng OAuth.F.B. - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.5 Sơ đồ xác nhận đăng ký sử dụng OAuth.F.B (Trang 57)
Hình 3.6: Sơ đồ chi tiết hoạt động của OAuth.F.B. - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.6 Sơ đồ chi tiết hoạt động của OAuth.F.B (Trang 57)
Hình 3.9: Cập nhật điện thoại để đăng ký sử dụng dịch vụ thành công - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.9 Cập nhật điện thoại để đăng ký sử dụng dịch vụ thành công (Trang 67)
Hình 3.8: Trang yêu cầu đăng ký sử dụng dịch vụ OAuth. Facebook - ĐỀ TÀIPHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK TRÊNCƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Hình 3.8 Trang yêu cầu đăng ký sử dụng dịch vụ OAuth. Facebook (Trang 67)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w