2010-07-19 31 views
19

Chúng tôi có một số khách hàng sử dụng API của chúng tôi để cấp nguồn cho trang web của họ.OAuth: Lưu trữ mã thông báo truy cập và bí mật

Tôi đã bắt đầu cuộc hội thoại tại nơi làm việc về việc sử dụng OAuth để thực hiện cuộc gọi API đã được xác thực. Chúng tôi sẽ có cả hai, hai và ba luồng chân.

Đối với luồng 3 chân, chúng tôi vẫn chưa đi đến sự đồng thuận về cách lưu trữ mã thông báo truy cập và bí mật.

Cách tiếp cận phổ biến cho vấn đề này là để khách hàng lưu trữ mã thông báo truy cập và bí mật trong DB của riêng họ, nhưng đó là câu hỏi vì khách hàng không muốn xử lý các thay đổi mã và các vấn đề triển khai.

Các tùy chọn khác mà chúng tôi đang xem xét:

1) Tiết kiệm access token và bí mật trong một cookie

2) Tiết kiệm cho họ trong phiên.

Tôi không chắc chắn liệu một trong hai ý tưởng này là một ý tưởng hay. Có ai có bất cứ đề nghị?

Cảm ơn bạn.

+0

Cá nhân tôi sợ sử dụng Phiên/Cookie vì lý do bảo mật vì đây là trường hợp Mã thông báo truy cập: ( –

Trả lời

13

Tôi giả sử bạn đang nói về kiểu "Nhà cung cấp dịch vụ", "Người tiêu dùng" và "Người dùng" điển hình. Tôi không biết liệu bạn có thể thực hiện oAuth ba chân nếu Người tiêu dùng (khách hàng) của bạn từ chối thực hiện bất kỳ thay đổi nào không.

Phiên và cookie sẽ hoạt động để lưu mã thông báo, nhưng vấn đề ở chỗ đó là Người tiêu dùng (khách hàng của bạn) cần phải lưu chúng - không phải bạn. Các cuộc gọi tới API của bạn đang diễn ra ở mặt sau và do đó không có phiên hoặc cookie thực có sẵn trong phạm vi đó. Nếu bạn chỉ thực hiện các cuộc gọi JavaScript, có thể điều đó không hoạt động nhưng thậm chí sau đó thường thì các cuộc gọi đang được thực hiện thông qua proxy để không có vấn đề về tập lệnh tên miền chéo.

Trong cả hai trường hợp, nếu mã thông báo được lưu trữ trong phiên hoặc cookie, chúng sẽ là các phím "tạm thời" và Người dùng sẽ phải xác thực lại khi phiên hoặc cookie hết hạn. Nhưng không có gì sai với điều đó theo như thông số oAuth đi - miễn là Người dùng không nhớ xác thực lại.

Bạn có thể tham khảo Sample app for .NET written using MVC 5 Razor engine

1

như Jason nói nó không phải là có thể cho các ứng dụng của người tiêu dùng để đưa ra yêu cầu chứng thực nếu họ không lưu trữ các thẻ cần thiết cho việc xác thực - họ có thể lưu trữ chúng trong bất cứ cách nào họ muốn nhưng điều này là một phần cần thiết của phương trình. Nó có thể là một hệ thống tập tin, memcache, cơ sở dữ liệu, bộ nhớ. Cách duy nhất tôi thấy để sử dụng cookie để lưu trữ các ứng dụng này là dành cho ứng dụng người tiêu dùng để đặt các thông tin xác thực mã thông báo này dưới dạng cookie trong trình duyệt của người dùng và người dùng gửi lại cho người tiêu dùng với mọi yêu cầu - tuy nhiên điều này có vẻ ngớ ngẩn đầu tiên, ứng dụng của người tiêu dùng sẽ cần thay đổi mã của họ để xử lý điều này, và thứ hai, các khóa bí mật và mã thông báo sẽ tràn ngập trên mạng và trình duyệt của người dùng có thể là lỗ hổng bảo mật nếu người dùng tự quyết định làm hack.

0

Tôi gặp sự cố tương tự khi triển khai oauth 3 chân. Tôi đã đăng ký ứng dụng của mình trực tuyến trên Google App Engine & đã sử dụng Google DataStore để lưu trữ Thẻ truy cập.

Tuy nhiên, hạn ngạch được đề cập đến here để lưu trữ dữ liệu & truy vấn ném! Đây là giới hạn duy nhất trong khi sử dụng Google App Engine!

0

khoảng 1) Tiết kiệm access token và bí mật trong một cookie

xem xét khách hàng của bạn trong một quán cà phê Internet và những gì xảy ra sau khi ông doesnt cookie rõ ràng và bản sao người tiếp theo thông tin này?

Tôi muốn dùng phiên DB hoặc PHP

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