簡體   English   中英

heroku如何在其命令行應用程序中存儲其身份驗證?

[英]How does heroku store its authentication on its command-line app?

我假設當您第一次安裝heroku gem時,系統會提示您輸入您的用戶名/密碼,它會將該用戶名/密碼發送到其服務器進行驗證。

然后,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: me@example.com
Password:
$ cat .netrc
machine api.heroku.com
  login me@example.com
  password c4cd94da15ea0544802c2cfd5ec4ead324327430
machine code.heroku.com
  login me@example.com
  password c4cd94da15ea0544802c2cfd5ec4ead324327430

Heroku使用您的登錄一次來確定您的身份,然后將您的公共ssh密鑰發送到他們的服務器,這樣當您推送他們的git倉庫時,他們就知道您是誰( docs )。

其他應用以不同的方式處理 有些人在您的主目錄中創建一個包含API令牌的.<something>文件。

heroku gem將您的憑據存儲在〜/ .heroku / credentials中 ,相關代碼位於lib / heroku / auth.rb中

這取決於實施。

執行此類操作的常用方法是將自動生成的密鑰對存儲在臨時文件中。 公鑰被傳遞到服務器,私鑰使用對稱會話密鑰加密(在短時間后或在注銷時到期)。

此文件的權限字段設置為r --------(由用戶只讀)。

通常使用/ tmp,因為許多操作系統會定期清理它。 (有些人甚至使用內存設備。)

實現可能不同,例如,SSH密鑰通常只生成一次,不使用會話密鑰加密(但可能會過期),並存儲在〜/ .ssh中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM