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 "giấy thông thành" là username và password.
Phân biệt Authorization và Authentication
- Authentication: Thường liên quan đến việc bạn đã đăng nhập hệ thống hay chưa?
- Authorization: Bạn có quyền truy cập tài nguyên của hệ thống hay không?
Thông thường 2 hình thức này luôn được đi liền với nhau khi người dùng phải đăng nhập vào hệ thống rồi mới có thể sử dụng được tài nguyên, tuy nhiên vẫn có những ứng dụng không cần sử dụng tới Authentication mà vẫn cho pháp Anonymous truy cập tới tài nguyên của hệ thống.
Để minh họa quá trình Authentication tôi có flow như sau:
- Client: Ứng dụng (có thể là ứng dụng desktop hay ứng dụng website,..) muốn truy cập vào tài nguyên của server.
- Server: Ứng dụng khác (Google, twitter, yahoo hay facebook,..)
- User: Chính bạn, bạn muốn truy cập vào Client và thông tin của bạn sẽ được xác minh qua Server, sau đó server sẽ trả lời lại cho bạn thông tin của bạn có đúng không? Nếu đúng thì Client sẽ cho phép bạn vào hệ thống, còn không thì thôi.
Các bước thực hiện để bạn có thể lấy được token sau mỗi lần gửi request lên server và server sẽ trả lời lại thông tin đó. Tiếp theo Client sẽ xác minh thông tin này.
Thực hiện:
Step 1: Tạo API console key
- Đăng nhập với tài khoản gmail và truy cập vào địa chỉ:
https://code.google.com/apis/console/và thiết lập 1 project API, sau quá trình này bạn có được ClientID.
Step 2: Lây token
Vào link sau:
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.profile&redirect_uri=your_redirect_link&response_type=token&client_id=api_console_keyTrong đó:
- https://accounts.google.com/o/oauth2/auth? : Link để lấy token
- scope: Phạm vi truy cập tài khoản của người dùng khi họ sử dụng ứng dụng (có thể sử dụng nhiều scope bằng việc thêm ký tự '&').
- redirect_uri: Link dùng để chuyển hướng sau khi đăng nhập thành công.
- response_type: Cái bạn muốn lấy từ response, đầy là token dùng để truy cập vào dữ liệu người dùng thông qua Google API.
Step 3: Xác minh Access token.
Sau bước 2 bạn sẽ lấy được token của người dùng.
Sử dụng:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=Access-Tokenvà lấy kết quả. Nếu không có lỗi xảy ra thì bạn có thể sử dụng token này để lấy dữ liệu của user, một token được tạo ra sẽ có thời gian hết hiệu lực nhất định trong quá trình nó được tạo ra.
Dữ liệu mà phía server trả về là một chuỗi json và bạn phải xử lý nó để có được cái mình muốn.
Nó có dạng như sau:
{ "issued_to": "740440442118-a9q8m5tphus2106cul2pe1vrraj1ii1m.apps.googleusercontent.com", "audience": "740440442118-a9q8m5tphus2106cul2pe1vrraj1ii1m.apps.googleusercontent.com", "user_id": "104637691590647117854", "scope": "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me", "expires_in": 3553, "email": "hainho@gmail.com", "verified_email": true, "access_type": "online" }
Step 4: Sử dụng access token để sử dụng API của google.
No comments:
Post a Comment