2012-10-07 47 views
5

Thông số 'bí mật' chính xác của hàm pyramid.authentication.AuthTktAuthenticationPolicy của Kim tự tháp là gì? Các documentation nói rằng đó là "(một chuỗi) được sử dụng cho auth_tkt cookie ký. Yêu cầu." Các tutorial nói rằng nó là "là một chuỗi đại diện cho một khóa mã hóa được sử dụng bởi các máy móc 'xác thực vé' đại diện bởi chính sách này".kim tự tháp AuthTktAuthenticationThông số bí mật của thông số

Xác thực cookie auth_tkt là gì? Máy 'xác thực vé' này là gì? Bí mật này có phải là thứ tôi lưu trữ dưới dạng băm trong cơ sở dữ liệu hay gì đó không? Tôi thực sự bối rối.

Trả lời

13

Cookie xác thực tkt là băm bảo mật của một số thông tin, bao gồm tên người dùng và tùy chọn dấu thời gian, nhưng không phải mật khẩu người dùng. Sau khi được xác thực, bạn cung cấp cookie như vậy cho người dùng và mỗi lần người dùng trả lại bạn chỉ cần trích xuất lại tên người dùng và biết đó là cùng một người dùng.

Để giữ an toàn cho anbom này, bạn cần có bí mật phía máy chủ. Chỉ một máy chủ sở hữu bí mật đó mới có thể tạo ra các cookie này; nếu kẻ tấn công từng nắm giữ nó, anh ta có thể tạo cookie xác thực cho người dùng tùy ý mà không cần phải biết mật khẩu của những người dùng này.

Thông số secret cho chính sách là bí mật phía máy chủ; nó giống như mật khẩu chính cho máy chủ của bạn. Nếu bạn chạy nhiều quá trình cho trang web của mình (và với WSGI, bạn thường làm), bạn cần phải làm cho nó nhất quán trong các quy trình của bạn, để đảm bảo mỗi quy trình có thể xác minh cookie. Bạn có thể chỉ định nó trong tệp cấu hình của bạn, trong mã nguồn của bạn, hoặc trong cơ sở dữ liệu của bạn; nó phụ thuộc vào mức độ linh hoạt mà bạn cần, các chính sách bảo mật của bạn và bạn có cần chia sẻ bí mật với các hệ thống khác hay không.

Bạn có thể chia sẻ bí mật với các hệ thống khác trong miền của bạn cũng cần phải xác thực người dùng của bạn, sử dụng cùng một tiêu chuẩn. Apache có mô-đun mod_auth_tkt ví dụ, Plone sử dụng cùng một tiêu chuẩn và bằng cách chia sẻ bí mật, bạn có thể cung cấp đăng nhập một lần cho người dùng của mình trên các ứng dụng web khác nhau.

Lưu ý rằng việc thay đổi bí mật có nghĩa là các phiên hiện tại trở nên không hợp lệ và người dùng sẽ phải xác thực lại.

Trong mọi trường hợp, cookie hiện tại có thể có tuổi thọ giới hạn; dấu thời gian nhúng giới hạn thời gian nó sẽ được chấp nhận là hợp lệ, nếu bạn định cấu hình thông số timeout về chính sách. Đó là chính sách tốt để đặt thời gian chờ, kết hợp với thời gian phát hành lại; bất kỳ người dùng nào truy cập lại ứng dụng của bạn trong thời gian chờ sẽ được cấp lại một cookie mới có dấu thời gian mới để giữ cho phiên của họ luôn mới. Theo cách đó, cookie phiên của bạn sẽ tự động hết hạn nếu người dùng của bạn không trả lại và cookie của họ không thể được sử dụng lại sau này. Tham số reissue cho phép bạn kiểm soát tốc độ mã thông báo mới được phát hành; truy cập lại máy chủ của bạn trong vòng reissue giây sẽ không tạo ra mã thông báo mới.

1

Thông số bí mật theo như tôi nhớ chỉ là một chuỗi được sử dụng làm muối để tạo cookie. Bạn có thể đặt bất cứ điều gì bạn muốn. Có nó trong tập tin cấu hình của bạn nên là quá đủ. Lưu nó trong cơ sở dữ liệu có thể là quá mức cần thiết nếu bạn muốn vô hiệu hóa bất kỳ thứ gì được tạo, tôi đoán việc thay đổi bí mật sẽ làm mất hiệu lực tất cả cookie và phiên tạo trước khi thay đổi đó.

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