Mã thông báo truy cập OAuth2 không phải hết hạn (hoặc đúng hơn, nhưng có thể nhiều năm).
Mã thông báo truy cập có thể được sử dụng ONCE để thu được một số tài nguyên nhất định từ máy chủ tài nguyên, cụ thể là nó cho phép mua lại các tài nguyên đó được người dùng phê duyệt. Mặt khác, mã thông báo làm mới cho phép truy cập lặp lại. Vì vậy, người ta không thể loại bỏ mã thông báo làm mới mà không yêu cầu sự tương tác của người dùng giữa mọi truy cập.
Nói chung, đôi khi, mã thông báo đôi khi có thể bị các ứng dụng độc hại khác đánh cắp trên cùng một thiết bị hoặc bằng cách tấn công MITM trên điện thoại. SSL là MITM-có thể nếu điện thoại có thể được thực hiện để tin tưởng một giấy chứng nhận tinh ranh. Điều này đôi khi được yêu cầu bởi các công ty để truy cập vào mạng nội bộ (họ yêu cầu chấp nhận một chứng chỉ tự ký, cho phép họ MITM tất cả lưu lượng được mã hóa xảy ra trên mạng công ty.
Mã thông báo mang không kém hơn bất kỳ hình thức mã thông báo nào khác, như được minh chứng trong một loạt các giấy tờ (bao gồm một trong số các giấy tờ của tôi, mà tôi sẽ đăng liên kết đến khi tôi có thể khai thác nó.) Tuy nhiên, mã thông báo mang chỉ thích hợp trong trường hợp các giả định mà chúng tạo ra là hợp lệ, giả sử rằng mã thông báo có thể được giữ bí mật là một giả định chính về các mã thông báo của người mang nói chung. (mặc dù một số vẫn giữ) Xem NIST Level 3 tokens, trong đó xác định những gì các thẻ tấn công mang dấu phải đánh bại, như s pecified in OAuth Bearer Tokens. Trong các thẻ mang ngắn không được đánh cắp mã thông báo.
Mã thông báo của người gửi không thể bị thu hồi, điều đó là đúng. Tuy nhiên, do kiểu truy cập thông thường là sử dụng mã thông báo truy cập ngay lập tức sau khi mua, bạn nên sử dụng mã thông báo truy cập một cách nhanh chóng để ngăn chặn lạm dụng tiềm ẩn, ngay cả khi trường hợp lạm dụng không thể hiện lên. Thẻ càng dài càng có nhiều khả năng bị đánh cắp. Một mã thông báo làm mới thực sự nguy hiểm hơn nhiều khi bị đánh cắp, vì nó cung cấp quyền truy cập lặp lại trong một khung thời gian dài hơn, nếu bạn không thể bảo mật id ứng dụng khách. OAuth2 có thể cung cấp quyền truy cập vào tài nguyên nói chung và do đó, ví dụ: có thể được sử dụng để hiển thị API cho khách hàng trong một thời gian. Với một mã thông báo làm mới đáng kể thiệt hại nhiều hơn có thể được thực hiện, như trái ngược với một mã thông báo sử dụng duy nhất.
Xác thực ứng dụng khách thực tế có thể được đảm bảo an toàn hơn bằng nhiều cách, ví dụ, cho mỗi khách hàng tải xuống một khóa khác nhau. Điều này ngăn chặn các cuộc tấn công tổng quát mà kỹ thuật đảo ngược một mã thông báo trên một thiết bị phá vỡ bảo mật cho tất cả các trường hợp của máy khách. Các kỹ thuật tiềm năng khác bao gồm sử dụng OAuth để xác minh máy khách với máy chủ của bạn, sau đó thực hiện lần chạy thứ hai của giao thức OAuth với máy chủ ủy quyền mà bạn muốn truy cập. Điều này sau đó cho phép bạn có khách hàng cập nhật khóa của họ thường xuyên, và cho tất cả họ có các khóa khác nhau, trong khi không đặt gánh nặng quá mức vào các hệ thống được sử dụng bởi máy chủ ủy quyền thuộc sở hữu của Facebook hoặc Google chẳng hạn.
Khi sử dụng ứng dụng dành cho thiết bị di động, mã thông báo làm mới tồn tại lâu hơn an toàn hơn so với mã thông báo mang nhiều người dùng, ngay cả khi không thực hiện các bước để bảo mật ứng dụng khách. Điều này là do người dùng không thể hết hạn mã thông báo. Nếu mã thông báo làm mới không bị đánh cắp và người dùng chỉ muốn thu hồi quyền truy cập thì điều này có thể được thực hiện. Không thể thu hồi mã thông báo mang nhiều người dùng ngay cả khi người dùng chỉ muốn thu hồi quyền truy cập. Mã thông báo tham chiếu cơ sở dữ liệu đa sử dụng có thể được thu hồi rõ ràng, nhưng đây không phải là giao thức được thiết kế và do đó các phân tích bảo mật đã được thực hiện trên OAuth không nói bất cứ điều gì về bảo mật của hệ thống lai này.
Kết luận tôi khuyên bạn nên sử dụng mã thông báo làm mới và mã thông báo cơ sở dữ liệu vì đây là cách có nhiều khả năng bảo mật nhất. Nếu bạn có thể làm bất cứ điều gì để bảo vệ khách hàng đó là tiền thưởng, nhưng các tình huống bảo vệ chống lại này là tối thiểu. Nếu bạn muốn bảo đảm máy khách xem xét các mã thông báo mềm, một trình xác thực la google, vì đây là một triển khai vững chắc đã chịu đựng sự phân tích của một số người rất thông minh.
"Khi phát hành mã thông báo, Google có thể quyết định xem ứng dụng có được nhà phát triển ủy quyền yêu cầu mã thông báo trong tên của anh ấy hay không". Làm thế nào để họ làm điều đó? Hệ điều hành Android có đang ngồi giữa ứng dụng và mạng không, chứng minh rằng ứng dụng được ký đúng cách? – Thilo
Trên Android, bạn có thể sử dụng lớp ['AccountManager'] (https://developer.android.com/reference/android/accounts/AccountManager.html) để xử lý mã thông báo và ủy quyền, dịch vụ cho Google đã được tích hợp sẵn trong đó. Tôi không nghĩ rằng họ đã sử dụng kiểm tra chữ ký ứng dụng, mà là một cách tiếp cận thông tin khách hàng. Việc kiểm tra chữ ký được công bố trong một cuộc trò chuyện [Google I/O 2012 của Yaniv Inbar] (http://www.youtube.com/watch?v=dylFNrvZ_3U), phần thú vị là [10:41] (http://www.youtube.com/watch?v=dylFNrvZ_3U&hd=1&t=10m41s). –
Dự án được gọi là [Dịch vụ của Google Play] (https://developers.google.com/android/google-play-services/). –