2010-05-22 31 views
16

Tôi tự hỏi lý do là gì để OAuth 1.0 yêu cầu một chuyến đi khứ hồi tới nhà cung cấp dữ liệu để trao đổi mã thông báo yêu cầu được ủy quyền cho mã thông báo truy cập.Tại sao mã thông báo yêu cầu OAuth 1.0 được ủy quyền cần được trao đổi cho mã thông báo truy cập?

sự hiểu biết của tôi về 1,0 workflow OAuth là:

  1. Yêu cầu trang web (người tiêu dùng) được một mã thông báo yêu cầu từ các trang web cung cấp dữ liệu (nhà cung cấp dịch vụ).

  2. Trang yêu cầu yêu cầu trang web của nhà cung cấp dữ liệu xác thực người dùng, chuyển qua gọi lại.

  3. Khi người dùng đã được xác thực và ủy quyền trang web yêu cầu, người dùng được chuyển hướng trở lại trang web yêu cầu (người tiêu dùng) qua cuộc gọi được cung cấp để trả lại mã thông báo yêu cầu hiện tại và mã xác minh.

  4. Trang web yêu cầu trao đổi mã thông báo yêu cầu cho mã thông báo truy cập.

  5. Trang web yêu cầu sử dụng mã thông báo truy cập để nhận dữ liệu từ trang web của nhà cung cấp dữ liệu.

Giả sử tôi có quyền truy cập trực tiếp vào bước 3, loại bỏ bước 4? Tại sao yêu cầu trao đổi mã thông báo yêu cầu cho mã thông báo truy cập cần thiết? Liệu nó chỉ tồn tại cho người tiêu dùng yêu cầu người dùng nhập mã xác minh theo cách thủ công, với ý nghĩ rằng nó sẽ ngắn hơn và đơn giản hơn mã thông báo truy cập?

Trả lời

15

Joe,

Với OAuth 1.0, điều quan trọng cần lưu ý đó những mảnh vụn đang xảy ra "máy chủ đến máy chủ" và có phần liên quan đến trình duyệt ("user agent"). "Điểm" của OAuth, nếu bạn muốn, là nhận mã thông báo truy cập phía máy chủ và bí mật vào máy chủ back-end của người tiêu dùng mà không bao giờ có mật khẩu vượt qua trình duyệt.

Với ý nghĩ này: khi người dùng ủy quyền mã thông báo yêu cầu, "gọi lại" xảy ra thông qua tác nhân người dùng, thông qua chuyển hướng HTTP. Nói cách khác, bất kỳ dữ liệu nào (ví dụ: mã xác minh và mã thông báo yêu cầu nhưng KHÔNG phải mã thông báo yêu cầu SECRET) trong trình duyệt được "nhìn thấy" bởi trình duyệt. Đây là lý do tại sao mã thông báo truy cập (và bí mật) không thể là thông số của bước gọi lại: những thông tin này cần được truyền trực tiếp từ máy chủ đến máy chủ chứ không phải thông qua trình duyệt.

+3

Câu trả lời này cho một câu hỏi khác đi vào một số chi tiết về vấn đề này: http://stackoverflow.com/questions/3584718/why-is-oauth-designed-to-have-request-token-and-access-token/ 3663351 # 3663351 –

Các vấn đề liên quan