Jedno logowanie a wiele witryn?

Jedno logowanie a wiele witryn?

W jaki sposób jogger robi jedno logowanie do całej platformy?

Prześledziłem to, co się dzieje w ciastkach – przy logowaniu jest przesyłane ciastko csid które pozostaje stałe gdy klikam po linkach w swojej domenie, gdy klikam po panelu administracyjnym, ale gdy przejdę do obcej domeny (sprawdzałem ekrany.org.pl) to ustawione jest już tylko phpssid, a csid – nie. Ciastko phpssid zmienia się z każdym requestem.

Przy przejściu do innej domeny dalej jestem zalogowany (okienko komentowania pamięta mój nick i nie ma kapczy) a w ciastku nie ma csid, jest tylko nowe phpssid. Wiem, że można przekazać ciastko tak, że poddomena je odczyta – ale przy obcej domenie – nie ma dostępu do ciastka.

Nie mamy tutaj żadnego oauth czy iframe które by jawnie udostępniało informacje przechowane gdzieś indziej. Jak to działa?

  • Piotrek R.

    Dla blogów jak Twój w domenie .jogger.pl z ciastkiem nie ma problemu. Dla innych domen, przy pierwszym wywołaniu następuje przekierowanie HTTP na stronę jogger.pl, gdzie ustawiane jest ciastko i przekierowanie z powrotem do oryginalnego wpisu. Tyle wynika z mojego prześledzenia. 🙂

  • Musiałem to przekierowanie chyba gdzieś przeoczyć.
    Zastanawiam się czy można w tej chwili zrobić to bezboleśnie i skutecznie wykorzystując Mozilla Persona… Czy trzeba tak jak jest tuaj, czy robić SSO tak jak to robi Google i Facebook.

  • Piotrek R.

    Mozilla Persona – mam wrażenie, że już lepiej użyć Facebook Connect albo Google albo jakiegoś innego lub multi OAuth. SSO jest na joggerze, tylko jest to dodatkowe przekierowanie. Ja bym chyba tego nie polecał, ale w sumie działania całkiem spoko. Szczególnie, że nawet badając to, tego nie znalazłeś, więc co dopiero „zwykły” użytkownik. 🙂 A przekierowanie jest zrobione sprytnie, bo z tego co widziałem, to trzeba wysłać nazwę User Agent z jakimś sensownym wpisem popularnych przeglądarek. 🙂

  • No właśnie nie mogę się uzależniać od FB/Google 🙂 Zwykły użytkownik w ogóle nie powinien wiedzieć, że coś się dzieje. Mozilla Persona daje tego namiastkę.
    Punktem odniesienia jest więc dla mnie Jogger, gdzie to jest zrobione nieinwazyjnie. Tylko jakoś specjalnie zakamuflowane bo nadal tego w chrome nie potrafię znaleźć.. Ale mam już koncepcję, dzięki za naprowadzenie!

  • Piotrek R.

    Nie wiem oczywiście jakie masz założenia, ale ja nie widzę różnicy między Personą, FB czy Google. Wszędzie tak samo trzeba się zarejestrować, zalogować, dać uprawnienia, a potem logowanie już jest przezroczyste dla użytkownika. 🙂

    Powodzenia z czymkolwiek tam robisz!

  • Jarosław Rzeszótko
  • Piotrek R.

    Interesująca rzeczywiście. Ale raczej bym nie stosował. Zapala mi się czerwona lampka na temat bezpieczeństwa, a tak czy inaczej trzeba by było zrobić jakiś fallback dla klientów z wyłączonymi ciastkami z obcych (third-party) domen.

  • Jarosław Rzeszótko

    A jaki masz lepszy pomysł? Ludzi z wyłączonymi third-party cookiesami nie ma raczej dużo, a jeśli chodzi o bezpieczeństwo wystarczy chyba, że dzielone są dane sensownie zaszyfrowane po stronie serwera.

  • Piotrek R.

    Nie ma, chociaż mam wrażenie, że przez ostatnie wydarzenia z cookies może pojawić się więcej. I chodzi mi o fallback, a jako podstawa może tak działać. Nie wyobrażam sobie żeby YouTube przestał komuś działać, bo nie ma third-party cookies włączonych. Ale już dodatki jak +1 Button czy podgląd video w mailach może czasem nie działać. 🙂

    Jeśli chodzi o lepszy pomysł, to większość serwisów robi SSO raczej, a nie dodatkowy obrazek i ja też bym w tym kierunku szedł.

  • Youtube i FB działą poprzez iframe, więc mają łatwiej. A gdy user nie jest zalogowany, to logowanie następuje przez popup, co zupełnie otwiera drogę do wymiany ciastek. Takie SSO zdaje egzamin.
    Ja mam łatwiej bo mogę zrobić to tak jak na joggerze 🙂

  • Piotrek R.

    YouTube nie działa przez iframe. Trzeba kliknąć „Sign in”, wtedy przechodzi na accounts.google.com i gdy tam wykryje użytkownika, wraca od razu do YouTube z danymi logowania (tymczasowy token czy coś takiego). Podobnie działa Jogger (i wiele innych serwisów). Tylko Jogger pierwsze „kliknięcie” wymusza. 🙂