L'authentification avec AngularJS, gestion de session, les questions de sécurité avec l'Api REST WS

J'ai commencé à développer une application web avec angularJS et je ne suis pas sûr que tout est sécurisé (côté client et serveur).
La sécurité est basée sur une seule page de connexion, si les informations d'identification sont vérifiées ok, mon serveur renvoie un jeton unique personnalisé avec le temps de validité. Tous les autres api REST sont accessibles par le biais de ce jeton.
L'application (client) accédez à mon point d'entrée ex: https://www.example.com/home.html utilisateur d'insérer des informations d'identification et de récupérer un jeton unique. Ce jeton unique sont stockées dans le serveur de base de données avec l'algorithme AES ou d'autres sécurisé techniques, il n'est pas stocké en format clair.

À partir de maintenant, mon AngluarJS application va utiliser ce jeton pour s'authentifier auprès de toutes les Api REST exposés.

Je pense temporaire stocker le jeton personnalisé dans un cookie http; en principe, lorsque le serveur vérifie les informations d'identification, il envoie en retour un nouveau témoin Ex.

app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T

Le cookie sécurisé et HTTP Uniquement drapeaux sur.
Le protocole Http de gérer directement le nouveau cookie et de le stocker. Les demandes successives sera présente le cookie avec le nouveau paramètre, sans la nécessité de gérer et de le stocker avec javascript; à chaque requête, le serveur invalide le jeton et génère un nouveau et l'envoie au client --> prévenir replay-attaque avec un seul jeton.

Lorsque le client reçoit un code d'état HTTP 401 non autorisé réponse de toutes les Api REST, l'angle de contrôleur de nettoyer les cookies et rediriger l'utilisateur vers la page de connexion.

Devrais-je envisager d'autres aspects? Est-il préférable de stocker le jeton à l'intérieur d'un nouveau cookie ou dans localStorage?
Des conseils sur la façon de générer un unique fort jeton?

Modification (amélioration):

  • J'ai décidé d'utiliser l'algorithme HMAC-SHA256 comme générateur de jeton de session, avec 20 minutes de validité. Je la génération aléatoire d'32byte GUID, joindre un horodatage et de calculer le HACHAGE SHA256 en fournissant un 40 octets de la clé. Il est tout à fait impossible d'obtenir des collisions depuis le jeton de validité est tout à fait minime.
  • Cookie sera domaine et le chemin d'accès attributs pour augmenter la sécurité.
  • Pas de multi-connexions sont autorisées.
  • Vous avez déjà semblent être, mais juste pour faire comprendre à quelqu'un d'autre - toujours utiliser le protocole https sinon, le nom d'utilisateur/mot de passe sera envoyé en texte brut.
  • J'ai une question peut être simple. Quand vous dites client reçoit un code d'état HTTP 401 de repos, vous êtes le nettoyage et la redirection vers la page de connexion. Donc quelque part dans votre code, vous aurez une sorte de condition if pour la réponse.statut 401. Maintenant en mode de débogage nous pouvons la changer, comment gérez-vous cela? Ou est-il une possibilité que n'importe quel pirate peut utiliser un plug-in de changement de statut de la réponse http du code?
  • Vous ne pouvez rien faire sur le côté client. Vous pouvez modifier l'état http 401 à 200 à l'état http et qu'? Vous pouvez l'ingénierie inverse l'angle de code et d'atteindre une page qui va faire une demande à un service rest qui réplique avec un autre 401 🙂 la chose La plus importante est de sécuriser le côté serveur et rendre difficile ou impossible pour un attaquant d'appel reste WS avec un faux session ou sans session. J'ai donc le manipuler par la vérification de la session sur tous les reste WS et de répondre à la ressource que si la session est valide.
InformationsquelleAutor StarsSky | 2014-01-01