2011-07-08 9 views
20

Tôi đang tìm hiểu OAuth và tôi có một câu hỏi trong đầu tôi không thể tìm thấy anwser ..tại sao không thể lấy cắp mã thông báo truy cập?

Tôi hiểu mã thông báo yêu cầu cho phép hoặc không phải là ứng dụng sử dụng API. Nhưng khi người dùng nhận được mã thông báo truy cập, điều gì sẽ xảy ra nếu ai đó ăn cắp mã thông báo truy cập của anh ấy?

Hãy tưởng tượng rằng chúng tôi có một cái gì đó giống như http://www.example.com/api/article/1?access_token= ****** ****** access_token

Nếu tôi cho url này để người dùng khác, người kia sẽ có quyền truy cập của tôi và do đó không phải là API được bảo vệ nữa?

+0

Bạn nên làm rõ liệu bạn đang đề cập đến OAuth 1 hay OAuth 2. Phiên bản 1 của giao thức sử dụng bí mật được chia sẻ, bí mật mã thông báo, không bao giờ được chuyển qua dây. Do đó ăn cắp một mã thông báo truy cập giống như ăn cắp một chìa khóa mà không có một chút quan trọng. Nó sẽ không phù hợp với bất kỳ khóa. – Matthias

+0

Tôi đã đọc về oAuth 2 và chỉ tự hỏi điều tương tự. Ước gì có một câu trả lời ở đây..sigh..the tìm kiếm vẫn tiếp tục. – Aishwar

Trả lời

7

Câu trả lời ngắn gọn: Có, đối với OAuth2 - bất kỳ ai có access_token hợp lệ đều có quyền truy cập vào các tài nguyên được chỉ định bởi mã thông báo đó. Trong bao lâu tùy thuộc vào OAuth2 việc triển khai nhà cung cấp.

Long trả lời, về cả OAuth1 và 2:

Khi nói đến OAuth 1một thẻ truy cập là không đủ. Bạn cũng sẽ cần bí mật mã thông báo truy cập và cả khóa người dùng cũng như bí mật. Vẫn giữ bí mật mã thông báo truy cập và giới hạn phạm vi và thời hạn hiệu lực nhưng bạn không thể sử dụng mã thông báo truy cập mà không có bí mật của khách hàng và mã thông báo. OAuth 1 không yêu cầu bạn sử dụng SSL, bởi vì mật mã được xây dựng ngay vào đặc điểm kỹ thuật.

OAuth 2 khác nhau - điều quan trọng hơn là mã thông báo truy cập được giữ bí mật. Do đó, nhà cung cấp API phải đảm bảo rằng mã thông báo truy cập, trong đó trong OAuth2 còn được gọi là mã thông báo Vòng bi, chỉ hợp lệ trong thời gian ngắn nhất có thể. Những thẻ này hoạt động như mật khẩu và nếu kẻ tấn công có thể sử dụng ngay lập tức. Do đó đặc tả OAuth2 (với mã thông báo mang) yêu cầu tất cả các giao tiếp diễn ra trên SSL - vì không có mật mã nào được tích hợp vào đặc tả. Thông thường mã thông báo truy cập có hiệu lực ngắn, có thể được làm mới bằng "mã thông báo làm mới" có giá trị lâu hơn nhưng chỉ được chuyển khi mã thông báo mang đầu tiên được người tiêu dùng nhận và khi mã thông báo của trình tạo được làm mới.

+1

Bản thân OAuth 2.0 không thực sự xác định bất kỳ loại mã thông báo truy cập nào. Điều này được thực hiện bởi các thông số kỹ thuật khác đối phó với xác thực mã thông báo. Hiện tại có hai đề xuất, một đề xuất cho mã thông báo mang phải được sử dụng trên TLS và hoạt động như mật khẩu và một cho mã thông báo MAC rất giống với OAuth 1.0 HMAC-SHA1. –

+0

Cảm ơn, tôi đã bao gồm những câu nói đó trong câu trả lời ở trên. –