2015-06-22 29 views
6

Jeśli mam jeden serwer z wieloma domenami, jaka jest preferowana metoda wdrażania rozwiązania jednokrotnego logowania w tej samej domenie. Obecnie używam narzędzi programistycznych, mam kilka milionów plików cookie w osobnych domenach i utknąłem. Oprócz samego wdrożenia SSO, muszę również migrować różne pliki cookie do domeny centralnej. W odniesieniu do różnych serwerów, mają tylko pojedynczą stronę, która wymaga ode mnie, aby pokazać różne stany w zależności od tego, czy użytkownik jest zalogowanyJednokrotne logowanie, wiele domen na tym samym serwerze, ruby ​​na szynach

Próbowałem następujące:.

  1. CORS: wybrać jeden domena jako centralny ośrodek autoryzacji. Ze wszystkich innych domen sprawdź domeny, aby sprawdzić, czy użytkownik jest zalogowany. Aby przeprowadzić migrację plików cookie, sprawdź, czy istnieje obiekt "current_user", wyślij go do klienta, zrób wniosek CORS, zarejestruj użytkownika i zabij tokena. Działa świetnie! ALE ... Po zbudowaniu go na 2-3 tygodnie, CAŁKOWICIE NIE DZIAŁA w IE. Nawet w IE11 zauważam, że ustawienie domyślne wyłącza to zachowanie.

  2. próbował majstrować przy sklepie sesji w

    Rails.application.config.session_store 
    

bez powodzenia.

Jestem obecnie eksperymentuje z następujących czynności:

  1. JSONP: Mam ktoś teraz próbuje przekonwertować wyżej jsonp zamiast natomiast staram jakieś inne opcje:

  2. Skonfiguruj niestandardowego dostawcę OAUTH. Tak jak poprzednio, będzie to "domena centralna", jeśli dana osoba jest zalogowana, wraca do żądanej domeny z tokenem, z którego użytkownicy mogą wysyłać żądania. https://github.com/songkick/oauth2-provider

  3. Patrząc na to, ale wygląda na przestarzałe? https://github.com/rubycas/rubycas-client. Mam również wrażenie, że to rozwiązanie może być rozwiązaniem, jeśli wyrzucę to z miejsca, ale biorąc pod uwagę, jak daleko zajdziemy w projekcie, nie jest dla mnie jasne, w jaki sposób mogę przenieść istniejące pliki cookie. Również nie jest jasne, czy wymaga to dwie aplikacje mi się ją uruchomić (po jednym dla klienta (-ów), jeden dla serwera auth)

Jak przejść przez każdy z tych możliwości, jeśli ktoś miał żadnego doświadczenia robiąc to, co robię, proszę poinformuj mnie i zaoszczędź mi dużo pracy :)

+1

OAuth jest chyba „prawo” sposób to zrobić. Sugeruję, żebyś skupił swoje wysiłki na tym. –

Odpowiedz

1

Najlepszym sposobem, chyba że jest to aplikacja zabawkowa, jest prawdopodobnie ustawienie dostawcy oauth.

Używamy z Dewisem Doorkeeper i działa świetnie. Warto poświęcić trochę czasu, aby odłożyć trochę czasu na przeczytanie dokumentacji i obejrzeć rozmowę na youtube, jeśli jeszcze nie znasz strategii, ale gdy zrozumiesz podstawowe pojęcia, możesz ją skonfigurować w prosty sposób. pomoc tego klejnotu.

Jest szybki wideo spływać na http://railscasts.com/episodes/353-oauth-with-doorkeeper