Chủ đề thú vị được nhiều người quan tâm và bình luận quá 😁
OAuth là 1 khái niệm mới, được hình thành bởi mấy kỹ sư giỏi của Google, Yahoo, FB, ... cách đây mấy năm thôi, hiện giờ đang là version 2.0 Draft, những mạng xã hội lớn đều đang dùng cái này. Ở VN theo mình biết có Zing me, MXH gì đó của FPT và 1 dự án bên mình đang phát triển, chưa Lauch nên mình ko nói tên đc :p
Đọc comment các bạn có thể thấy điều các bạn quan tâm chủ yếu là OAuth có an toàn hay không và OAuth khác OpenID là gì.
Mình xin trả lời dựa trên hiểu biết của mình mà ko có 1 cái quick reference nào cả ;)
Nhưng trước khi hỏi hay trả lời 2 câu này bạn phải hiểu OAuth là gì và OpenID là gì. Nói nôm na thế này cho nhanh, OpenID là hệ thống Single Signon, tức là chỉ cần đăng nhập 1 nơi dùng mọi nơi. Còn OAuth là hệ thống Central Profile, tức là người dùng có 1 "kho tài nguyên", đăng nhập 1 lần với tư cách người dùng và được quyền sử dụng tài nguyên của người dùng ấy.
OpenID là công nghệ ra đời cách đây khá lâu, và chỉ giúp xác thực người dùng chứ không cung cấp khả năng sử dụng tài nguyên của người dùng.
Nói nôm na là vậy, còn đi vào chi tiết kỹ thuật thì khá phức tạp và chuẩn OAuth2.0 hiện nay có rất nhiều ưu việt so với OpenID.
Rồi, vậy OAuth có an toàn hay không?
- CÓ: vì quá trình xác thực này gồm mấy bước bắt tay Client-Server, kiểm tra token, nếu kết hợp SSL thì không thể sniff, giả mạo được. Bạn nào muốn hiểu rõ hơn thì cần nghiên cứu thêm, nhưng mình không khuyến khích nhé :D
- KHÔNG: vì bạn đã trao quyền sử dụng 1 số tài nguyên của mình cho ứng dụng, ví dụ 1 app trên FB xin bạn cấp quyền tự post lên tường, lấy contact của bạn,... app ngon thì không sao, gặp app cùi, làm chuyện bậy bạ dưới tên bạn thì bạn đừng buồn nghe :rolleyes:
Thanks các bạn đã chia sẻ.
TDNC: Mình làm IT và chuyên về R&D, muốn viết bài cho tinhte thì phải làm sao?
Việc đăng nhập trên website hay app nào đó bằng tài khoản facebook hay twitter đúng là sử dụng cơ chế authorize bằng OAuth(2), tuy nhiên nó không hề đảm bảo thông tin cá nhân của bạn sẽ được an toàn, vì sao?
Đa số các website và app, hay ít nhất với những trang mình từng phát triển, sau khi được người dùng cấp quyền lấy thông tin cá nhân từ facebook hay twitter, app sẽ sao chép lại số thông tin đó & lưu xuống csdl, để sử dụng sau, như thế sẽ chắc chắn nhanh hơn việc khi nào cần lại chạy đến facebook hay twitter để hỏi lại
Thử tưởng tượng việc app muốn gởi email đến một vài, hoặc tất cả thành viên, cứ mỗi người như thế lại cầm chìa khoá đến facebook để tìm địa chỉ email, sẽ trở thành cơn ác mộng. Chắc chắn app sẽ sao chép lại email & thông tin cá nhân ngay từ lần đầu tiên, để khi cần lấy lên xài là xong
Ưu điểm lớn nhất của OAuth hay openID, có lẽ là ng dùng không cần phải mắc công khai báo thông tin để tạo tài khoản, không cần phải nhớ username/password khi đăng nhập, và cũng không cần phải gõ chúng vào khung đăng nhập
nghe các bro thảo luận mới thấy tác hại của việc đăng nhập bằng google hay face vào các trang web khác là rất dễ bị lộ thông tin cá nhân và bạn bè trên google và face
Hôm nay đọc được bài này mới hiểu vì sao vào các trang hay có mục đăng nhập qua face hay google ..(^_^)
cám ơn bác bro đã cung cấp cho em một thông tin hữu ích
em vẫn ưa chuộng việc đăng nhập mỗi website một acc và pass riêng vì vừa an toàn lại tăng cường trí nhớ giảm bớt bệnh lười (^_^)
Mình vẫn chịu khó sử dụng tài khoản riêng cho mỗi nơi. Và ít liên quan tới những trang mang thông tin chính thức của mình: email công việc, Yahoo hay Facebook.
Các tài khoản ở các site thì rất ít khi mình cho Ref tới các trang trên, trừ một số site tin tưởng như tinhte, voz và cũng chủ yếu là ở các bài viết cá nhân chứ không lưu trong Profile.
Tóm lại là mình vẫn cố gắng tự quản lý việc đăng nhập của mình. Chỉ đăng nhập những thứ quan trọng ở những site tin tưởng, còn các site khác thì dùng account vớ vẩn đăng ký theo một email cũng vớ vẩn. Đỡ phải kiểm tra việc lừa đảo qua Pop-up hay lấy thông tin hoặc lạm quyền với tài khoản của mình.
Như vậy giới hạn của quyền truy cập vào tài nguyên user trên fb như photos, profile,... Là do bên 3party và fb quy định và user ko có sự lựa chọn để quyết định 3party chỉ được lấy những gì mà user cho phép?
@JerryKist
Cái này là không thể, password được lưu ở site cung cấp authentication, và do đó để thay đổi code mà lấy đc username với pass thì phải có chiếm được quyền rất cao ở site kia (Google, FB, Yahoo chẳng hạn)
@Spirit Coder
Ý mình nói là lúc bạn nhập vào và submit kìa.
VD: Username và password trên FB của bạn là us3rnam3 / 12345. Khi bạn đang cố tình đăng nhập vào FB bằng OAuth trong khi OAuth đang bị hack thì lúc bạn nhập xong và bấm submit thì thằng hacker nó đã lợi dụng cái form của OAuth để lấy luôn username và password của bạn rồi. Giống như mấy site lừa đảo thôi. Dạng lừa đảo này mình gặp hoài 😃
Nói 1 cách dễ hình dung là vầy: "Tinhte cho phép đăng nhập bằng tài khoản FB sử dụng OAuth" thì thực chất là Tinhte đã quy định là người dùng có tài khoản FB thì có thể đăng nhập vào Tinhte, OAuth ở đây chỉ là phương thức mà thôi.
Trường hợp không an toàn nếu có là do tài khoản FB bị hack, chứ thằng OAuth nó chả có tội gì cả! 😁 (cái này hoàn toàn tránh được khi yêu cầu đăng nhập bằng tài khoản FB thì kiểm tra thật kỹ URL có phải của FB hay ko).
An toàn hay ko là do user là chủ yếu thôi.
- Nếu đăng nhập bằng OAuth thì mấy bác ko phải lo bị mất password bởi vị ứng dụng/web site ko hề tương tác trực tiếp với thông tin đăng nhập của bạn mà phải nhờ bên chủ sở hữu tài khoản của bạn. Ví dụ trên mấy app smartphone có chức năng đăng nhập = facebook, khi bạn dùng chức năng này thì nó sẽ bật app facebook lên, nhờ fb xử lý và chỉ lấy kết quả trả về.
- Lúc đăng nhập = OAuth thì mấy bác nên CHÚ Ý ứng dụng/web site muốn lấy những THÔNG TIN gì từ bạn. Nếu thấy có khả nghi chẳng hạn như 1 website như tinh tế chẳng hạn đòi quyền lấy danh sách friend, post lên wall.. trong khi rõ ràng nó chẳng cần phải có mấy quyền đó thì tốt nhất đừng đồng ý, kẻo nó làm bậy mà bạn ko ý kiến gì được đâu, tại cho phép rồi mà 😁
mình chưa biết nó an toàn thật sự hay không?
Nhưng ví dụ có 1 hacker nào đấy làm 1 trang web và fake cái dòng login by facebook id thì có phải mình đã dâng password và username facebook cho hắn không ??
Cá nhân mình, mỗi forum 1 password (khác nhau 1 ít ở đuôi á), dùng 1 email thứ cấp cho việc đăng ký. Forum nào bị hack thì thiệt hại cũng không đến nỗi.
Đúng là hay, nhưng nói chính xác ra là tiện. Chỉ tiện thôi chứ không hẳn tốt, như việc muốn làm 1 cái chìa khóa để mở tất cả từ xe, khóa cổng, khóa cửa cho đến... khóa két sắt. Dù cho bảo mật đến độ nào đến khi bị mất một thằng xem như là tạch hết. Mất pass FB, google là mọi chuyện trở nên ngoài tầm kiểm soát (đối với người có nhiều thứ quan trọng trên internet), còn người dùng bình thường đa số thích điều này và may mắn đến giờ cơ chế bảo mật này vẫn hoạt động tốt 😃
OpenID => Hiểu đơn giản là site bạn đang muốn login sẽ được site chứa ID của bạn xác thực thằng này đúng là nó.
Oauth => Open protocol secure Authenticate, ngoài việc xác thực nguời dùng đang muốn login, qua giao thức này site đích(consumer) có thể truy cập các thông tin và sử dụng chức năng của site chứa thông tin gốc(provider) của người dùng. Ví dụ với việc login qua facebook user thường được hỏi cho phép lấy thông tin email, họ tên(xác thực và lấy thông tin người dùng) ... post lên wall(sử dụng chức năng của facebook)... Site bạn muốn đăng nhập đóng vai trò là consumer, facebook là provider.
Câu hỏi được đặt ra là có an toàn hay không? Cái nào an toàn hơn?
Câu trả lời muôn đời là an toàn hay không do người dùng. Nếu bạn bất cẩn, không chịu nhìn ngó kĩ, việc fake login là hoàn toàn có thể.
Không thằng nào an toàn hơn thằng nào!
@rooney_di_spacy
Không phải login lại nếu bạn đang login provider, lúc này provider(facebook, google) sẽ hiển thị confirmation page để liệt kê các tài nguyên thông tin và tính năng mà consumer muốn sử dụng của bạn(nếu bạn chưa confirm cho consumer sử dụng trước đây, còn đã confirm 1 lần rồi thì sẽ qua luôn)!
@suatuoi
Vậy là việc cần lưu ý ở đây là khi mình đã out ở FB và login vào 1 site nào đó thì phải chú ý cái trang login có đúng là của FB không (https://facebook.com/...)
@rooney_di_spacy
Yep, true.
Việc không an toàn ở đây phụ thuộc nhiều vào thằng consumer có bị lợi dụng hay không.
Nếu tinh ý để ý sẽ thấy các provider sẽ không cho phép consumer include cái page login Oauth qua iframe hoặc trên chính site consumer mà bắt buộc phải mở 1 page/tab mới. Việc này có thể gây mất thẩm mĩ và hơi khó chịu cho người dùng nhưng nó lại là cái để người dùng chú ý vào page mới được mở ra và tránh việc consumer bị lợi dụng.