2012-07-13 10 views
12

Mam zarówno aplikację komputerową, jak i aplikację mobilną. Chcę korzystać z tej samej aplikacji szynowej dla obu "urządzeń". Innymi słowy, chcę, aby aplikacja mobilna żądała treści w aplikacji Desktop.Uwierzytelnianie API i aplikacji przy użyciu tokena Devise, Doorkeeper i OAuth2

Używam Devise do uwierzytelniania (email + hasło). Zaimplementowałem Doorkeepera w aplikacji Desktop, aby wygenerować token Oauth2 dla mojej aplikacji mobilnej.

Oto moje pytania:

mam before_filters zestawów w moim kontrolerów aplikacji pulpitu w celu ich zabezpieczenia.

  • Nie jestem pewien, w jaki sposób aplikacja mobilna powinna współdzielić token OAuth2 z programem Devise w celu uwierzytelnienia i dostępu do moich chronionych kontrolerów?

W tej chwili to Odźwierny powinien sprawdzić token mobilny w swoich kontrolerach za pomocą kodu doorkeeper_for :all. Ale aby to zrobić, muszę nie móc ochronić urządzenia. Czy powinienem też zapisać token Oautha w narzędziu?

Nie rozumiem, w jaki sposób aplikacje mobilne powinny być uwierzytelniane za pomocą protokołu i protokołu OAuth2?

Thx

Odpowiedz

9

To jest stare, ale nie ma jeszcze odpowiedzi.

Zasadniczo Devise i Doorkeeper robią to samo, Devise uwierzytelnia się za pomocą sesji (lub autoryzacji tokenów, jeśli to zrobiliście), podczas gdy Doorkeeper dokonuje uwierzytelnienia z tokenami OAuth wysyłanymi w każdym żądaniu.

Co prawdopodobnie chcesz zrobić, to podzielić aplikację na dwa punkty dostępu, mieć regularny dostęp do pulpitu przy użyciu Devise i API, które używa Doorkeepera. Włącz tworzenie tras Devise tylko dla zwykłych kontrolerów pulpitu i włączanie tras odźwiernych tylko dla kontrolerów api.

W kontrolerze aplikacji API można zastąpić bieżącego użytkownika jako coś podobnego do User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token. To będzie pasować do sposobu, w jaki Devise również się uwierzytelnia.

Jeśli twoje API nie musi korzystać z protokołu OAuth, możesz użyć konfiguratora token_authenticable Devise'a, który zapewnia podobne funkcje, jak tokeny na okaziciela OAuth.

+0

dlaczego nie powinniśmy używać uwierzytelniania opartego na tokenach na komputerach i urządzeniach mobilnych? – lakesare

0

Nie jestem pewien, czy zrozumiałem pytanie, ale odźwierny blokuje kontroler całkowicie. Brak dostępu poprzez uwierzytelnianie Devise jest możliwe, jeśli masz doorkeeper_for :all w swoim kontrolerze.

Potrzebny jest oddzielny kontroler do udostępniania danych przez OAuth2, na przykład kontroler API. Następnie możesz poprosić o dane, np. przez protocol://myapp:1234/ressource?access_token=thetoken.

Czy o to prosiłeś? Jeszcze prosimy o wyjaśnienie :)

Powiązane problemy