分享方式:


選擇 Azure DevOps 的驗證方法

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019

這很重要

建議針對與 Azure DevOps Services 整合的新應用程式使用Microsoft Entra ID 驗證。 個人存取令牌應謹慎使用,且只有在無法使用Microsoft Entra ID 時才使用。

本文可協助您為 Azure DevOps 整合選擇最適當的驗證方法。 Microsoft Entra ID 之類的新式驗證方法可提供增強的安全性,並建議用於新的應用程式。

備註

OAuth 2.0 和Microsoft Entra ID 驗證僅適用於 Azure DevOps Services,而不是 Azure DevOps Server。 針對內部部署案例,請使用 用戶端連結庫、Windows 驗證或 個人存取令牌

依場景的驗證方法

根據您的應用程式類型和需求選擇適當的驗證方法:

應用程式類型 描述 範例 建議的方法 程式碼範例
Web/桌面應用程式 使用目前架構的互動式應用程式 React 應用程式、.NET 桌面應用程式 使用 MSAL Microsoft Entra ID OAuth 樣本
服務/背景應用程式 在沒有使用者互動的情況下執行的應用程式 Azure Functions,背景服務 服務主體和受控識別 樣本
舊版用戶端應用程式 使用用戶端函式庫的現有應用程式 使用 Azure DevOps .NET 連結庫的控制台應用程式 使用 OAuth 的用戶端連結庫 樣本
無界面/命令列介面應用程式 非互動式命令行工具 建置腳本、自動化工具 裝置程式碼流程 樣本
Azure DevOps 擴充功能 在 Azure DevOps 內執行的延伸模組 自定義儀錶板小工具,工作項目表單 VSS Web 擴充功能 SDK 樣本
Azure DevOps Server 應用程式 本地端部署 Azure DevOps Server 整合 自定義伺服器擴充功能 用戶端連結庫 或 Windows 驗證 樣本
個人/即席腳本 個人用途的快速腳本 PowerShell 腳本,curl 指令 個人存取令牌 範例

用戶入門建議

針對新的應用程式

  • Microsoft Entra ID 驗證開始,以獲得最佳安全性和未來的相容性。
  • 在服務對服務的情境中使用服務主體或受控識別
  • 避免生產應用程式中的個人存取令牌。

針對現有的應用程式

  • 規劃 從個人存取令牌移轉至 Microsoft Entra ID 驗證。
  • 請考慮 Azure DevOps 改進的 驗證移轉時程表
  • 針對安全性最佳做法檢閱您目前的驗證方法。

針對 Azure DevOps Server

  • 盡可能搭配 Windows 驗證使用 用戶端程式庫
  • 某些 Azure DevOps Server 案例可以接受個人存取令牌。
  • 規劃未來的 Azure DevOps Services 移轉,以利用新式驗證。

常見問題

問:我應該使用 Microsoft Entra ID 的 OAuth 還是 個人存取權杖?

答:針對以下用途使用 Microsoft Entra ID OAuth

  • 新的應用程式和整合
  • 需要強固安全性的生產工作負載
  • 需要企業身分識別整合的應用程式
  • 符合合規性需求的長期專案

僅針對下列專案使用個人存取令牌

  • 個人腳本和臨時任務
  • 移轉規劃期間的舊版應用程式
  • 無法使用新式驗證的 Azure DevOps Server 案例

問:我應該使用服務主體或使用者委派進行驗證嗎?

答:在下列情況下 使用服務主體或受控識別

  • 建置獨立運作的應用程式(背景服務、自動化)
  • 建立不需要使用者互動的應用程式
  • 實作服務對服務通訊
  • 建置 CI/CD 管線或自動化工作流程

在下列情況下使用使用者委派(OAuth 取得使用者同意)

  • 建置代表人類用戶運作的應用程式
  • 建立互動式應用程式,讓使用者使用自己的認證登入
  • 實作需要使用者特定許可權的功能
  • 建置需要尊重用戶個人訪問許可權的應用程式

問:如何向 Azure DevOps Server 和 Azure DevOps Services 進行驗證?

答: 最佳做法:建立個別的驗證路徑:

  • Azure DevOps Services:使用 Microsoft Entra ID OAuth
  • Azure DevOps Server:搭配 Windows 驗證或 PAT 使用用戶端連結庫

requestContext使用 來偵測服務類型,並套用適當的驗證方法。

問:為什麼我的服務帳戶無法存取 Azure DevOps API?

答:常見問題:

  • 服務帳戶未「具體化」:服務帳戶需要互動式登入許可權或適當的Microsoft Entra ID 註冊
  • 許可權不足:確定服務帳戶具有適當的 Azure DevOps 許可權
  • 驗證方法:使用服務主體或受控識別,而不是嘗試驗證為服務帳戶

問:如何從 PAT 遷移至新式驗證?

答:執行下列步驟:

  1. 識別應用程式中目前的 PAT 使用量
  2. 選擇適當的新式方法
    • Microsoft Entra ID OAuth 使用者委派案例
    • 服務間情境的服務主體
  3. 使用我們的移轉範例更新驗證碼
  4. 拿掉 PAT 相依性之前先徹底測試
  5. 監視並驗證 新的驗證方法

後續步驟

選擇您的驗證實作:

針對新的應用程式:

針對服務應用程式:

針對個人腳本: