heroku如何在其命令行应用程序中存储其身份验证?
我假设当你第一次安装heroku gem并提示你输入你的用户名/密码时,它会将该用户名/密码发送到它的服务器来验证。heroku如何在其命令行应用程序中存储其身份验证?
那么heroku(或其他任何命令行应用程序)如何将安全验证令牌安全地存储在文件系统中,然后在运行其他命令(如“heroku create”)时将它们一起传输以进行验证?
我在这里使用的是heroku作为例子,因为它是我能想到的唯一一个我现在想做的事情。
现在的Heroku阐述了他们是如何存储Heroku的CLI的身份验证令牌在相当不错的细节在这里: https://devcenter.heroku.com/articles/authentication
相关摘录:
API令牌存储
Heroku的命令 - 在线工具在标准Unix 文件〜/ .netrc中存储API令牌。 netrc格式已经完善并且由unix上的各种网络工具支持得很好 。使用存储在 此文件中的Heroku凭证,其他工具(如curl)可以通过 很少或不需要额外的工作来访问Heroku API。
cd ~
ls .netrc
ls: .netrc: No such file or directory
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
$ cat .netrc
machine api.heroku.com
login [email protected]
password c4cd94da15ea0544802c2cfd5ec4ead324327430
machine code.heroku.com
login [email protected]
password c4cd94da15ea0544802c2cfd5ec4ead324327430
下有正确的答案Heroku还发布了一个处理'.netrc'文件的rubygem:https://github.com/heroku/netrc – 2016-09-19 16:49:11
Heroku使用您的登录信息来确定您是谁,然后将您的公用ssh密钥发送到他们的服务器,因此当您推送到他们的git repo时,他们知道您是谁(docs)。
其他应用程序处理不同的事情。有些在您的主目录中创建一个包含API令牌的文件.<something>
。
这取决于实施。
这样做的一种常见方式是将自动生成的密钥对存储在临时文件中。公钥被传递给服务器,私钥用对称会话密钥加密(在短时间后或在注销时过期)。
此文件的权限字段设为r --------(仅由用户读出。)
/TMP通常使用,因为许多操作系统它清理干净周期性。 (有些甚至使用内存设备。)
实现可能会有所不同,例如,SSH密钥通常只生成一次,未使用会话密钥加密(但可能会过期),并存储在〜/ .ssh中。
看着auth.rb(以下fixlr的建议),我知道Heroku的不只是发送您的公共密钥的灰,还存储的API令牌。为什么他们有两种不同的身份验证形式。没有人足够吗? – 2012-02-05 02:51:38