Luồng OAuth2 - máy chủ có xác nhận với máy chủ Auth không?


10

Tôi đã đọc rất nhiều trên OAuth2 khi cố gắng xoay quanh nó, nhưng tôi vẫn bối rối về điều gì đó.

Tôi hiểu rằng khách hàng ủy quyền với nhà cung cấp OAuth (ví dụ Google) và cho phép Máy chủ tài nguyên có quyền truy cập vào dữ liệu hồ sơ của người dùng. Sau đó, khách hàng có thể gửi mã thông báo truy cập đến máy chủ tài nguyên và được trả lại tài nguyên.

Nhưng những gì dường như không được đề cập trong bất kỳ tài liệu nào là những gì xảy ra khi ứng dụng khách yêu cầu máy chủ tài nguyên cung cấp tài nguyên và chuyển mã thông báo truy cập. Tất cả mọi thứ tôi đã đọc cho đến nay nói rằng máy chủ tài nguyên chỉ đáp ứng với tài nguyên được yêu cầu.

Nhưng đó có vẻ là một lỗ hổng lớn, chắc chắn máy chủ tài nguyên phải bằng cách nào đó xác thực mã thông báo truy cập, nếu không tôi có thể giả mạo bất kỳ yêu cầu cũ nào và chuyển mã thông báo cũ, bị đánh cắp, giả mạo hoặc được tạo ngẫu nhiên và nó sẽ chấp nhận nó.

Bất cứ ai có thể chỉ cho tôi một cách đơn giản để làm theo lời giải thích về OAuth2 bởi vì cho đến nay những người tôi đã đọc cảm thấy không đầy đủ.

Câu trả lời:


9

Tim thây no rôi. Chôn trong thông số kỹ thuật. Họ nói rằng máy chủ tài nguyên nên xác thực mã thông báo truy cập với máy chủ xác thực nhưng nó nằm ngoài phạm vi của tài liệu. Đáng tiếc, tôi đã nghĩ rằng xác thực mã thông báo là một phần quan trọng.


1
Về các phần quan trọng , có thể đáng để đọc bài đăng trên blog này cho một số nền tảng về các ưu tiên cho OAuth2.
Lars Viklund

1
Cảm ơn vì điều đó, một đọc thú vị. Yêu cầu của tôi khá đơn giản ở chỗ tôi muốn cho phép ứng dụng iOS xác thực với google, twitter, facebook, v.v., chuyển một số hình thức ủy quyền cho máy chủ của tôi và để máy chủ của tôi xác thực nó và cho phép truy cập vào tài nguyên. Vấn đề đã được chứng minh phức tạp hơn tôi dự đoán do sự phức tạp của việc hiểu cách thức hoạt động của nó và những gì tôi phải làm ở đâu.
drekka

Chính xác hơn, Phụ lục A: "Để xác thực chữ ký theo yêu cầu, tài nguyên được bảo vệ có thể gửi mã định danh mã thông báo đến điểm cuối nội quan của máy chủ ủy quyền để có được thông tin chính cần thiết cho mã thông báo đó. phạm vi của thông số kỹ thuật này và sẽ được xác định trong phần mở rộng [...] ".
JulienD

2

Xác thực mã thông báo thường được xử lý theo 1 trong 2 cách.

1) Mã thông báo được ký mã hóa bằng các khóa được chia sẻ trước. Điều này có sự xuất hiện ngắn rõ ràng để sử dụng trong các hệ thống phân tán, tăng sinh.

2) Máy chủ ủy quyền (AS) cung cấp điểm cuối để xác thực mã thông báo hoặc Introspection. Phương pháp này đã được chuẩn hóa trong IETF RFC 7662 vào tháng 10 năm 2015, xem: https://tools.ietf.org/html/rfc7662

Câu hỏi / Trả lời về Stack Stack này bao gồm các ví dụ từ Google và Github: /programming/12296017/how-to-validate-an-oauth-2-0-access-token-for-a-resource-server


0

bạn đọc thông số kỹ thuật để xác thực mã thông báo:

https://tools.ietf.org/html/rfc7662

hy vọng điều này có ích - vui lòng đánh dấu câu trả lời nếu nó trả lời câu hỏi / vấn đề của bạn


4
Chào mừng bạn đến với Kỹ thuật phần mềm. Ở dạng hiện tại, câu trả lời này không đáp ứng các nguyên tắc chất lượng của chúng tôi . Chúng tôi hy vọng rằng các câu trả lời nên tự đứng vững - độc giả chỉ nên theo các liên kết bên ngoài để hiểu sâu hơn hoặc xác nhận các nguồn và nội dung có liên quan nên được trích dẫn ở đây.
Thomas Owens
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.