2013-03-12 40 views
5

Tôi có một ứng dụng web vũ công là một phần trang web và một phần dịch vụ web; các tuyến đường nhất định trên đơn đăng ký của tôi nên có quyền xác thực trên các tuyến đó.Perl Dancer Auth Solution hỗ trợ khóa API?

Tất cả các giải pháp xác thực tôi đã tìm thấy cho ứng dụng web Dancer yêu cầu chuyển hướng đến trang đăng nhập; trong khi điều này là phù hợp để sử dụng tương tác, đây không phải là tối ưu cho một dịch vụ web an toàn.

Có giải pháp xác thực nào sẽ cho phép điều gì đó giống như khóa api không?

+1

Tôi không biết nhiều về khóa api nên tiếc là không thể giúp bạn ở đó. Cách tiếp cận xác thực được nêu trong Dancer :: Cookbook cung cấp dịch vụ web giống như REST đơn giản để xác thực và lưu trữ các chi tiết xác thực trong phiên vũ công. Tôi đã sử dụng thành công một chiến lược như thế này với ứng dụng khách/máy chủ dựa trên REST của tôi. Điều quan trọng cần lưu ý là khách hàng của bạn phải có khả năng giữ cookie phiên và cung cấp lại các tiêu đề này trong tiêu đề yêu cầu sau khi xác thực. Hãy cho tôi biết nếu bạn muốn biết thêm chi tiết. –

+0

Tôi nghĩ rằng việc sử dụng một phiên/cookie vi phạm các nguyên tắc của REST ... – Blaskovicz

+0

Tôi đoán nó phụ thuộc vào bạn thấy các nguyên tắc của REST. Một nguyên tắc là tạo ra các dịch vụ phi trạng thái và các phiên sử dụng có vi phạm điều này. Tuy nhiên, nếu bạn thấy nguyên tắc REST khi sử dụng thực tế các công nghệ internet đã được thiết lập thì các phiên và cookie sẽ có ý nghĩa hơn. Một cách tiếp cận tương tự được tôi đề xuất bởi một đồng nghiệp là chuyển băm tên người dùng và mật khẩu vào tiêu đề yêu cầu. Sau đó, bạn có thể xử lý thông tin tiêu đề đó trong trình kích hoạt trước bằng Dancer. Đây là phương pháp không trạng thái không phụ thuộc vào cookie - nhưng có thể làm phức tạp việc thử nghiệm các dịch vụ được xác thực. –

Trả lời

2

Bạn nên xem Dancer::Plugin::Auth::Extensible để tạo điều này. Cách đơn giản nhất để gửi thông tin đăng nhập trong mỗi yêu cầu. Trên máy khách, bạn muốn được gọi dịch vụ REST của bạn như thế này:

$ua->post('http://example.com/rest/getStuff?cred=foobar1234567, $search_criteria); 

Nếu bạn làm điều đó như thế này, bạn có thể cung cấp một cookie, nhưng bạn không cần phải, và khách hàng sẽ không nhất thiết cần phải quan tâm đến cookie.

Chỉnh sửa: Nếu bạn muốn xác thực cơ bản, hãy xem Plack::Builder. Bạn có thể sử dụng nó để thêm auth vào một số yêu cầu nhất định.

+1

Tôi đã nói chuyện với tác giả về mô-đun đó; nó cố gắng chuyển hướng đến/đăng nhập biểu mẫu với tất cả các yêu cầu (mà sẽ không làm việc dễ dàng với các dịch vụ web an toàn). – Blaskovicz

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