2011-09-09 43 views
11

Chúng tôi muốn sử dụng API Google Doc để tạo Tài liệu (Trong tài khoản doanh nghiệp của chính chúng tôi) khi người dùng cuối thực hiện một số hành động trên trang web của chúng tôi.Google API: Cách xác thực mà không cần chuyển hướng?

Vấn đề là chúng tôi đã cố gắng triển khai giao thức OAuth 2.0, như được đề xuất trong tài liệu giao thức v3.0. Phương thức xác thực apiClient :: thực hiện chuyển hướng. Đây là vấn đề chính bởi vì người dùng của chúng tôi không biết quyền truy cập vào tài khoản doanh nghiệp của chính chúng tôi .... và chúng tôi không muốn cấp quyền truy cập cho họ;)

(Nói cách khác, chúng tôi không tạo một ứng dụng cho phép người dùng của chúng tôi chỉnh sửa dữ liệu của riêng họ, nhưng để tương tác với dữ liệu của chúng tôi, như cơ sở dữ liệu.)

Tôi đã đọc điểm OAuth 2.0 để tránh chúng tôi quản lý thông tin xác thực của người dùng. Cá nhân tôi là O.K. với khái niệm này, nhưng trong trường hợp của chúng tôi, chúng tôi không muốn được xác thực trong tài khoản google của người dùng ...

Vì vậy, cách tiếp cận tốt nhất để có được xác thực hợp lệ mà không có bất kỳ tương tác nào từ cuối người dùng ?

+2

Đối với người đọc thông thường. Trước khi bạn bắt đầu tham gia với điều này. Hãy xem xét việc thực hiện thay thế và ít đau đớn mã hóa tên người dùng và mật khẩu gmail của bạn vào ứng dụng và chuyển Chrome sang PHP để mô phỏng thông tin đăng nhập của người dùng.Bây giờ viết lại kiến ​​trúc plugin tuân thủ NSAPI và máy ảo sẽ không vui, nhưng ít nhất nó tốt hơn OAuth2, nếu bạn không đọc tác giả đề nghị không sử dụng http://hueniverse.com/2012/07/oauth-2 -0-và-the-road-to-hell/ –

Trả lời

16

Những gì bạn mô tả không phải là cách OAuth được thiết kế để sử dụng.

OAuth 3 chân là tất cả khoảng ủy quyền xác thực nơi người dùng (biết mật khẩu của anh) có thể cấp quyền truy cập tài nguyên giới hạn và có thể quay lại ứng dụng. Ứng dụng đó không bao giờ thấy mật khẩu của người dùng. Có một loạt công việc liên quan đến việc cho phép ứng dụng mạo danh người dùng một cách an toàn.

Điều bạn có thể muốn là sử dụng luồng OAuth (2 chân), nơi thông tin đăng nhập consumer_id/consumer_secret được nhúng trong ứng dụng của bạn. Tại đây, ứng dụng của bạn không mạo danh người dùng cuối của bạn và sẽ không có chuyển hướng trình duyệt nào có liên quan.

Dưới đây là một số thông tin thêm về việc sử dụng OAuth 2 chân trong Google Apps: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

Và đây là một mô tả tốt của 3 vs 2- OAuth chân: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

+1

Cả hai liên kết đều là oauth1 và không phải là liên kết được gọi trong OAuth2. Trong OAuth2, thuật ngữ này được gọi là "Thông tin đăng nhập của khách hàng": http://tools.ietf.org/html/rfc6749#section-1.3.4 – drozzy

1

Tại sao không nhận được một ủy quyền OAuth cho tài khoản doanh nghiệp của bạn và có tất cả người dùng sử dụng tài khoản đó. Vì có vẻ như bạn muốn mọi người truy cập dữ liệu cho một tài khoản, các chi tiết có thể bị ẩn khỏi người dùng cuối.

Mã thông báo truy cập sẽ được tất cả người dùng chia sẻ và tất cả họ đều sẽ truy cập vào cùng một tài khoản mà không có bất kỳ ủy quyền nào cho tài khoản của từng người dùng.

+1

Âm thanh đó giống như những gì tôi cần, nhưng mục tiêu của OAuth có phải là chuyển hướng để xử lý xác thực không? Làm thế nào tôi có thể "hardcode" các thông tin xác thực để tránh enduser để thông báo rằng một xác thực đã được thực hiện? – FMaz008

+0

Bạn thực hiện xác thực trước bất kỳ ai khác sử dụng hệ thống. Sau đó, bạn lưu trữ mã thông báo để mọi người sử dụng. Nhìn vào nó giống như tất cả người dùng đang chia sẻ cùng một mã thông báo thay vì mỗi mã có mã thông báo riêng của họ. –

+0

Hum, ok, nhưng điều đó vẫn không giúp tôi. Tôi đã cố gắng triển khai giao thức và giờ tất cả người dùng được chuyển hướng đến trang được viết: *** Trang web yêu cầu quyền: Quản lý tài liệu của bạn Xem và quản lý tài liệu của bạn trong Google Tài liệu Tải lên tài liệu mới (Thêm thông tin). *** Tôi không muốn người dùng của mình thấy rằng ... – FMaz008

3

Bạn sẽ cần phải sử dụng TÀI KHOẢN DỊCH VỤ. Về cơ bản, bạn đang truy cập mã hóa cứng vào tài khoản này vào ứng dụng máy chủ của mình. Sau đó, bạn sử dụng chia sẻ để cấp quyền truy cập vào tài khoản cho nội dung bạn muốn. Ví dụ: bạn có thể chia sẻ Google Tài liệu hoặc hồ sơ Analytics với TÀI KHOẢN DỊCH VỤ.

Dưới đây là ví dụ hoàn chỉnh về việc thiết lập tài khoản dịch vụ, ghi nhật ký và sau đó sử dụng nó.

https://gist.github.com/fulldecent/6728257

+0

Có, SO người đánh giá. Đây là lần thứ ba tôi đăng liên kết này trong một câu trả lời. Và có, đó là một câu trả lời hợp lệ. Các câu hỏi khác là http://stackoverflow.com/questions/9932090/google-analytics-api-v3-authorization-to-allow-access-to-my-data/19121069#19121069 và http://stackoverflow.com/questions/13111396/truy cập-google-lịch-sự kiện-từ-với-dịch vụ-tài khoản-lỗi-truy cập-den –

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