共用方式為


使用代理驗證,在本機開發期間向 Azure 服務驗證 JavaScript 應用程式

代理驗證會使用系統驗證代理程式來收集使用者認證,以驗證應用程式。 系統驗證代理程式是在使用者電腦上執行的應用程式,可管理所有連線帳戶的驗證交握和權杖維護。

代理驗證提供下列優點:

  • 啟用單一 Sign-On (SSO): 可讓應用程式簡化使用者使用 Microsoft Entra ID 進行驗證的方式,並保護 Microsoft Entra ID 重新整理權杖免於外流和濫用。
  • 增強安全性: 許多安全性增強功能隨代理程式一起提供,而不需要更新應用程式邏輯。
  • 增強的功能支援: 在代理的幫助下,開發人員可以存取豐富的作業系統和服務功能。
  • 系統整合: 使用代理程式的應用程式可隨插即用,並內建帳戶選擇器,讓使用者快速選擇現有帳戶,而不是一遍又一遍地重新輸入相同的憑證。
  • 代幣保護: 確保重新整理權杖是裝置系結的,並可讓應用程式取得裝置系結的存取權杖。 請參閱 權杖保護

Windows 提供稱為 Web 帳戶管理員 (WAM) 的驗證代理程式。 WAM 可讓身分識別提供者 (例如 Microsoft Entra ID) 原生插入 OS,並為應用程式提供安全的登入服務。 代理驗證可讓應用程式執行互動式登入認證所允許的所有作業。

支持個人Microsoft帳戶和公司或學校帳戶。 在支援的 Windows 版本上,預設的瀏覽器型 UI 會取代為更流暢的驗證體驗,類似於內建的 Windows 應用程式。

Linux 會使用 Linux 的 Microsoft 單一登入作為 其驗證代理程式。

設定應用程式以進行代理驗證

若要在應用程式中啟用代理驗證,請遵循下列步驟:

  1. Azure 入口網站中,流覽至 Microsoft Entra ID ,然後選取左側功能表上的 [ 應用程式註冊 ]。

  2. 選取您的應用程式的註冊,然後選取 [驗證]

  3. 透過平台設定,將適當的重新導向 URI 新增至您的應用程式註冊:

    1. [平台組態] 底下,選取 [+ 新增平臺]。

    2. [設定平台] 底下,選取應用程式類型 (平台) 的磚以設定其設定,例如 行動和桌面應用程式

    3. [自訂重新導向 URI] 中,輸入您平台的下列重新導向 URI:

      平台 重定向 URI
      Windows 10+ 或 WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth 對於未簽署的應用程式
      msauth.{bundle_id}://auth 針對已簽署的應用程式
      Linux https://login.microsoftonline.com/common/oauth2/nativeclient

      將 或 {your_client_id} 取代{bundle_id}為應用程式註冊的 [概觀] 窗格中的 [應用程式 (用戶端) 識別碼]。

    4. 選取[],然後設定[]。

    若要深入瞭解,請參閱 將重新導向 URI 新增至應用程式註冊

  4. 回到 [驗證] 窗格的 [進階設定] 底下,針對 [允許公用用戶端流程] 選取 []。

  5. 選取 [儲存] 以套用變更。

  6. 若要為特定資源授權應用程式,請流覽至該特定資源,選取 API 許可權,然後啟用 Microsoft Graph 和其他您想要存取的資源。

    這很重要

    當您第一次登入時,您也必須是租戶的系統管理員,才能授予應用程式同意。

指派角色

若要使用代理驗證成功執行應用程式程式碼,請使用 Azure 角色型存取控制 (RBAC) 授與使用者帳戶許可權。 將適當的角色指派給相關 Azure 服務的使用者帳戶。 例如:

  • Azure Blob 儲存體:指派 儲存體帳戶資料參與者 角色。
  • Azure 金鑰保存庫:指派 金鑰保存庫秘密官員 角色。

如果已指定應用程式,則必須為 user_impersonation Access Azure 記憶體 設定 API 許可權(上一節的步驟 6)。 此 API 許可權可讓應用程式在登入期間授與同意之後,代表登入使用者存取 Azure 記憶體。

實作程序代碼

Azure 身分識別程式庫支援使用 InteractiveBrowserCredential 進行代理驗證。 例如,若要在 InteractiveBrowserCredential Node.js 主控台應用程式中使用 SecretClient 向 Azure 金鑰保存庫進行驗證,請遵循下列步驟:

  1. 安裝 @azure/identity@azure/identity-broker 套件:

    npm install @azure/identity @azure/identity-broker
    
  2. 使用代理程式選項建立 InteractiveBrowserCredential 的執行個體,並註冊原生代理程式外掛程式:

    import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
    import { nativeBrokerPlugin } from "@azure/identity-broker";
    
    // Register the native broker plugin for brokered authentication
    useIdentityPlugin(nativeBrokerPlugin);
    
    // Use InteractiveBrowserCredential with broker for interactive or silent authentication
    
    // On Windows: Uses Windows Authentication Manager (WAM) - you'll be prompted to sign in
    // On macOS: Opens a browser window for authentication, since the broker flow isn't currently supported.
    // On Linux: Uses Microsoft Single Sign-on (SSO) for Linux.
    
    const credential = new InteractiveBrowserCredential({
        brokerOptions: {
            enabled: true,
            useDefaultBrokerAccount: true,
            // For Node.js console apps, we need to provide an empty buffer for parentWindowHandle
            parentWindowHandle: new Uint8Array(0),
        },
    });
    

小提示

在適用於 JavaScript 的 Azure SDK GitHub 存放庫中檢視 完整的範例應用程式程式碼

在上述範例中,屬性 useDefaultBrokerAccount 會設定為 true,這會選擇使用預設系統帳戶加入無訊息的代理驗證流程。 這樣,用戶就不必重複選擇同一個帳戶。 如果無訊息,代理式驗證失敗,或 useDefaultBrokerAccount 設定為 falseInteractiveBrowserCredential 則回復至互動式代理式驗證。

下列螢幕擷取畫面顯示替代互動式代理驗證體驗:

螢幕擷取畫面顯示使用已啟用代理程式的 InteractiveBrowserCredential 執行個體來驗證使用者時的 Windows 登入體驗。

下列影片顯示替代的互動式代理驗證體驗:

動畫 gif,顯示使用已啟用代理程式的 InteractiveBrowserCredential 執行個體驗證使用者時的 Linux 登入體驗。