OAuth 2.0 xác định tham số "trạng thái" được gửi theo yêu cầu của khách hàng để ngăn các cuộc tấn công yêu cầu qua nhiều trang web. Tương tự được đề cập trong thông số OpenID cho "nonce". Ngoài thực tế là "nonce" được trả lại trong mã thông báo ID thay vì tham số truy vấn, chúng xuất hiện để phục vụ cùng một mục đích chính xác. Nếu ai đó có thể giải thích lý do tại sao chúng riêng biệt làSự khác biệt giữa tham số "OAuth 2.0" trạng thái "và OpenID" nonce "? Tại sao nhà nước không thể tái sử dụng?
Trả lời
trạng thái và nonce có vẻ tương tự nhau. Nhưng nếu bạn đào sâu, bạn sẽ thấy rằng họ phục vụ các mục đích khác nhau.
trạng thái là để bảo vệ người dùng cuối khỏi các cuộc tấn công giả mạo yêu cầu chéo trang web (CSRF).
RFC6749 khẳng định rằng,
Sau khi ủy quyền đã được lấy từ người dùng cuối, việc ủy quyền máy chủ chuyển hướng user-agent của người dùng cuối lại cho khách hàng với giá trị ràng buộc cần chứa trong "trạng thái" thông số. Giá trị ràng buộc cho phép khách hàng để xác minh tính hợp lệ của yêu cầu bằng cách kết hợp các giá trị ràng buộc với nhà nước chứng thực user-agent của
Và điều này được sử dụng để yêu cầu cấp phép. Nó cho phép máy khách xác thực rằng phản hồi ủy quyền không bị thay đổi. Về cơ bản nó cho phép khách hàng vượt qua kiểm tra yêu cầu ủy quyền và phản hồi.
Nonce phục vụ một mục đích khác. Nó liên kết các thẻ với khách hàng. Nó hoạt động như một tham số xác thực mã thông báo.
nonce - Giá trị chuỗi được sử dụng để liên kết phiên khách hàng với mã thông báo ID và để giảm thiểu các cuộc tấn công phát lại. Giá trị được chuyển qua chưa được sửa đổi từ Yêu cầu xác thực thành Mã thông báo ID. Nếu có trong Mã thông báo ID, Khách hàng PHẢI xác minh rằng Giá trị xác nhận quyền sở hữu không bằng với giá trị của thông số nonce được gửi trong Yêu cầu xác thực. Nếu có trong Yêu cầu xác thực, Máy chủ ủy quyền PHẢI bao gồm một Yêu cầu không phải trong Mã thông báo ID với Giá trị xác nhận là giá trị không được gửi trong Yêu cầu xác thực. Máy chủ ủy quyền NÊN thực hiện không xử lý khác trên các giá trị nonce được sử dụng. Giá trị nonce là một chuỗi có phân biệt chữ hoa chữ thường
Như bạn có thể thấy, giá trị nonce bắt nguồn từ yêu cầu ủy quyền và nó được tạo bởi khách hàng. Và nếu nonce được bao gồm, nó sẽ xuất hiện trong token. Vì vậy, khách hàng có thể xác thực mã thông báo nhận được đối với yêu cầu ủy quyền ban đầu, do đó đảm bảo tính hợp lệ của mã thông báo.
Ngoài ra, tùy thuộc vào loại luồng, nonce có thể là tham số bắt buộc. Dòng chảy ngầm và luồng luồng lai bắt buộc nonce giá trị.
- 1. Kết nối OpenID nào thêm vào OAuth 2.0 (tại sao OAuth 2.0 không đủ để xác thực?)
- 2. Sự khác nhau giữa "nonce" và "GUID" là gì?
- 3. sự khác biệt giữa tình trạng truy cập mạng (ACCESS_NETWORK_STATE) và (ACCESS_WIFI_STATE) cho phép nhà nước WIFI là gì?
- 4. Góc 2.0 - Sự khác biệt giữa @ViewQuery và @Query
- 5. Tại sao WP8 LongListSelector không chính xác tái sử dụng Kiểm tra trạng thái CheckBox?
- 6. Sự khác biệt giữa mã trạng thái phản hồi http 402 và 403
- 7. Sự khác biệt giữa "tham số" và "localparam"
- 8. Sự khác biệt giữa [(ngModel)] và [ngModel] cho trạng thái liên kết với thuộc tính?
- 9. Để sử dụng hay không sử dụng Mẫu Nhà nước?
- 10. Sự khác nhau giữa cột 'trạng thái' và 'trạng thái' trong bảng sales_flat_order trong Magento
- 11. Mô-đun trạng thái phiên tùy chỉnh - Sử dụng dịch vụ nhà nước ASP
- 12. Sự khác biệt giữa Mealy và Moore
- 13. Sự khác biệt giữa PhantomJS 2.0 và PhantomJS 1.9
- 14. Trạng thái hoạt động Android Mất nhà nước
- 15. ASP.NET MVC 2.0 - Sự khác biệt giữa RenderPartial và RenderAction
- 16. Sự khác biệt giữa @available và #available trong swift 2.0
- 17. Sự khác biệt giữa id_token và access_token trong Auth0
- 18. Sự khác biệt giữa "sử dụng" và chuyển một tham số đến chức năng điều khiển
- 19. Xem khác biệt giữa trạng thái hiện tại và lần commit cuối cùng
- 20. sự khác biệt giữa HTTP 1.1 và HTTP 2.0
- 21. Sự khác biệt giữa việc sử dụng StringTokenizer và String.split()?
- 22. OpenID vs OAuth
- 23. Sự khác biệt giữa $ * và $ @
- 24. Tại sao nhận được sự khác biệt giữa việc sử dụng XCode và xcodebuild?
- 25. Keras: sự khác biệt giữa bỏ học LSTM và LSTM tái bỏ học
- 26. Sự khác biệt giữa Sproutcore và Ember
- 27. Trạng thái của JMX 2.0 là gì?
- 28. Sự khác biệt giữa việc sử dụng UINavigationController và UINavigationBar
- 29. OAuth 2 và thông số trạng thái giá trị của Google cần phải được đăng ký tại Url chuyển hướng
- 30. Sự khác biệt giữa viewbag và viewstate?
Điều gì sẽ là nhược điểm, nếu chúng ta vượt qua trạng thái của chính nó trong mã thông báo ID là nonce và cũng ở bên ngoài nó. Sử dụng một bên ngoài để ngăn chặn CSRF và bên trong một để Bind phiên trên phía khách hàng. – dvsakgec
@dvsakgec Từ quan điểm giao thức, vấn đề là sử dụng trạng thái và nonce cho bảo mật và xác nhận hợp lệ. Theo như tôi biết thông số kỹ thuật không hạn chế bạn sử dụng cùng một giá trị cho nhà nước và nonce. Trong một vector tấn công tinh vi, người ta có thể trích xuất giá trị trạng thái từ phản hồi ủy quyền (ví dụ: - ứng dụng di động).Vì vậy, việc có cùng giá trị sẽ loại bỏ một điều kiện khỏi quá trình xác thực mã thông báo của bạn, điều này không tốt –