Tôi đang xây dựng một ứng dụng với cả ứng dụng khách web và ứng dụng khách iPhone.Luồng OAuth, iPhone -> Đường ray -> Facebook
Trên máy khách web, tôi xác thực người dùng thông qua Facebook bằng Omniauth, sau đó người dùng có thể đăng các hành động trên ứng dụng lên Facebook. Điều đó hoạt động tốt.
Tôi gặp sự cố khi triển khai luồng Auth từ ứng dụng iPhone.
Tôi đã thiết lập Trình giữ cửa trong ứng dụng đường ray làm nhà cung cấp OAuth. Mặc dù tôi không chắc chắn cách thực hiện luồng xác thực.
Tôi đã tìm ra điều này: Người dùng có thể đăng nhập vào Facebook trong iPhone và nhận mã thông báo. Ý tưởng là sau đó gửi mã thông báo, cùng với Facebook uid đến ứng dụng đường ray, lưu trữ nó và xác thực người dùng bằng Omniauth. Khi người dùng được xác thực tạo ra một mã thông báo với Doorkeeper và gửi nó trở lại ứng dụng iPhone.
Nếu đây là lần đầu tiên người dùng xác thực dựa vào ứng dụng đường ray, người dùng mới sẽ được tạo.
Sau đó, người dùng có thể thực hiện các tác vụ đối với JSON-api và ứng dụng đường ray sẽ quản lý tích hợp Facebook vì mã thông báo Facebook được lưu trữ trong hồ sơ người dùng.
Ứng dụng cũng sẽ trải rộng trên nhiều miền vì vậy tôi cần phải có nhiều ứng dụng Doorkeeper được đăng ký để cung cấp các cuộc gọi lại khác nhau của uri.
Điều này có vẻ giống như một giải pháp khả thi không? Có an toàn không? Có các luồng/phương pháp thay thế khác không?
Cảm ơn.
tôi đang xem xét các kiến trúc giống nhau, và tôi nghĩ rằng đó là hợp pháp. Trong mô tả của bạn, bạn đang thiếu "đường dẫn xác thực mã thông báo truy cập FB UID + chống lại Facebook" để đảm bảo bạn không bị giả mạo. – Hollownest
Điều này được gọi là "xác nhận" và dường như chính xác những gì bạn mô tả. Từ https://github.com/songkick/oauth2-provider: '' máy khách OAuth sẽ xác thực người dùng bằng một số khung khác và nhận mã thông báo, sau đó trao đổi mã thông báo này cho mã thông báo truy cập trên miền của bạn. '' – Hollownest
Bạn có cuối cùng sử dụng nhà cung cấp oauth2? –