2014-06-08 5 views
-1

J'utilise actuellement expressjs avec node.js comme serveur de repos pour mon site web. Actuellement, les utilisateurs peuvent se connecter à mon site Web et démarrer certaines actions via ui. Ils veulent automatiser ce genre de choses et je cherche des moyens d'y parvenir. Certaines des façons que je peux penser est:Authentification basée sur ssh dans expressjs

  1. Créer une nouvelle demande qui peut prendre connecter creds dans le cadre des paramètres reuest et exécuter les actions souhaitées les. Mes utilisateurs devraient enregistrer leur mot de passe comme texte de douleur pour les automatisations qui ne me semble pas correct. Connectez-vous en utilisant ssh de la même façon que bitbucket/github prend notre clé publique ssh et libère le codepush sans écrire le mot de passe à chaque fois. Comment puis-je implémenter ce type d'installation. Mes utilisateurs veulent exécuter chaque fois qu'ils déploient dans la machine de test. Donc, ils vont mettre mon script dans le script de redémarrage du serveur.

Si je dois ajouter une nouvelle authentification basée sur ssh, y a-t-il des modules npm qui peuvent m'aider avec l'implémentation? J'utilise le code mean.io de plaque de chaudière et le login est actuellement basé sur le protocole de connexion par défaut, où je sauvegarde le mot de passe haché et le compare lors de la connexion.

Répondre

2

Je pense que traiter des paires de clés publiques-privées est probablement plus difficile que cela en vaut la peine. Peut-être vous pouvez aller avec une troisième option:

Autoriser les utilisateurs à générer des clés API à partir de votre interface Web. Les clés seront des chaînes "longues" générées aléatoirement (GitHub utilise une chaîne hexadécimale longue de 40 caractères pour ses clés). Ils peuvent être utilisés pour faire des demandes d'API à la place d'un mot de passe dans une paire nom d'utilisateur-mot de passe. Pour plus de sécurité, autorisez les utilisateurs à limiter l'utilisation d'une clé à une certaine adresse IP (plage).

De même, assurez-vous que votre application est servie via HTTPS si ce n'est déjà fait.

flux Exemple:

  1. utilisateur tim génère une clé API aléatoire sur votre site (aisjd8auasdjsd80j43j).
  2. tim souhaite faire une demande à votre API. Dans la demande, tim définit un en-tête d'autorisation:

    GET /api/v1/list-all HTTP/1.1 
    Host: example.com 
    X-API-Auth: tim:aisjd8auasdjsd80j43j 
    ... 
    
  3. Votre API vérifie l'en-tête X-API-Auth, vérifier si tim possède la clé API donnée.
  4. Votre API renvoie les informations demandées en cas de succès.

En outre, il peut être intéressant d'utiliser à l'aide HTTP basic authentication au lieu de l'en-tête personnalisée X-API-Auth, comme je l'ai fait dans l'exemple ci-dessus. Je crois qu'il serait légèrement plus facile dans les outils de ligne de commande comme curl de faire des requêtes d'authentification de base HTTP, plutôt que de définir un en-tête personnalisé.

Questions connexes