2012-02-10 35 views
5

Tôi có một ứng dụng web thực hiện rất nhiều yêu cầu ajax với máy chủ php và máy chủ cơ sở dữ liệu. Tôi cũng đã tạo một ứng dụng iPhone và một ứng dụng Android, ứng dụng này đã hoạt động như các ứng dụng ngoại tuyến cho đến bây giờ.OAuth: Trường hợp sử dụng OAuth

Bây giờ tôi muốn tạo một API sẽ được sử dụng để đồng bộ dữ liệu giữa máy chủ web và ứng dụng trên điện thoại thông minh. Tôi có nên sử dụng OAuth cho điều này không? Những gì tôi đã đọc về OAuth - có vẻ như nó được sử dụng nếu tôi muốn mở API của mình để các ứng dụng của bên thứ ba sử dụng. Nhưng ở đây tôi chỉ muốn đảm bảo chuyển dữ liệu an toàn giữa API và ứng dụng của riêng tôi.

Ai đó có thể làm sáng tỏ điều này?

Trả lời

4

Cách sử dụng chính của OAuth là làm cho các ứng dụng của bên thứ ba được ủy quyền truy cập tài nguyên cá nhân của người dùng trên trang web mà không cung cấp thông tin xác thực người dùng cho ứng dụng của bên thứ ba. Ví dụ: giả sử rằng Twitter muốn nhận danh sách liên hệ từ tài khoản Yahoo của bạn. Cách truyền thống là cung cấp tên người dùng và mật khẩu của bạn cho Twitter. Nhưng với OAuth, bạn cung cấp cho họ mã thông báo tạm thời (được gọi là Access Token) cho phép Twitter truy cập danh bạ của bạn trên Yahoo trong một khoảng thời gian giới hạn (cho đến khi mã thông báo này hết hạn hoặc bạn là chủ sở hữu tài nguyên riêng) thu hồi nó).

Điều đó nói rằng, OAuth không phải là về truyền dữ liệu an toàn trên web. Đó là một câu chuyện khác thường đạt được bằng cách sử dụng SSL. Ngay cả khi bạn sử dụng OAuth, bạn phải sử dụng SSL cùng với để đảm bảo dữ liệu được gửi và nhận một cách an toàn.

Vì vậy, trong trường hợp của bạn, bạn phải xem API được sử dụng cho điều gì. Nếu đó là API công khai không cung cấp bất kỳ dữ liệu cá nhân nào cho người gọi, không cần sử dụng OAuth. Tuy nhiên, nếu API là để truy cập tài nguyên cá nhân của người dùng cá nhân, bạn có thể xem xét sử dụng OAuth. Nếu bạn chọn triển khai OAuth, bạn có thể cho phép các ứng dụng bên thứ ba khác truy cập vào API của bạn trong tương lai mà không có bất kỳ mối lo ngại nào.

0

Rất nhiều tùy thuộc vào cách bạn đang bảo mật API của mình. API của bạn có được mở cho công chúng đặc biệt là các url đăng không? Nếu dữ liệu của bạn không phải là thứ mà mọi người dùng sẽ thấy, thì bạn kiểm tra xác thực thông tin đăng nhập của người dùng như thế nào?

Điều quan trọng nhất là chúng ta nên tránh chia sẻ tên người dùng và mật khẩu qua dây để kiểm tra xác thực mọi lúc. Điều này có nghĩa, API của bạn không nên yêu cầu tên người dùng và mật khẩu để xác thực nếu người dùng hợp lệ. Bạn có thể làm gì bằng cách gửi tên người dùng và mật khẩu từ thiết bị di động hoặc id thiết bị hoặc một số thứ khác.

Trong trường hợp như vậy, máy chủ OAuth được giải cứu. Về cơ bản, trên một URL người dùng sẽ gửi tên người dùng và mật khẩu của mình để nhận mã thông báo truy cập của anh ấy. Sau khi được mua, chúng tôi có thể sử dụng mã thông báo truy cập để xác thực từng yêu cầu và thực hiện các hành động cần thiết.

Bạn có thể tham chiếu video nơi tôi đã triển khai máy chủ OAuth trong Laravel 5 bằng bshaffer, một trong những thư viện OAuth tốt nhất cho mọi khung công tác PHP cho người dùng. https://www.youtube.com/watch?v=0vGXbWdtjls