2010-08-27 18 views
14

Czy istnieje bezpłatny mechanizm pojedynczego logowania dla systemu Android, który z powodzeniem współpracuje z aplikacjami spoza sieci Web? Załóżmy, że ...Android SSO (Single Sign-On) dla aplikacji

  1. Uruchamiasz moją aplikację i używasz jej, dopóki nie wyśle ​​żądania z serwera aplikacji wymagającego uwierzytelnienia. Odpowiada na to żądanie losowym tokenem, który serwer będzie z tobą kojarzył przez krótki czas.

  2. Aplikacja przedstawia pole nazwy użytkownika, pole hasła i przycisk Wyślij.

  3. Podajesz swoją nazwę użytkownika i hasło. Następnie aplikacja przekazuje nazwę użytkownika i hashowane hasło wraz z tokenem generowanym przez serwer aplikacji do usługi logowania.

  4. Usługa logowania określa, czy nazwa użytkownika i hasło są prawidłowe. Jeśli tak, to cyfrowo sygnalizuje czas i podpisuje token, a następnie zwraca podpisany token do aplikacji.

  5. Aplikacja przesyła podpisany token na serwer.

  6. Serwer sprawdza podpis, upewnia się, że jest poprawny i podpisany przez zaufany urząd, i postępuje tak, jakby użytkownik zamiast niego przedstawił IT z poprawną lokalną nazwą użytkownika i hasłem.

Podejrzewam, jestem po prostu gubię się w nomenklaturze, ale wrażenie stałam się tak daleko, że wszystkie zwykłe dostawcy SSO - Twitter, Facebook, itp - tylko pozwalają użytkownikom na logowanie się za pomocą normalna przeglądarka i że nie wolno ci robić tego, co opisałem, lub robią coś, co uniemożliwia korzystanie z nich poza zwykłą przeglądarką (np. dynamiczne tworzenie formularza logowania za pomocą Javascriptu, aby uniemożliwić programistom próbę używać własnych aplikacji jako elewacji logowania).

Alternatywnie, nie istnieją żadnego obieg tak ...

  1. uruchomić mojej aplikacji i używać go aż do usług internetowych wymaga zalogowania się. Serwer aplikacja generuje token i zwraca go do Aplikacja.

  2. Aplikacja spawnuje nową przeglądarkę za pomocą intencji, która przesyła użytkownika do strony internetowej operatora, przekazując token za pomocą intencji do przeglądarki (i ostatecznie do dostawcy) jako POSTed formvar.

  3. Logujesz się za pomocą okna przeglądarki, a okno przeglądarki zamyka się - wraca do mojej aplikacji.

  4. Dostawca logowania podpisuje token, a następnie przesyła go bezpośrednio do mojego serwera aplikacji za pośrednictwem protokołu HTTP POST, dzięki czemu mogę odnotować jego przesłanie, zweryfikować certyfikat i traktować go tak, jakby był zamiast tego prawidłową nazwą użytkownika i hasłem przesłanym bezpośrednio przez sam użytkownik na serwer aplikacji.

+0

Czy możesz użyć openids? – ekawas

+0

Er, może. W przypadku OpenID, wydaje mi się, że lepszym pytaniem może być "czy istnieje gdzieś spójne wytłumaczenie, jak właściwie używać OpenID w rzeczywistej aplikacji na Androida z nie-teoretycznymi użytkownikami?" Do tej pory wszystko, do czego się potknąłem, brzmiało trochę jak: "Tak właśnie teoretycznie ma działać xxx, ale do tej pory nikt go jeszcze nie wyciągnął ... albo zrobili, ale coś, co wydarzyło się kilka miesięcy później zniszcz to." – Bitbang3r

+0

zobacz http://code.google.com/p/openid4java/ Wygląda na to, że został zmodyfikowany do użycia w systemie Android (http://groups.google.com/group/openid4java/browse_thread/thread/2d5ae103e03da768/2dffae7fbd05d1d3? Lnk = gst & q = android # 2dffae7fbd05d1d3) – ekawas

Odpowiedz

0

Czy próbowałeś/aś skorzystać z Firebase? https://firebase.google.com/docs/auth/?hl=es-419

Posiada kilka przydatnych narzędzi, można się zalogować z wieloma łącznikami społecznościowymi i użytkownikiem/hasłem, a także udostępniać bibliotekę do integracji całego interfejsu użytkownika i przepływu serwera, a nawet korzystać z funkcji Google Smart Lock dla ty.

Spójrz na https://github.com/firebase/FirebaseUI-Android Użyłem go w osobistym projekcie i zaoszczędziłem mnóstwo czasu.

Powiązane problemy