2013-06-29 1 views
6

Nous exécutons une application Web (serveur brillant, où le codage est effectué dans R) et souhaitons y ajouter une couche d'authentification. Plutôt que de construire quelque chose pour faire ça dans R, j'ai pensé à utiliser météore pour créer des jetons auth et tout ça. Ceci est la façon dont je pensais à le faire:jetons d'authentification, stockage local et météore

  • Un utilisateur dans des météorites et météore crée une entrée de base de données qui ressemble à ceci:
 
    { "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 } ] } 
  • L'utilisateur est redirigé vers "l'ancienne application". Ici, nous vérifions le stockage local (qui devrait être le même stockage local météore si nous utilisons la même face vers l'extérieur hôte et le port, correct?) et de trouver ces informations:
 
    Meteor.loginToken: t9Dxkp4ANsYKuAQav 
    Meteor.userId: HSdbPBuYy5wW6FBPL 
  • Les données de stockage local est enquêté par "l'autre application" et il fait une simple requête de base de données contre le météore db pour vérifier que les informations de stockage local correspond à ce qui est dans la base de données. Peut-être aussi vérifier une sorte de date d'expiration. Si cela correspond, l'application s'affiche, sinon ce n'est pas le cas.

Est-ce une manière décemment sûre de le faire? Cela fonctionnera-t-il pour partager le stockage local entre les applications?

+2

Cela semble une approche raisonnable, mais vous aurez besoin de faire attention aux restrictions de domaine et un chemin cookies: http: //en.wikipedia. org/wiki/HTTP_cookie # Domaine_et_Path. –

+0

C'est exactement ce que j'ai fait en travaillant avec Meteor et les extensions de navigateur. –

+0

D'une pertinence possible à cette question serait moi paquet shinyStore qui vous permet d'utiliser (facultativement crypté) le stockage local de Shiny: https://github.com/trestletech/shinyStore –

Répondre

0

Bien sûr, vous devrez vous assurer que vos WebSockets fonctionnent sur TLS. LocalStorage utilise un simple Same-origin Policy. Donc oui ça va marcher. LocalStorage est aussi sécurisé qu'un cookie, donc c'est ok.

TLDR:

Oui et Oui