2013-06-29 18 views
6

Używamy aplikacji internetowej (serwer błyszczący, gdzie kodowanie odbywa się w R) i chcemy dodać do niej warstwę uwierzytelniania. Zamiast budować coś, aby to zrobić w R, myślałem o użyciu meteoru do tworzenia tokenów autoryzacji i tak dalej. ten sposób myślałem to zrobić:tokeny autoryzacji, pamięć lokalna i meteor

  • użytkownik loguje się z meteor i meteor tworzy wpis w bazie danych, który wygląda mniej więcej tak:
 
    { "createdAt" : 1372521823708, 
     "_id" : "HSdbPBuYy5wW6FBPL", 
     "services" : { "password" : { "srp" : { "identity" : "vKpxEzXboBaQsWYyJ", 
      "salt" : "KRt5HrziG6RDnWN8o", 
      "verifier" : "8d4b6a5edd21ce710bd08c6affb6fec29a664fbf1f42823d5cb8cbd272cb9b2b3d5faa681948bc955353890f645b940ecdcc9376e88bc3dae77042d14901b5d22abd00d37a2022c32d925bbf839f65e4eb3a006354b918d5c8eadd2216cc2dbe0ce12e0ad90a383636a1327a91db72cf96cd4e672f68544eaea9591f6ed102e1" } }, 
     "resume" : { "loginTokens" : [ 
      { "token" : "t9Dxkp4ANsYKuAQav", 
       "when" : 1372521823708 } ] } }, 
     "emails" : [ 
     { "address" : "[email protected]", 
      "verified" : false } ] } 
  • użytkownik jest przekierowany do "starej aplikacji". Tutaj możemy sprawdzić pamięci lokalnej (powinno być takie samo przechowywanie lokalne jak meteor jeśli używamy tego samego hosta na zewnątrz budynku i portu, prawda?) i znaleźć te informacje:
 
    Meteor.loginToken: t9Dxkp4ANsYKuAQav 
    Meteor.userId: HSdbPBuYy5wW6FBPL 
  • Miejscowy przechowywania danych jest zbadane przez "inną aplikację" i wykonuje proste zapytanie do bazy danych względem meteor db, aby sprawdzić, czy informacje o lokalnej pamięci są zgodne z tym, co jest w bazie danych. Być może sprawdź także datę ważności. Jeśli to się zgadza, aplikacja renderuje, w przeciwnym razie nie.

Czy jest to przyzwoicie bezpieczny sposób na zrobienie tego? Czy uda się współdzielić pamięć lokalną między aplikacjami?

+2

To wydaje się rozsądnym podejściem, ale trzeba uważać na ograniczenia domeny i ścieżki na Twoich ciasteczek: http: //en.wikipedia. org/wiki/HTTP_cookie # Domain_and_Path. –

+0

Dokładnie podchodziłem do tego podczas pracy z Meteorami i rozszerzeniami przeglądarki. –

+0

Może to być dla mnie pakiet shinyStore, który pozwala na używanie (opcjonalnie zaszyfrowane) lokalnego magazynu od Shiny: https://github.com/trestletech/shinyStore –

Odpowiedz

0

Oczywiście musisz się upewnić, że Twoje WebSockets są uruchomione przez TLS. LocalStorage używa prostego Same-origin Policy. Więc tak to zadziała. LocalStorage jest tak samo bezpieczny jak plik cookie, więc wszystko jest w porządku.

TLDR:

Tak i Tak