2013-05-24 6 views
18

Đi qua các thông số OAuth2.0 mới (rfc 6749), tôi thấy rằng luồng công việc giao thức Grant ngầm định sử dụng Url Hash Fragments để trao đổi 'access_token' giữa máy chủ Ủy quyền và máy khách công cộng.Luồng tài trợ ngầm OAuth2.0. Tại sao sử dụng các đoạn băm url?

Xem Specs: http://tools.ietf.org/html/rfc6749#section-4.2

có thể không phải là phản ứng cấp phép được gửi đi như 'Query Params' thay vì đoạn Url, giữ các bộ phận khác của dòng chảy vì nó là?

Về cơ bản tôi không thể hiểu được giới hạn đã làm cho các tác giả cụ thể của OAuth2 đã chọn các đoạn băm url cho ủy quyền dòng cấp phép ngầm?

Trả lời

17

Luồng tài trợ ngầm định được thực hiện cho ứng dụng khách viết mã java và tôi nghĩ rằng họ đang sử dụng '#' thay vì '?' để không gửi mã thông báo truy cập tới phía máy chủ của URL chuyển hướng của bạn nhưng vẫn tiếp cận được javascript là khách hàng trong trường hợp của chúng tôi vì lý do bảo mật "không chia sẻ mã thông báo truy cập của bạn qua mạng có thể không an toàn như được sử dụng cho URL chuyển hướng"

+1

Cảm ơn Bobo! Đồng ý với bạn giải thích. Đọc thông số kỹ thuật nó không bao giờ xảy ra với tôi rằng chuyển hướng đến chuyển hướng không liên quan đến TLS, mà làm cho thẻ dễ bị 'người đàn ông trong cuộc tấn công trung' – aknon

+1

Nhưng điều này mang lại một câu hỏi liên quan đến dòng cấp phép mã ủy quyền. Luồng này, yêu cầu các máy chủ Auth phát hành một 'mã' khi xác thực thành công và chuyển hướng các tác nhân người dùng tới redirect_url cùng với mã. Vì chuyển hướng này không liên quan đến TLS, điều đó không có nghĩa là tính bảo mật của mã 'ủy quyền' bị xâm phạm? – aknon

+1

mã được sử dụng chỉ một lần để tạo mã thông báo và nó được yêu cầu ID khách hàng và mật khẩu khách hàng để nó được bảo mật vì mật khẩu khách hàng không được chia sẻ chỉ là hệ thống khách hàng biết điều đó. –

2

Thêm 2 xu của tôi ..

Phân đoạn URI được sử dụng thay cho tham số truy vấn, từ quan điểm bảo mật. Phân đoạn URI sẽ không bao giờ được gửi qua mạng tới url chuyển hướng. Ví dụ: sau khi đăng nhập trên máy chủ ủy quyền Oauth, tiêu đề vị trí sẽ có "url chuyển hướng ur" # access_token = uraccesstoken và mã phản hồi sẽ là 302. Khi trình duyệt thấy 302, nó sẽ tự động chuyển hướng đến giá trị tiêu đề vị trí (tác nhân người dùng làm nó tự động và javascript không thể ngăn chặn điều này (afaik)).

Vì phân đoạn URI của nó, chỉ url chuyển hướng được gửi qua mạng, đoạn uri không phải là.

Nếu đó là thông số truy vấn, thông số truy vấn cũng sẽ được gửi qua mạng. Ngay cả với TLS, thông số truy vấn sẽ hiển thị trong nhật ký proxy của bạn, làm cho mã thông báo truy cập của chúng tôi được biết đến với những người không mong muốn, khiến cho mã thông báo truy cập bị rò rỉ.