You are on page 1of 9

ĐẠI HỌC BÁCH KHOA HÀ NỘI

Viện Công Nghệ Thông Tin và Truyền thông


----------

Báo Cáo Bài Tập Lớn


Môn học:Web Thế Hệ Mới

Đề tài: “Cơ chế hoạt động của Sign in With Google


trên app mobile “

Giảng viên hướng dẫn: TS.Phạm Huy Hoàng

Sinh Viên Thực Hiện: Nguyễn Đình Hưng 20151860


Nguyễn Xuân Thắng 20153535

Hà Nội ,Tháng 5/2019


MỤC LỤC

I.GIỚI THIỆU CHUNG ............................................................................................................................. 3


II.GIỚI THIỆU VỀ GOOGLE OAuth ..................................................................................................... 4
2.1.OAuth là gì?Vì sao phải dùng OAuth? ........................................................................................... 4
2.2.Các Khái Niệm cơ bản dùng trong OAuth ..................................................................................... 5
III.Cơ chế hoạt động của OAuth trên app mobile ................................................................................... 6
3.1.Cơ chế hoạt động ............................................................................................................................... 6
3.2.Sign in with Google trên app Hago.................................................................................................. 7
IV.Kết Luận ................................................................................................................................................. 9
I.GIỚI THIỆU CHUNG
Trong những năm gần đây, sự thông dụng của smartphone cũng làm ngành Lập
trình phát triển ứng dụng di động (Mobile Application Development) có những
bước tiến lớn. Ngày càng nhiều các ứng dụng mobile app được ra đời cùng với sự
tiện ích hơn, dễ sử dụng hơn (đăng nhập thuận tiện hơn, giao diện dễ dùng, tốc độ
nhanh hơn,…)
Trong nhiều trường hợp, khi đăng nhập web, đăng ký ứng dụng, tài khoản… ta
thường thấy có chức đăng nhập bằng tài khoản Google+ mà không cần tài khoản
của trang web/ứng dụng đó.
Với việc đăng nhập bằng Google+, … bạn sẽ không phải mất thời gian làm công
đoạn đăng ký phức tạp, nhập 1 đống input thông tin, rồi còn phải chờ email để
active tài khoản bla…bla như trước đây nữa. Để đăng nhập vào app chỉ cần chọn
mạng xã hội mà bạn muốn đăng nhập
 Google Sign-In là công nghệ cho phép user truy cập ứng dụng một cách
nhanh chóng và bảo mật. Nó còn tạo ra sự liền lạc giữa các tính năng –
user đăng nhập một lần và sẽ được chứng thực trên tất cả các app của
thiết bị. Nó cũng cho phép chúng ta tích hợp các dịch vụ của Google
vào website và mobile app, và đồng thời cho phép cài đặt ứng dụng
Android dưới dạng OTA (over-the-air) khi user chúng thực vào web-
site của chúng ta.
 Trong khuôn khổ bài viết này, chúng ta sẽ tìm hiểu cơ chế hoạt động
Google Sign-In với ứng dụng mobile

II.GIỚI THIỆU VỀ GOOGLE OAuth


2.1.OAuth là gì?Vì sao phải dùng OAuth?
OAuth là viết tắt của Open Authorization, theo trang web chính thức thì OAuth là: An
open protocol to allow secure authorization in a simple and standard method from web,
mobile and desktop applications.
Một giao thức mở nhằm cung cấp cách thức đơn giản và tiêu chuẩn cho các thao tác xác
thực an toàn trong các ứng dụng trên web, mobile & desktop.
Nói chung, nhờ có OAuth mà ta có thể (giả sử như) xây dựng 1 ứng dụng chat thời gian
thực, mỗi người dùng khi muốn gửi tin nhắn cho người khác thì cần phải đăng nhập. Khi
đó thay vì tự xây dựng 1 hệ thống đăng ký - đăng nhập dùng email & password, chúng ta
có thể cung cấp 1 tính năng đăng nhập với Facebook hoặc Google+ với các thao tác như
sau:
+Người dùng mở ứng dụng lần đầu tiên, 2 nút Đăng nhập với Facebook và Đăng nhập
với Google+ hiện lên.
Click vào 1 trong 2 nút, người dùng được chuyển đến trang web đăng nhập của
Facebook hoặc Google+.
Người dùng tiến hành đăng nhập như bình thường vào Facebook và Google+, sau khi
thành công và cho phép ứng dụng truy cập vào các thông tin liên quan, người dùng được
chuyển về ứng dụng.
Các thông tin của người dùng đã cài đặt trên Facebook và Google+ sẽ được lưu và dùng
làm thông tin đăng nhập cho người dùng trên ứng dụng của chúng ta.
OAuth là một token-based authorization framework (khung ủy quyền dựa trên token),
được thiết kế đặc biệt để hoạt động với HTTP. Bản thân nó không phải là API, service
hay package. OAuth thường được sử dụng bởi các công ty như Google, Facebook,
Twitter, Amazon, Microsoft, v.v. như một cách để cho phép người dùng của họ cấp cho
các trang web hoặc dịch vụ khác quyền truy cập vào thông tin của họ mà không cần cung
cấp mật khẩu.
OAuth cho phép các nhà phát triển bên thứ 3 chỉ định thông tin nào người dùng có thể
được yêu cầu chia sẻ để sử dụng dịch vụ và thông tin nào có thể là tùy chọn để chia sẻ.
2.2.Các Khái Niệm cơ bản dùng trong OAuth
Thông qua quá trình phát triển, OAuth đã ra mắt thế hệ thứ 2, gọi là OAuth2, là 1 phiên
bản nâng cấp hoàn thiện hơn của OAuth đời đầu tiên. Trong bài này chúng ta sẽ sử dụng
OAuth2 cho các ví dụ, đơn giản vì nó mới hơn, an toàn hơn và ưu việt hơn so với bản cũ.
Trước khi đi vào chi tiết cơ chế hoạt động, chúng ta cần hiểu rõ 1 số khái niệm cơ bản
được dùng với OAuth:
+ Resource: là các thông tin người dùng trên những dịch vụ cung cấp xác thực qua
OAuth (Facebook, Google+, Twitter,…). Phần lớn đây là các thông tin cá nhân như
email, tên, tuổi, địa chỉ, giới tính,…
+Resource owner: chính là người dùng sở hữu những resource trên.
+Resource server: là server của các dịch vụ cung cấp xác thực qua OAuth (Facebook,
Google+, Twitter,…).
+Client application: là ứng dụng của chúng ta muốn truy cập các resource trên resource
server.
+ Authorization server: là server dùng để nhận lại các thông tin đã xác thực của người
dùng, trong đó quan trọng nhất là access token
+Access token: là 1 chuỗi ký tự được mã hóa, có giá trị trong 1 thời hạn nhất định, dùng
để thay thế cho toàn bộ quá trình xác thực của người dùng. Giả sử người dùng đã xác
thực và authorization server nhận được access token hợp lệ, thì trong thời gian nhất định,
access token đó sẽ được dùng để truy cập lên resource server và lấy được các thông tin
mà người dùng đã cung cấp. Quá thời gian trên, client application cần phải xác thực lại
người dùng để lấy được access token mới.
+Scope: người dùng thường cung cấp nhiều thông tin (email, tên, tuổi, địa chỉ, giới
tính,…). Tùy từng mục đích khác nhau mà ứng dụng của chúng ta cần yêu cầu những
scope hợp lý, tránh tình trạng lạm dụng và lấy thừa thông tin, vì như vậy sẽ giảm độ tin
tưởng của người dùng.
+Strategy: là 1 tập hợp bao gồm tất cả các định nghĩa trên cho từng dịch vụ, ví dụ
Facebook strategy, Google+ strategy, Twitter strategy,…

III.Cơ chế hoạt động của OAuth trên app mobile


3.1.Cơ chế hoạt động
Dưới đây là sơ đồ user-flow của 1 luồng đăng nhập bằng OAuth:

Chúng ta có các pha sau đây:


1.Người dùng truy cập vào ứng dụng.
2.Người dùng chọn chức năng đăng nhập với Facebook, Google+, Twitter,…
3. Người dùng được chuyển tới trang đăng nhập của Facebook, Google+, Twitter,…
4. Người dùng nhập username / email & password trên trang đăng nhập, nếu không đúng
sẽ được báo lỗi, nếu đúng, một authentication code được trả về (lưu ý, khác với access
token, authentication code chỉ dùng để xác thực quá trình đăng nhập bằng OAuth, không
có chức năng thay thế như của access token).
5.Client App trích xuất authentication code từ thông tin trả về, kết hợp với client id, client
secret (những thông tin cố định & bí mật, có chức năng giống như 1 symmetric key để
mã hóa / giải mã các thông tin quan trọng trong quá trình đăng nhập).
6.Sau khi kết hợp, các thông tin này được gửi về resource server để xác thực có đúng là
client application đã đăng ký hay không (nhằm tránh các trường hợp tấn công & ăn cắp
dữ liệu người dùng).
7.Sau khi xác thực thành công, access token được trả về client application. Kể từ thời
điểm này đến khi hết hạn, access token có thể được dùng để xác thực và truy xuất dữ liệu
người dùng tại resource server.
8.Kết quả cuối cùng trả về: người dùng đã đăng nhập thành công.
Trong bài sau, chúng ta sẽ cùng tìm hiểu cách sử dụng OAuth trong app Hago để đăng
nhập với các dịch vụ phổ biến như Google+,
3.2.Sign in with Google trên app Hago
- Chọn app Hago để thử nghiệm trên điện thoại Android

+Hago là ứng dụng trên mobile,bản thân người lập trình ứng dụng Hago đã sử dụng
Oauth cho ứng dụng và đăng ký ứng dụng với bên cung cấp dịch vụ, một số thông tin cơ
bản cần đăng ký như sau:
• Tên ứng dụng (Application Name)
• Website của ứng dụng (Application Website)
• Redirect URI hoặc Callback URL: là địa chỉ sẽ quay về sau khi quá trình ủy quyền
hoàn tất (cho phép hoặc từ chối từ phía User) hay quay về trang chủ của app Ahamove
Khi ứng dụng đã được được đăng ký, bên dịch vụ sẽ phát hành "thông tin chứng thực
client" (client credentials) bao gồm thông tin:
• Client Identifier: là một chuỗi ký tự được sử dụng bởi Service API để định danh ứng
dụng, đồng thời cũng được dùng để xây dựng "authorization URL" hiển thị phía User. •
Client Secret: là một chuỗi ký tự được sử dụng để xác thực định danh (ID) của ứng dụng
khi ứng dụng yêu cầu truy cập thông tin tài khoản của User. Chuỗi này được giữ bí mật
giữa Application và API
+Cơ chế hoạt động :Khi truy cập vào ứng dụng,sẽ có mục sign in with,có thể đăng nhập
với Facebook,Google,Zalo…

Sau khi đăng nhập thành công, ứng dụng được ủy quyền truy cập bởi google
service và được cung cập access_token. Client gửi token này lên server để định
danh.
Sau khi đăng nhập với tài khoản google thành công ,người dùng bắt đầu được đăng
nhập vào ứng dụng và bắt đầu sử dụng các tính năng của ứng dụng
Vào phần thông tin người dùng bây giờ có thể thấy được là đã tồn tại tài khoản
Google đã liên kết. Vậy ứng dụng đã thực hiện đăng nhập thành công qua tài khoản
Google.

IV.Kết Luận
Việc tìm hiểu cơ chế hoạt động của Sign in with google trên app mobile giúp chúng em
hiểu them về những phương thức mới,cụ thể là Google OAuth .Cách thức xây dựng sign
in with google vào trong ứng dụng,và sự tiện ích của việc có cơ chế sign in with google
trong việc đăng nhập cho app mobile.