Authentication

程序重啟後 Jenkins PWAuth 不起作用

  • February 12, 2021

我在 Ubuntu 18.04 伺服器上執行 Jenkins(目前為 v2.134,始終從 Jenkins Debian/Ubuntu 儲存庫更新)。它被配置為使用pwauth外掛對系統帳戶進行身份驗證。

這是pwauth外掛的配置部分(通過更改 GUI 中的設置生成):

 <securityRealm class="hudson.plugins.pwauth.PWauthSecurityRealm" plugin="pwauth@0.4">
   <pwauthPath>/usr/sbin/pwauth</pwauthPath>
   <whitelist></whitelist>
   <enableParamAuth>false</enableParamAuth>
   <idPath>/usr/bin/id</idPath>
   <groupsPath>/usr/bin/groups</groupsPath>
   <catPath>/bin/cat</catPath>
   <grepPath>/bin/grep</grepPath>
 </securityRealm>

它使用矩陣授權策略,具有一個名為jenkinsadmins具有完全權限的組(下面的配置也是通過更改 GUI 中的設置生成的)。為了允許使用者登錄 Jenkins,我們只需將他們添加到這個 Unix 組:

 <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
   <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create:jenkinsadmins</permission>
   <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete:jenkinsadmins</permission>
   <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:jenkinsadmins</permission>
   <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update:jenkinsadmins</permission>
   <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View:jenkinsadmins</permission>
   <permission>hudson.model.Computer.Build:jenkinsadmins</permission>
   <permission>hudson.model.Computer.Configure:jenkinsadmins</permission>
   <permission>hudson.model.Computer.Connect:jenkinsadmins</permission>
   <permission>hudson.model.Computer.Create:jenkinsadmins</permission>
   <permission>hudson.model.Computer.Delete:jenkinsadmins</permission>
   <permission>hudson.model.Computer.Disconnect:jenkinsadmins</permission>
   <permission>hudson.model.Hudson.Administer:jenkinsadmins</permission>
   <permission>hudson.model.Hudson.Read:jenkinsadmins</permission>
   <permission>hudson.model.Item.Build:jenkinsadmins</permission>
   <permission>hudson.model.Item.Cancel:jenkinsadmins</permission>
   <permission>hudson.model.Item.Configure:jenkinsadmins</permission>
   <permission>hudson.model.Item.Create:jenkinsadmins</permission>
   <permission>hudson.model.Item.Delete:jenkinsadmins</permission>
   <permission>hudson.model.Item.Discover:jenkinsadmins</permission>
   <permission>hudson.model.Item.Move:jenkinsadmins</permission>
   <permission>hudson.model.Item.Read:jenkinsadmins</permission>
   <permission>hudson.model.Item.ViewStatus:anonymous</permission>
   <permission>hudson.model.Item.ViewStatus:jenkinsadmins</permission>
   <permission>hudson.model.Item.Workspace:jenkinsadmins</permission>
   <permission>hudson.model.Run.Delete:jenkinsadmins</permission>
   <permission>hudson.model.Run.Update:jenkinsadmins</permission>
   <permission>hudson.model.View.Configure:jenkinsadmins</permission>
   <permission>hudson.model.View.Create:jenkinsadmins</permission>
   <permission>hudson.model.View.Delete:jenkinsadmins</permission>
   <permission>hudson.model.View.Read:jenkinsadmins</permission>
   <permission>hudson.scm.SCM.Tag:jenkinsadmins</permission>
   <permission>org.jenkins.ci.plugins.jobimport.JobImportAction.JobImport:jenkinsadmins</permission>
 </authorizationStrategy>

問題是每次我重新啟動 Jenkins(包括在伺服器重新啟動、Jenkins 更新或更改外掛後自動重啟)時,我都無法再記錄它 - Jenkins 告訴我“使用者名或密碼無效”。

但是,我知道此配置確實有效,因為我可以進入config.xml並更改<useSecurity>false禁用所有登錄要求(並重新啟動),然後返回設置並重新應用這些設置,在這種情況下它會立即提示我登錄我的使用者名和密碼被接受!

我檢查了日誌,但沒有發現任何相關內容。

我也知道它pwauth本身工作正常,因為我可以以 Jenkins 使用者身份登錄到 shell 並pwauth手動執行,它可以按預期工作。

我怎樣才能弄清楚為什麼這個配置似乎只在伺服器重新啟動之前才有效?

我再次測試,從 Jenkins v2.202 開始,它工作正常。我沒有更改任何我知道的設置,並且我在最近幾個版本的更改日誌中看不到任何內容,但可能是有一個錯誤被意外修復。

我在使用較新的 v2.263.4 時遇到了同樣的問題。我能夠通過在預設預期位置創建指向 pwauth 的符號連結來解決它:/usr/local/bin/pwauth。似乎在重新啟動時,Jenkins 在工廠預設路徑而不是自定義使用者指定的路徑中搜尋 pwauth。似乎是一個錯誤。

引用自:https://serverfault.com/questions/923571