2013-10-04 18 views
31

Tôi hiểu sự khác biệt giữa xác thực Cơ bản và Digest của Passport.js, nhưng sự khác biệt giữa chiến lược địa phương và Cơ bản hoặc Thông báo là gì? Trong cả ba, bạn nhập tên người dùng và mật khẩu. Chiến lược cơ bản có phải là kiểu người dùng & xác thực mật khẩu không? Vui lòng làm rõ.Sự khác nhau giữa chiến lược Cơ bản và Digest cục bộ trong hộ chiếu

Trả lời

53

Nếu tôi hiểu chính xác, sự khác biệt giữa chiến lược Local, Basic và Digest trong Passport.js rất tinh tế nhưng quan trọng. Dưới đây là tóm tắt:

Local (passport-local)

chiến lược địa phương Hộ chiếu là một tên người dùng và mật khẩu cơ chế thẩm định đơn giản. Nó tìm thấy mật khẩu của người dùng đã cho từ tên người dùng (hoặc số nhận dạng khác) và kiểm tra xem chúng có khớp không. Sự khác biệt chính giữa chiến lược địa phương và hai chiến lược khác là việc sử dụng các phiên đăng nhập liên tục. Chiến lược này nên được sử dụng qua SSL/TLS.

Basic (passport-http)

Chiến lược cơ bản được thực hiện bởi Passport trông gần giống với chiến lược của địa phương, với một sự khác biệt tinh tế. Chiến lược cơ bản là được sử dụng với các điểm cuối API nơi kiến ​​trúc là không trạng thái. Do đó, phiên là không phải bắt buộc nhưng có thể được sử dụng. Chiến lược này cũng nên sử dụng SSL/TLS. Lá cờ phiên có thể được thiết lập như sau:

app.get('/private', passport.authenticate('basic', { session: false }), function(req, res) { 
    res.json(req.user); 
}); 

Digest (passport-http)

Chiến lược tiêu hóa là một cách tinh tế khác nhau hơn so với hai chiến lược khác ở chỗ nó sử dụng một mô hình thử thách phản ứng đặc biệt để tránh gửi mật khẩu trong văn bản rõ ràng. Chiến lược này sẽ là một giải pháp tốt khi SSL/TLS không khả dụng.

Đây là một bài viết tốt về cơ bản so với Digest: How to Authenticate APIs

Lưu ý: Cả ba chiến lược thực hiện hỗ trợ phiên bắt buộc. Hai chiến lược hộ chiếu-http phép bạn thiết lập cờ phiên trong khi hộ chiếu docs nói điều này, liên quan đến chiến lược hộ chiếu thuộc địa phương:

Lưu ý rằng việc kích hoạt hỗ trợ phiên là hoàn toàn tùy chọn, mặc dù nó được khuyến khích đối với hầu hết các ứng dụng.

+2

"Chiến lược cơ bản sẽ được sử dụng với các điểm cuối API nơi kiến ​​trúc là không trạng thái" - bạn có ý nghĩa gì bởi quốc tịch? Bạn có thể cho một số ví dụ?Nếu tôi hiểu đúng, chiến lược địa phương chỉ là về "Nếu bạn đã hỗ trợ phiên người dùng, ví dụ để lưu các biến tạm thời mỗi phiên, thì cookie đã xác định phiên và không cần phải gửi tên người dùng và mật khẩu mỗi lần ". – Oren

+3

Chiến lược cơ bản sử dụng tiêu đề 'xác thực' để xác thực xem https://github.com/jaredhanson/passport-http/blob/master/lib/passport-http/strategies/basic.js#L68 – Vadim

+0

@Vadim Thanks !! ! u tiết kiệm cuộc sống của tôi :) –

2

Nếu bạn sử dụng Hộ chiếu Chiến lược địa phương: - phiên được thiết lập, vì vậy bạn không phải gửi tín dụng cho mỗi yêu cầu; - tên người dùng và mật khẩu được cung cấp trong tiêu đề "tên người dùng" và "mật khẩu" theo mặc định;

Nếu bạn sử dụng chiến lược Passport Basic/Digest: - phiên không được sử dụng, vì vậy bạn phải cung cấp thông tin xác thực tại mọi cuộc gọi API; - tên người dùng và mật khẩu/băm được chứa trong tiêu đề "Ủy quyền";

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