2010-05-05 49 views
5

Tôi có một ứng dụng đường ray 2.3.5 với API tôi muốn bảo vệ.Rails nhà cung cấp OAuth hai bên?

Không có người dùng - đó là ứng dụng cho dịch vụ web kiểu ứng dụng (giống như dịch vụ Amazon hơn facebook) và vì vậy tôi muốn triển khai nó bằng cách sử dụng phương pháp tiếp cận OAuth hai chân.

Tôi đã cố gắng sử dụng việc thực hiện máy chủ oauth-plugin như một sự khởi đầu:

http://github.com/pelle/oauth-plugin

... nhưng nó được xây dựng dự kiến ​​ba chân (dòng chảy chuyển hướng web) oauth.

Trước khi tôi tìm hiểu kỹ hơn về việc hỗ trợ hai chân, tôi muốn xem liệu có cách nào dễ dàng hơn không, hoặc nếu ai đó có cách tiếp cận tốt hơn cho ứng dụng đường ray để triển khai nhà cung cấp dịch vụ OAuth cấp quyền .

Trả lời

8

Trước đây, câu trả lời duy nhất là hack trong plugin oauth để nhận tập hợp con này của tương tác oauth. Kể từ đó, plugin oauth đã được cấu trúc lại và giờ bạn có thể sử dụng nó ngay lập tức, bằng cách thêm đúng loại bộ lọc xác thực vào bộ điều khiển của bạn:

class ApiController < ApplicationController 

    include OAuth::Controllers::ApplicationControllerMethods 

    oauthenticate :strategies => :two_legged, :interactive => false 

    # ... 

end 
+0

là có thêm tài liệu về điều này ở bất cứ đâu? ... biến thể hai chân tôi có nghĩa là ... –

+0

Thêm plugin oauth vào Gemfile, chạy 'rails g oauth_provider', thêm phần trên vào bộ điều khiển của bạn. Nếu bạn có vấn đề vượt quá điều này, tôi có thể giúp đỡ. –

+1

Tôi không thể thực hiện công việc này. Ngay sau khi tôi thay đổi chiến lược hai chân, tùy chọn sai tương tác tôi nhận được lỗi Yêu cầu OAuth không hợp lệ. Tôi có nên làm điều gì đó rất khác ở cuối khách hàng không ?. Tôi đang cố gắng làm theo hướng dẫn này - http://unhandledexpression.com/2011/06/28/rails-and-oauth-plugin-part-2-the-consumer/ - và nó hoạt động để có được một nhà cung cấp/người tiêu dùng thiết lập cho OAuth 3-chân và tôi đang cố gắng làm cho nó 2 chân. Có suy nghĩ gì không? –

5

Tôi không biết về bất kỳ lựa chọn thay thế nào cho plugin oauth tại thời điểm này, mặc dù nó chắc chắn là dài trên răng và chín để thay thế. Đề xuất của tôi là tạo máy chủ oauth từ oauth-plugin, sau đó trích xuất các phụ thuộc từ plugin (chỉ là một vài mô-đun giá trị của các phương thức) và thùng rác plugin. Sau đó, chỉnh sửa mọi thứ theo nhu cầu của bạn. Oauth 2 chân không phải là một vấn đề lớn vì nó đơn giản hơn 3 chân, và cảm giác của tôi là plugin oauth không thể sử dụng được trong những ngày này mà không cần sửa đổi đáng kể.

Thịt của OAuth từ lâu đã được chiết xuất vào đá quý oauth cơ bản, do đó, plugin oauth sắp xếp yếu. Kiến trúc này đưa ra một số giả định nặng nề về hệ thống xác thực bạn đang sử dụng, và mã được sinh ra là ngày tháng. Vì vậy, với tôi, plugin oauth phục vụ nhiều hơn như một ví dụ về cách kết nối mọi thứ thay vì cái gì đó mà hầu hết các trang web sẽ muốn sử dụng ra khỏi hộp.

+0

lời khuyên tốt. Tôi nghĩ tôi sẽ chỉ trích xuất những gì tôi cần từ plugin. Vì chữ ký cho yêu cầu hai chân trông rất giống như chữ ký trên một yêu cầu ban đầu cho một mã thông báo, tôi đã có thể căn cứ auth hai chân trên đó (verify_oauth_consumer_signature đặc biệt). –

+0

ok - làm cho nó hoạt động và làm sạch hầu hết các plugin. Sẽ phát hành một gist/chi nhánh cho điều này khi tôi có cơ hội. –

+0

@Andrew Bất kỳ từ nào trên đó đã làm sạch 2 gist chân? Rất thích mượn nó :) –

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