Tôi đang phát triển một hệ thống sử dụng tiết kiệm. Tôi muốn danh tính khách hàng được kiểm tra và hoạt động được ACLed. Có tiết kiệm cung cấp bất kỳ hỗ trợ cho những người?Làm cách nào để xử lý xác thực và ủy quyền với tiết kiệm?
Trả lời
Không trực tiếp. Cách duy nhất để thực hiện điều này là có phương thức xác thực tạo khóa (tạm thời) trên máy chủ, sau đó thay đổi tất cả các phương thức của bạn để đối số đầu tiên là khóa này và tất cả chúng đều tăng thêm lỗi không được xác thực. Ví dụ:
exception NotAuthorisedException {
1: string errorMessage,
}
exception AuthTimeoutException {
1: string errorMessage,
}
service MyAuthService {
string authenticate(1:string user, 2:string pass)
throws (1:NotAuthorisedException e),
string mymethod(1:string authstring, 2:string otherargs, ...)
throws (1:AuthTimeoutException e, ...),
}
Chúng tôi sử dụng phương pháp này và lưu khóa của chúng tôi vào một bản ghi nhớ bảo mật với thời gian chờ 30 phút để giữ mọi thứ "linh hoạt". Khách hàng nhận được AuthTimeoutException
dự kiến sẽ ủy quyền lại và thử lại và chúng tôi có một số quy tắc tường lửa để ngăn chặn các cuộc tấn công bạo lực.
Các tác vụ như tự động và quyền không được coi là một phần của Tiết kiệm, chủ yếu là vì những thứ này thường liên quan đến logic ứng dụng hơn khái niệm RPC/serialization chung. Điều duy nhất mà tiết kiệm hỗ trợ ra khỏi hộp ngay bây giờ là TSASLTransport
. Tôi không thể nói nhiều về bản thân mình, đơn giản là vì tôi không bao giờ cảm thấy cần phải sử dụng nó.
Tùy chọn khác có thể là sử dụng THeaderTransport
mà không may tại thời điểm viết chỉ được triển khai với C++. Do đó, nếu bạn có kế hoạch sử dụng nó với một số ngôn ngữ khác, bạn có thể phải đầu tư một số công việc bổ sung. Không cần phải nói rằng chúng tôi chấp nhận những đóng góp ...
Một chút trễ (tôi đoán rất muộn) nhưng tôi đã sửa đổi mã nguồn tiết kiệm cho điều này một vài năm trước đây.
Chỉ cần gửi một vé có Bản vá đến https://issues.apache.org/jira/browse/THRIFT-4221 chỉ với điều này.
Hãy xem xét điều đó. Về cơ bản đề xuất là thêm một móc "BeforeAction" thực hiện chính xác điều đó.
Ví dụ Golang tạo diff
+ // Called before any other action is called
+ BeforeAction(serviceName string, actionName string, args map[string]interface{}) (err error)
+ // Called if an action returned an error
+ ProcessError(err error) error
}
type MyServiceClient struct {
@@ -391,7 +395,12 @@ func (p *myServiceProcessorMyMethod) Process(seqId int32, iprot, oprot thrift.TP
result := MyServiceMyMethodResult{}
var retval string
var err2 error
- if retval, err2 = p.handler.MyMethod(args.AuthString, args.OtherArgs_); err2 != nil {
+ err2 = p.handler.BeforeAction("MyService", "MyMethod", map[string]interface{}{"AuthString": args.AuthString, "OtherArgs_": args.OtherArgs_})
+ if err2 == nil {
+ retval, err2 = p.handler.MyMethod(args.AuthString, args.OtherArgs_)
+ }
+ if err2 != nil {
+ err2 = p.handler.ProcessError(err2)
- 1. Tôi nên xử lý Ủy quyền/Xác thực trong ứng dụng Asp.net MVC bằng cách nào?
- 2. Xác thực và ủy quyền JSF
- 3. Làm cách nào để xử lý xác thực bằng HttpWebRequest.AllowAutoRedirect?
- 4. Làm cách nào để xử lý sự kiện được ủy quyền cho các thành phần con?
- 5. Các chiến lược để xử lý xác thực người dùng trên nhiều nền tảng và ủy quyền
- 6. Cách dễ dàng để xác thực và ủy quyền với JAX-RS Jersey
- 7. Giải pháp xác thực và ủy quyền cho Padrino
- 8. Xác thực và ủy quyền cho API RESTfull (java jersery)
- 9. Xác thực và ủy quyền của người dùng WCF
- 10. Xác thực và ủy quyền biểu mẫu MVC 4
- 11. Bạn đang sử dụng lược đồ xác thực và ủy quyền nào - và tại sao?
- 12. RabbitMQ và ủy quyền
- 13. Làm cách nào để sử dụng tốt nhất thuộc tính [Ủy quyền] với Ajax và một phần Chế độ xem?
- 14. DateTimeOffset xử lý thời gian tiết kiệm ánh sáng ban ngày như thế nào?
- 15. Làm cách nào để xác thực và ủy quyền được triển khai bằng RavenDb trong ứng dụng MVC?
- 16. Xác thực, Ủy quyền, Quản lý người dùng và vai trò và Bảo mật chung trong .NET
- 17. Kiến trúc để xác thực/ủy quyền của người dùng di động và web
- 18. Ủy quyền chi tiết cho các ứng dụng web
- 19. Xác thực liên kết và xác thực được ủy quyền trong Salesforce
- 20. Ủy quyền với RolesAllowedDynamicFeature và Jersey
- 21. Câu hỏi về ASP.NET Web API - Ủy quyền/Xác thực
- 22. Tiết kiệm - phiên bản Trình xử lý khác nhau cho mỗi Ổ cắm
- 23. Nơi để xác minh ủy quyền cho một Lệnh?
- 24. Làm cách nào để thực hiện ủy quyền trong ASP.net MVC 4 hôm nay?
- 25. Cần một khung xác thực/ủy quyền python
- 26. Mocking Django Model và tiết kiệm()
- 27. Lớp logic kinh doanh có nên thực hiện ủy quyền và xác thực không?
- 28. Ủy quyền với SSL
- 29. cách ưa thích để thực hiện xác thực người dùng và ủy quyền trong Clojure là gì?
- 30. Tiết kiệm EF với F # và ASP.NET MVC
Bạn đang gửi mật khẩu trong văn bản rõ ràng hơn dây? – JensG
@ JensG Không, bạn muốn gửi mật khẩu theo định dạng được mã hóa và kiểm tra xem phía máy chủ chuỗi được mã hóa hay chưa. Bcrypt là tốt cho điều này, vì chuỗi được gửi qua dây có thể không khớp chính xác với chuỗi được lưu trữ, nhưng khi được kiểm tra bằng thuật toán bcrypt vẫn có thể xác thực. –
Nếu đây là trường hợp bạn sẽ không gửi mật khẩu văn bản rõ ràng nhưng nếu kẻ tấn công có thể đọc mật khẩu băm, anh ta có thể phát lại cuộc gọi xác thực và truy cập vào các dịch vụ của bạn. – cjungel