8
votes

Comment Heroku stocke-t-il son authentification sur son application de ligne de commande?

Je suppose que lorsque vous installez d'abord le gemme Heroku et que vous êtes invité à mettre votre nom d'utilisateur / mot de passe, il envoie ce nom d'utilisateur / mot de passe à son serveur pour valider.

Comment puis Heroku (ou toute autre application de ligne de commande pour cette matière) stocke correctement ce jeton validé sur le système de fichiers, puis la transmet ensuite lorsqu'il exécute d'autres commandes telles que «Heroku Create 'pour validation?

J'utilise Heroku comme exemple ici parce que c'est le seul que je puisse penser à ce que je voudrais faire ce que j'aimerais faire pour le moment.


1 commentaires

En regardant auth.rb (suggestion de Fixlr ci-dessous), je réalise que Heroku n'envoie pas seulement à votre clé de cendre publique, mais aussi de stocker un jeton API. Pourquoi ont-ils deux formes d'authentification distinctes? Ne serait-il pas suffisant?


4 Réponses :


3
votes

Heroku utilise votre connexion une fois pour déterminer qui vous êtes, puis envoie votre clé SSH publique à leur serveur, alors lorsque vous appuyez sur leur repo Git, ils savent qui vous êtes ( docs ).

D'autres applications gérer les choses différemment. Certains créent un . fichier dans votre annuaire de domicile contenant un jeton API.


0 commentaires

1
votes

Cela dépend de la mise en œuvre.

Un moyen courant de faire quelque chose comme ceci est de stocker une paire de clé générée automatiquement dans un fichier temporaire. La clé publique est transmise au serveur et la clé privée est cryptée avec une clé de session symétrique (qui expire après une courte durée, ou lors de la déconnexion).

Le champ d'autorisations de ce fichier est défini sur R -------- (lecture seule par l'utilisateur.)

/ TMP est généralement utilisé car de nombreux systèmes d'exploitation le nettoient périodiquement. (Certains utilisent même un périphérique en mémoire.)

Les implémentations peuvent différer, par exemple, les touches SSH sont généralement générées une seule fois, non cryptées avec une clé de session (mais peuvent expirer) et sont stockées dans ~ / .SSH.


0 commentaires

2
votes

Le gemme Heroku stocke vos informations d'identification dans ~ / .heroku / informations d'identification et le code associé est dans lib / heroku / auth.rb .


1 commentaires

Ce n'est plus correct, Taytay a la bonne réponse ci-dessous



10
votes

Heroku époque maintenant comment ils stockent leur authentification pour le héroku cli dans de très bons détails ici: https://devcenter.heroku.com/articles/authentication

extraits pertinents:

Stockage de jeton API

L'outil de ligne de commande Heroku stocke des jetons API dans la norme UNIX Fichier ~ / .netrc. Le format NETRC est bien établi et bien soutenu par divers outils de réseau sur UNIX. Avec des informations d'identification de Heroku stockées dans Ce fichier, d'autres outils tels que CURL peuvent accéder à l'API Heroku avec peu ou pas de travail supplémentaire. xxx


1 commentaires

Heroku a également publié un rubygem pour la manutention .netrc fichiers: Github.com/heroku/netrc