Sử dụng tùy chỉnh tiêu đề ủy quyền trong API REST


9

Tôi đang xây dựng một api REST nơi khách hàng được xác thực bằng chứng chỉ ứng dụng khách. Một khách hàng trong trường hợp này không phải là một người dùng cá nhân, mà là một loại lớp trình bày. Người dùng được xác thực bằng cách sử dụng một cách tiếp cận tùy chỉnh và trách nhiệm của lớp trình bày để thấy rằng điều này được thực hiện đúng (lưu ý: Tôi biết đây không phải là cách tiếp cận phù hợp, nhưng api không công khai).

Tôi muốn chuyển tên người dùng cho mỗi yêu cầu (không phải mật khẩu), nhưng tôi không chắc chắn nơi để thực hiện việc này. Nó sẽ là một ý tưởng tốt để sử dụng tiêu đề ủy quyền?

Câu trả lời:


20

Sử dụng tiêu đề Ủy quyền có vẻ như là điều đúng đắn. Đó là toàn bộ mục đích của tiêu đề Ủy quyền.

Từ http://tools.ietf.org/html/rfc7235#section-4.2 :

Trường tiêu đề "Ủy quyền" cho phép tác nhân người dùng tự xác thực với máy chủ gốc - thông thường, nhưng không nhất thiết, sau khi nhận được phản hồi 401 (Không được phép). Giá trị của nó bao gồm các thông tin chứa thông tin xác thực của tác nhân người dùng cho lĩnh vực tài nguyên được yêu cầu.

Nếu bạn có tài liệu lược đồ xác thực của riêng mình, nhưng không cần phải phát minh lại bánh xe.


3
Nó không chỉ có vẻ như là điều đúng đắn, nó điều đúng đắn. (Tôi đã nghiên cứu điều này cả ngày) Phần 4.1 trong RFC 7235 thể hiện rõ việc sử dụng lược đồ tùy chỉnh "Newauth" trong "Ví dụ", cùng với lược đồ tiêu chuẩn "Cơ bản" cho phép khách hàng sử dụng lựa chọn của họ . Điều đó nói rằng, nếu bạn đang sử dụng một chương trình "tiêu chuẩn", bạn nên sử dụng nó một cách chính xác. Câu trả lời của Zach là đúng và Filip là không chính xác .
Stephen P

3

Tôi không khuyên bạn nên sử dụng tiêu đề HTTP tiêu chuẩn. Chủ yếu bởi vì nó có thể gây hiểu lầm cho các nhà phát triển khác biết Authoriziationtiêu đề được sử dụng như thế nào trong xác thực HTTP, nhưng cũng để tránh mọi vấn đề tiềm ẩn với các phần khác trong ngăn xếp của bạn có nhận thức mâu thuẫn về cùng tiêu đề yêu cầu.

Dù thế nào đi nữa, không có gì ngăn cản bạn sử dụng một tiêu X-Authorization-Userđề tùy chỉnh, không chuẩn , đặc biệt cho mục đích của bạn.


Đồng ý 100%. Nếu bạn muốn làm một cái gì đó tùy chỉnh, đó là những gì các X-tiêu đề tiền tố dành cho. Nếu bạn sẽ sử dụng một tiêu đề tiêu chuẩn, đừng sử dụng nó cho bất kỳ điều gì bất thường hoặc bất ngờ.
Carson63000

2
Chỉ cần nghĩ rằng tôi nên đề cập rằng "X-" đã không được dùng nữa: stackoverflow.com/questions/3561381/iêu
Matsen75

Theo câu trả lời này, điều đó có nghĩa là Amazon S3 đang làm sai? docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
Tom Lianza

4
-1. Như Zach Dennis đã đề cập, không giống như hầu hết các tiêu đề HTTP khác, tiêu đề Ủy quyền được thiết kế để được mở rộng và có một cách được chỉ định rõ ràng về cách xác định sơ đồ ủy quyền của riêng bạn. Trong một vỏ hạt, chỉ cần đảm bảo bạn sử dụng tên chương trình ủy quyền tùy chỉnh.
Lie Ryan
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.