Comment concevoir l'authentification et l'autorisation du système pour le REPOS backend / Ajax Application front-End

Je suis en train de créer un nouveau projet où nous sommes de rabotage pour construire une bonne fin et un AJAX police fin. Je suis l'approche du problème en se concentrant sur l'Identification de toutes les ressources que j'ai et ce que les différents verbes HTTP fera, leur URI et le JSON les représentations de ces ressources.

Je suis à la recherche pour le meilleur design pour la sécurisation de l'arrière-plan. Voici la liste des dessins que j'ai considéré comme. Je suis à la recherche d'autres modèles non listés ci-dessous, et les avantages, les inconvénients des recommandations. Le système sera mis en œuvre avec le Printemps 3.0 et, éventuellement, de la Sécurité Printemps 3.0, SSL sera utilisé pour de nombreuses parties du système, mais pas pour tous, de sorte que certaines demandes peuvent venir sur SSL et certains pourraient ne pas.

Option 1: Utilisation de la session HTTP

Montrer une norme de connexion de l'écran, de créer un serveur de session côté et laissez tomcat envoyer un cookie jsessionid et ont l'ajax client comprennent le cookie JSESSIONID sur chaque demande XHR. Cette option se sent juste comme elle n'est pas la bonne approche pour les raisons suivantes.

  • La connexion devient statefull qui est contre les règles de RESTE
  • Je veux être en mesure de diviser les bakcend en plusieurs séparée de la GUERRE des fichiers qui veut dire que je peux avoir plusieurs sessions HTTP sur le serveur principal, si c'est le cas, alors cette approche ne fonctionne pas. Bien que je n'ai pas besoin de la capacité de diviser le backend dans plusieurs applications aujourd'hui, je préfère un design qui permet cette possibilité.

Option 2: Trouver un open source Java de sécurité de la bibliothèque qui fait cela

Autres que le Ressort de sécurité je n'ai pas trouvé d'autres bibliothèques Java, toutes les recommandations sont très appréciés.

Option 3: Essayez d'utiliser un protocole existant comme OAuth

Dans mon très bref coup d'oeil à OAuth il semble qu'il est conçu pour l'authentification dans les lieux où chaque site a sa propre base de données utilisateur. Dans ce système, je veux un mondial de l'utilisateur de la base de données partagées à l'échelle de tout le backend ajax services.

Option 4: Utilisation SAML et Shiboleth

Cette option semble plus tuer et extrêmement complexe à installer et à entretenir.

Option 5: Envoyer le nom d'utilisateur et le mot de passe à chaque requête

Cela nécessite que l'utilisateur envoie son nom d'utilisateur et le mot de passe à chaque requête, ce qui signifie que l'extrémité avant application AJAX doit stocker le nom d'utilisateur et mot de passe comme un objet JavaScript et si l'utilisateur quitte la page puis de nouveau le nom d'utilisateur/mot de passe combo aura disparu et que l'utilisateur peut être contraint de se connecter à nouveau. Je ne veux pas la fin de devant pour essayer de mettre le nom d'utilisateur et le mot de passe dans le cookie qui engloberait de sécurité.

Option 6: mettre en place mes propres authentification /Autorisation de protocole de

Créer un service REST que les utilisateurs peuvent présenter leur nom d'utilisateur/mot de passe, puis de revenir et d'émission de jeton de sécurité, qu'ils doivent renvoyer vers le service avec chaque demande. Le jeton de sécurité serait signé numériquement par le service et ont une date d'expiration. Le jeton serait bon que pour la plupart des opérations de haute sécurité des opérations aurait besoin d'un nouvel écran de connexion comme le port de la confirmation de l'opération.

Problème avec cette approche est que je dois inventer un autre protocole de sécurité, ce qui semble être un gaspillage total de temps.

Je suis sûr que je ne suis pas la seule personne à l'encontre de ce problème, j'espère que le débordement de la pile de la communauté des outils et des options que je n'ai pas encore trouvé.

InformationsquelleAutor ams | 2011-02-12