2012-08-28 27 views
11

Tôi có một ứng dụng cung cấp API. Ứng dụng này là nhà cung cấp OAuth2.Mục đích của bí mật ứng dụng khách trong OAuth2 là gì?

Tôi muốn truy cập API này (đọc & ghi) bằng ứng dụng duy nhất phía máy khách. Tôi đang sử dụng JSO để làm việc này dễ dàng hơn.

Nó hoạt động tuyệt vời.

Điều này là, tôi không phải nhập bí mật ứng dụng khách của tôi (của ứng dụng tôi đã đăng ký trong ứng dụng của tôi) ở bất kỳ đâu. Và tôi hiểu tại sao, nó sẽ có sẵn cho bất cứ ai.

Vì vậy, nếu tôi có thể truy cập api của mình mà không có bí mật của khách hàng, bạn có thể giải thích cho tôi mục đích của nó không?

+0

Xem thêm [Điểm bí mật của khách hàng trong OAuth2 là gì nếu không cần sử dụng?] (Https://security.stackexchange.com/questions/76351/whats-the-point-of -e-client-secret-in-oauth2-if-it-doesnt-cần-được-được sử dụng) – user

Trả lời

6

Bí mật ứng dụng khách đã được sử dụng trong OAuth 1.0 để ký yêu cầu, vì vậy nó được yêu cầu. Một số máy chủ OAuth2 (chẳng hạn như API máy chủ web của Google) yêu cầu gửi mật khẩu khách hàng để nhận mã thông báo truy cập (từ mã thông báo yêu cầu hoặc mã thông báo làm mới).

OAuth 2.0 đã giảm vai trò của bí mật máy khách một cách đáng kể, nhưng nó vẫn được chuyển cho các máy chủ sử dụng nó.

+0

Ok, vì vậy không vượt qua nó cùng không phải là một mối quan tâm an ninh? – Robin

+0

Miễn là máy chủ OAuth mà bạn đang nói chuyện không cần đến, thì đừng lo lắng về điều đó. –

+0

Vấn đề là máy chủ OAuth là của tôi, vì vậy luôn có cơ hội tôi làm rối tung ^^. Nhưng kể từ khi tôi đang sử dụng doorkeeper, mà có vẻ là một viên ngọc tốt, tôi sẽ không lo lắng về nó. Tôi vẫn muốn hiểu rõ hơn một chút lý do tại sao nó không thực sự được sử dụng nữa nhưng vẫn có mặt ... – Robin

-3

Điều này cũng khiến tôi mất trí cho đến khi tôi thấy một ví dụ khiến câu trả lời trở nên rõ ràng.

Tôi phải đăng nhập vào Máy chủ trước khi Máy chủ trả lại mã thông báo cấp quyền truy cập vào Nội dung của tôi.

Nói cách khác, Máy chủ sẽ hiển thị cho tôi, con người, với màn hình đăng nhập nếu tôi chưa có phiên đăng nhập hợp lệ với Máy chủ. Đây là lý do tại sao giải thích luôn luôn nói một cái gì đó như "nó lên đến máy chủ để xác thực".

Chắc chắn, Máy chủ không phải yêu cầu tôi đăng nhập. Điều này có thực tế không? Dropbox có thực sự cấp quyền truy cập vào tệp của tôi cho bất kỳ ai không có thông tin đăng nhập không? Tất nhiên là không. Hầu hết những lời giải thích tôi đã đọc về vấn đề này như thể nó không quan trọng, khi nó thực sự là thứ duy nhất quan trọng.

+2

Tôi nghĩ bạn đang bối rối với client_secret và một mã auth. Sau này được trả lại sau khi người dùng cấp quyền (tuy nhiên điều đó được thực hiện). Sau đó nó được sử dụng để yêu cầu một access_token. – AaronHS

8

This discussion cung cấp giải thích tuyệt vời về lý do khiến bí mật của khách hàng quan trọng hơn nhiều đối với ứng dụng phía máy chủ so với ứng dụng phía máy khách. Đoạn trích:

Ứng dụng web [ứng dụng phía máy chủ] sử dụng bí mật của khách hàng vì chúng đại diện cho vectơ tấn công khổng lồ. Hãy để chúng tôi nói rằng ai đó độc một mục DNS và thiết lập một ứng dụng giả mạo "giống nhau", juxtapose có thể không được nhận thấy trong nhiều tháng, với trung gian này hút lên tấn dữ liệu. Bí mật của khách hàng được cho là giảm thiểu vectơ tấn công này. Đối với khách hàng người dùng đơn lẻ, sự thỏa hiệp phải đến một thiết bị tại một thời điểm, điều đó là không hiệu quả khủng khiếp khi so sánh.

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