2017-03-07 95 views
0

我有一個項目,它具有對私有Git存儲庫的Node依賴項。我需要能夠不被提示輸入密碼,或允許SSH連接運行npm install,所以我用,我在我的package.json在GitHub上創建一個訪問令牌:GitHub訪問令牌具有對私有存儲庫的只讀訪問

"dependencies": { 
    "sass-theme": "git+https://[token]:[email protected]/MyOrg/sass-theme.git#v1.0.2", 
    "node-sass": "^4.5.0" 
    } 

該項目是與許多其他人共享,所以顯然我不想讓我的令牌控制在源代碼中。我知道我可以在GitHub上創建只讀部署密鑰,但我相信這需要其他開發人員導入SSH密鑰以在本地構建項目。

是否可以創建一個可以共享但具有隻讀訪問權限的訪問令牌來克隆存儲庫?

+0

相關http://stackoverflow.com/questions/42634896/maven-build-step-to-install-node-package-from-private-repository –

回答

2

最直接的方式,我能想到的創建令牌提供只讀私人回購操作則

  1. 有誰僅有讀取訪問指定專用回購 用戶(理想,沒有多少人)
  2. 作爲該用戶/有用戶創建個人身份驗證令牌以「回購」

這將是最好的範圍,如果他們沒有有其他的回購訪問其他機構單位/回購,因爲這個範圍本質上給了t可以完全控制用戶控制的任何回購。

我知道在企業解決方案中,我們可能會這樣做,也許系統ID,我不確定在github.com實際上可以提供什麼類型的用戶帳戶,但我會首先檢查服務條款。

+1

這似乎很簡單。結合起來,我們可能需要在每個開發人員的計算機上設置一個包含密鑰的環境變量(以便使其不受源代碼管理)。 –

+0

沒錯,因爲令牌可能對其他某個將其添加爲貢獻者的項目做了惡作劇,並且您可以使用該令牌進行本地登錄。 –

1

如果你認爲這是一個壞主意,把你的憑據在你的源代碼(如!你應該),那麼你有幾種選擇:

  1. 保持它在私人GitHub庫託管,但添加這些幾十的其他人作爲此回購協議的合作者(只讀訪問)。

  2. 將其託管在私人GitHub倉庫中,但作爲組織擁有並將這些人員添加到組織中。

  3. 將它作爲私有npm模塊發佈。

  4. 將其發佈到私有的npm註冊表中。

  5. 將依賴項包含在需要它的程序的源代碼中。

最後一個是基本上像包括使用該模塊所以當然這不是漂亮的原代碼node_modules。託管你自己的npm註冊表不是微不足道的,但你可以用這種方式自動添加用戶。發佈私有npm模塊不是免費的。維護一個充滿應該能夠訪問你的回購的人的組織是令人討厭的。

請記住一件事:如果您與多人分享您的憑證,請期待每個人最終都能訪問它,這只是時間問題。證書的範圍可能有限,它可以是隻讀部署密鑰或具有受限訪問權限的機器用戶,但是如果它是分發的,它將最終像以往一樣泄漏,特別是當您與數十人分享時。保留可訪問代碼的人員名單要好得多,並且可以使用GitHub API自動保持該列表的最新狀態。

我絕不會建議在項目的源代碼中分發證書,不管這些證書提供的訪問權限有多大。

+0

1)甚至會提示協作者輸入密碼或允許SSH連接。如果可能,我想避免這種情況。 2)這是它目前的設置。見3-5)你已經談到爲什麼這些都不是理想的,我同意。 –