Tất các các google API đều hỗ trợ OAuth. OAuth là một chuẩn cho phép sử dụng các dữ liệu tron gcacs ứng dụng web. Trong một số trường hợp, OAuth tương tự như đăng ký với chế độ bảo mật với tựy trọn trong AuthSub. Tất cả các ứng dụng yêu cầu phải làm OAuth tải lên một chứng chỉ bảo mật và đăng ký với google.
I. 3. Authentication cho các ứng dụng cài đặt trên các thiết bị (clientLogin):
ClientLogin cho phép người dùng đăng nhập vào tài khoản google của họ từ ứng dụng của bạn. Ứng dụng sẽ kết nối với Google với các thông tin đăng nhập và truy cập đến Goolge Data API. Khi các thông tin đăng nhập đã được chứng thực thành công. Google sẽ trả về một đoạn mã xác nhận, ứng dụng của bạn sẽ sử mỗi khi yêu cầu đăng nhập vào tài khoản của người dùng. Đoạn mã xác nhận có hiệu lực trong một thời gian dài, với các dịch vụ của goole bạn đang sử dụng.
Cơ chế Authentication trong ClientLogin
Sinh viên thực hiện: Trương Quốc Phú - Khóa:50 - Lớp:Hệ thống thông tin 65
Hình 5.8: cơ chế xác thực trong cliendLogin google
1. Khi ứng dụng(third - party) cần truy cập vào các dịch vụ google của người dùng nú lây thông tin đăng nhập của người dùng( tên đăng nhập và mật khẩu)
2. ứng dụng tạo ClientLogin và gọi tới Google’s Authorization service.
3. Nếu Google’s Authorization service cần thêm sự xác nhận thì sẽ về thêm một mã CAPTCHA.
4. Nếu có mã CAPTCHA trả về thì ứng dụng sẽ thông báo yêu cầu xác nhận mã CAPTCHA tới người dùng.
5. Người dùng xác nhận mã CAPTCHA tới ứng dụng.
6. Ứng dụng tạo mới ClientLogin và gửi thông đăng nhập lần này bao gồm cả câu trả lời CAPTCHA và thông tin đăng nhập
7. Khi quá trình đăng nhập thành công Google’s Authorization service trả về mã xác nhận cho ứng dụng
8. Ứng dụng kết nối với dịch vụ google và truy cập dữ liệu, kèm theo mã xác nhận mà Google’s Authorization service gửi trước đó.
9. Google service nhận đúng mã xác nhận sẽ cung cấp các dữ liệu yêu cầu.
Sử dụng ClientLogin trong ứng dụng
1. Tạo Giao diện cho người dùng đăng nhập: giao diện đăng nhập cần yêu cầu username và password. Giao diện đăng nhập cũng nên có khả năng hiển thị hình ảnh CAPTCHA bằng cách sử dụng URL nhận được từ Google, nếu có yêu cầu và mới xác nhận từ người sử dụng. Lý tưởng nhất, giao diện người dùng của bạn sẽ bao gồm một liên kết đến trang đang nhập Google
Accounts (https://www.google.com/accounts/login) trong
trường hợp người sử dụng cần đăng ký một tài khoản mới hoặc chỉnh sủa tài khoản khác.
Sinh viên thực hiện: Trương Quốc Phú - Khóa:50 - Lớp:Hệ thống thông tin 66
1. Viết Code để tạo phương thức HTTPS POST cho ClientLogin yêu cầu và truyền tải. Code này cần có logic để xử lý CAPTCHA và bao gồm các thông số logincaptchavà logintoken. Các ứng dụng cũng sẽ có thể phát hiện khi người dùng bỏ qua yêu cầu thông tin hoặc có lỗi khi nhập thông tin và đưa ra thông báo.
2. Xử lý các hồi đáp từ Google: có 4 câu trả lời có thể khi yêu cầu đăng nhập
- Thành công( HTTP 200)
- Thất bại (HTTP 403) kèm một thông báo lỗi. - Yêu cầu không hợp lệ.
- Thất bại khi xác nhận CAPTCHA.
Một hồi đáp thành công có kèm theo một mã thông báo ủy quyền có nhãn “Auth”. Mã thông báo này phải được sử dụng trong tất cả các yêu cầu tiếp theo với google service cho tài khoản này. Thẻ ủy quyền phải được bảo vệ chặt chẽ và không nên trao cho bất kỳ ứng ụng khác. Thời hạn các mã thôgn báo thay đổi phụ thuộc vào các dịch vụ.
Một hồi đáp không chỉ bao gồm một hoặc nhiều lỗi mã mà có thể một url với các thông báo lỗi được hiển thị cho người dùng. Lưu ý ClientLogin không phân biệt giữa việc thật bại do mật khẩu không chính xác hoạc do một tên đăng nhập không được công nhận.
3. Xử lý CAPTCHA từ google:
II.Google Calendar API
Google Calendar API cho phép các ứng dụng khách có thể xem, chỉnh sửa các Event trong calendar trên máy chủ google. Ứng dụng của bạn sử dụng Google calendar Data API để tạo mới các Event, chỉnh sửa hay xúa các sự kiện đã có và có thể truy vấn các sự kiện với các tiêu chí cụ thể của người dùng hay ứng dụng.
Hiện có nhiều công cụ sử dụng Calendar Data API. Vd: bạn có thể tạo font - end cho web cho Calendar của nhóm sử dụng Google Calendar như là phần back end. Hoặc bạn có thể tạo một lịch công cộng cho google Calendar để hiển thị các sự kiện. Hoặc bạn có thể tìm kiếm lịch biểu liên quan để Hiển thị một danh sách các sự kiện sắp tới trên các lịch biểu.
II.1. Chứng thực trong Google Calendar:
Để có quyền thực hiện các thao tác Insert, Update, Delete dữ liệu trên calendar thì Cần có yêu cầu chứng thực. Có 2 kiểu chứng thực AuthSub và ClientLogin (đã nói ở phần trên) phụ thuộc vào chương trình khách của bạn là web hay là ứng dụng.
Sinh viên thực hiện: Trương Quốc Phú - Khóa:50 - Lớp:Hệ thống thông tin 68
1. Viết Code để tạo phương thức HTTPS POST cho ClientLogin yêu cầu và truyền tải. Code này cần có logic để xử lý CAPTCHA và bao gồm các thông số logincaptchavà logintoken. Các ứng dụng cũng sẽ có thể phát hiện khi người dùng bỏ qua yêu cầu thông tin hoặc có lỗi khi nhập thông tin và đưa ra thông báo.
2. Xử lý các hồi đáp từ Google: có 4 câu trả lời có thể khi yêu cầu đăng nhập
- Thành công( HTTP 200)
- Thất bại (HTTP 403) kèm một thông báo lỗi. - Yêu cầu không hợp lệ.
- Thất bại khi xác nhận CAPTCHA.
Một hồi đáp thành công có kèm theo một mã thông báo ủy quyền có nhãn “Auth”. Mã thông báo này phải được sử dụng trong tất cả các yêu cầu tiếp theo với google service cho tài khoản này. Thẻ ủy quyền phải được bảo vệ
chặt chẽ và không nên trao cho bất kỳ ứng ụng khác. Thời hạn các mã thôgn báo thay đổi phụ thuộc vào các dịch vụ.
Một hồi đáp không chỉ bao gồm một hoặc nhiều lỗi mã mà có thể một url với các thông báo lỗi được hiển thị cho người dùng. Lưu ý ClientLogin không phân biệt giữa việc thật bại do mật khẩu không chính xác hoạc do một tên đăng nhập không được công nhận.
3. Xử lý CAPTCHA từ google:
II.Google Calendar API
Google Calendar API cho phép các ứng dụng khách có thể xem, chỉnh sửa các Event trong calendar trên máy chủ google. Ứng dụng của bạn sử dụng Google calendar Data API để tạo mới các Event, chỉnh sửa hay xúa các sự kiện đã có và có thể truy vấn các sự kiện với các tiêu chí cụ thể của người dùng hay ứng dụng.
Hiện có nhiều công cụ sử dụng Calendar Data API. Vd: bạn có thể tạo font - end cho web cho Calendar của nhóm sử dụng Google Calendar như là phần back end. Hoặc bạn có thể tạo một lịch công cộng cho google Calendar để hiển thị các sự kiện. Hoặc bạn có thể tìm kiếm lịch biểu liên quan để Hiển thị một danh sách các sự kiện sắp tới trên các lịch biểu.
II.1. Chứng thực trong Google Calendar:
Để có quyền thực hiện các thao tác Insert, Update, Delete dữ liệu trên calendar thì Cần có yêu cầu chứng thực. Có 2 kiểu chứng thực AuthSub và ClientLogin (đã nói ở phần trên) phụ thuộc vào chương trình khách của bạn là web hay là ứng dụng.
Chứng thực qua AuthSub proxy:
được sử dụng với các ứng dụng web cần xác thực người dùng cho các tài khoản Google. Để có một mã thông báo AuthSub cho một người sử dụng nhất, ứng dụng của bạn phải chuyển hướng người dùng tới URL AuthSubRequest để đăng nhập vào tài khoản Google Của họ. Các Url AuthSubRequest có dạng như sau:
https://www. google. com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww. google. com%2fcalendar%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fwww.
coolcalendarsite. com%2Fwelcome. html
Sau khi đăng nhập, hệ thông AuthSub chuyển hướng chúng đờn Url mà bạn chỉ định trong các tham số truy vấn tiếp theo của Url AuthSubRequest. Hệ thống AuthSub gắn thêm một đoạn mã xác thực.
http://www.coolcalendarsite.com/welcome.html?token=yourAuthToken
Dịch vụ AuthSubSessionToken sẽ trả lại bao gồm một tiêu đề mã xác thự có chứa session và hạn thời gian mã xác nhận đó hợp lệ. Ứng dụng phía máy chủ của bạn có thể
sử dụng mã xác thực để được ủy quyền truy cập tiếp tới Google Calendar. Dưới đây là một vidu về yêu cầu HTTP bạn sẽ gửi cho dịch vụ Google Calendar Feed.
GET / calendar/ feeds/ default/ private/ full HTTP/1. 1 Content-Type: application/ x-www-form-urlencoded
Authorization: AuthSub token="yourSessionToken"
User-Agent: Java/1. 5. 0_06 Host: www. google. com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=. 2 Connection: keep - alive
Chứng thực ClientLogin với username/ password:
Phương thức ClientLogin yêu cầu truy cập với username và password cho tài khoản Google. Để nhận được mã xác thực sử dụng cơ chế ClientLogin gửi một yêu cầu với phương thức POST tới URL sau:
https://www. google. com/accounts/ClientLogin
Các tham số truyền cho POST là: Email, Password, source(id của ứng dụng),
service( chuỗi c1 ứng với dịch vụ Google Calendar)
Nếu yêu cầu chứng thực không thành công, ứng dụng sẽ nhận được một mã trạng thái : HTTP 403 forbidden.
Nếu thành công, dịch vụ trả về một mã trạng thái HTTP 200 ok, Công với ba chữ số mã dài trong thông báo trả về: SID, LSID và Auth. Giá trị Auth là phép mã thông báo rằng bạn sẽ gửi vào Calendar với yêu cầu của bạn, để giữ một bản sao của giá trị đó. Bạn có thể bỏ qua các SID và LSID giá trị. Tất cả các yêu cầu truy cấp đều yêu cầu chứng thực, bạn phải đặt tiêu đề ủy quyên trong các yêu cầu .