使用 Microsoft Entra ID 在 Azure Container Apps 中啟用驗證和授權
本文說明如何設定 Azure Container Apps 的驗證,讓您的應用程式以 Microsoft 身分識別平台 作為驗證提供者登入使用者。
容器應用程式驗證功能可以自動使用 Microsoft 身分識別平台 建立應用程式註冊。 您也可以使用您或目錄管理員個別建立的註冊。
選項 1:自動建立新的應用程式註冊
此選項的設計目的是要讓啟用驗證變得簡單,只需要幾個步驟。
登入 Azure 入口網站,然後瀏覽至應用程式。
選取左側功能表中的 [驗證]。 選取 [新增識別提供者]。
在 [識別提供者] 下拉式清單中選取 [Microsoft]。 預設會選取建立新註冊的選項。 您可以變更註冊的名稱或支援的帳戶類型。
客戶端密碼會建立並儲存為 容器應用程式中的秘密 。
如果您要為此應用程式設定第一個識別提供者,系統會提示您輸入 Container Apps 驗證設定 一節。 否則,您會繼續執行下一個步驟。
這些選項會決定您的應用程式如何回應未經驗證的要求,而默認選項會重新導向所有要求,以使用此新提供者登入。 您現在可以立即自定義此行為,或稍後從主要驗證畫面調整這些設定,方法是選擇 [驗證設定] 旁的 [編輯]。 若要深入了解這些選項,請參閱驗證流程。
(選擇性)選取 [ 下一步:許可權 ],並新增應用程式所需的任何範圍。 這些會新增至應用程式註冊,但您也可以稍後加以變更。
選取 [新增]。
您現在已準備好在應用程式中使用 Microsoft 身分識別平台進行驗證。 提供者會列在 [驗證] 畫面上。 您可以從這裡編輯或刪除此提供者設定。
選項 2:個別使用已建立的現有註冊
您也可以手動註冊應用程式以進行 Microsoft 身分識別平台、自定義註冊,以及使用註冊詳細數據設定 Container Apps 驗證。 當您想要從定義應用程式以外的其他 Microsoft Entra 租使用者使用應用程式註冊時,此方法很有用。
在容器應用程式的 Microsoft Entra 識別碼中建立應用程式註冊
首先,您會建立應用程式註冊。 如此一來,當您在容器應用程式中設定驗證時,請收集稍後所需的下列資訊:
- 用戶端識別碼
- 租用戶識別碼
- 用戶端密碼 (選擇性)
- 應用程式識別碼 URI
若要註冊應用程式,請執行下列步驟:
登入 Azure 入口網站,搜尋並選取 [容器應用程式],然後選取您的應用程式。 請記下您應用程式的 URL。 您可以使用它來設定 Microsoft Entra 應用程式註冊。
從入口網站功能表中,選取 [Microsoft Entra ID],然後移至 [應用程式註冊] 索引卷標,然後選取 [新增註冊]。
在 [註冊應用程式] 頁面上,輸入您應用程式註冊的 [名稱]。
在 [ 重新導向 URI] 中,選取 [Web ],然後輸入
<app-url>/.auth/login/aad/callback
。 例如:https://<hostname>.azurecontainerapps.io/.auth/login/aad/callback
。選取註冊。
建立應用程式註冊之後,請複製 [應用程式 (用戶端) 識別碼] 和 [目錄 (租用戶) 識別碼] 以供稍後使用。
選取驗證。 在 [隱含授與和混合式流程] 下,啟用標識符令牌,以允許從 Container Apps 連線 使用者登入。 選取 [儲存]。
(選擇性)選取 [ 商標]。 在 [首頁 URL] 中,輸入容器應用程式的 URL,然後選取 [ 儲存]。
選取 [公開 API],然後選取 [應用程式識別符 URI] 旁的 [設定]。 標識碼值會在應用程式作為資源使用時唯一識別您的應用程式,以允許要求令牌授與存取權。 值也會作為您所建立範圍的前置詞。
針對單一租用戶應用程式,您可以使用預設值,其格式為
api://<application-client-id>
。 您也可以根據租用戶的其中一個已驗證網域來指定更具可讀性的 URI (例如https://contoso.com/api
)。 針對多租使用者應用程式,您必須提供自定義 URI。 若要深入了解應用程式識別碼 URI 的已接受格式,請參閱應用程式註冊最佳做法參考。值會自動儲存。
選取新增範圍。
- 在 [新增範圍] 中 ,[應用程式標識符 URI ] 是您在上一個步驟中設定的值。 選取 [儲存並繼續] 。
- 在 [範圍名稱] 中,輸入 user_impersonation。
- 在文字方塊中,輸入您希望使用者在同意頁面上看到的同意範圍名稱和描述。 例如,輸入 Access <application-name>。
- 選取新增範圍。
(選擇性)若要建立客戶端密碼,請選取 [憑證與秘密客戶端密碼>] [用戶端密碼>][新增客戶端密碼]。 輸入描述和到期日,然後選取 [新增]。 複製頁面上顯示的客戶端密碼值,因為網站不會再次顯示給您。
(選擇性) 若要新增多個 [回覆 URL],請選取 [驗證]。
在您的容器應用程式中啟用 Microsoft Entra 識別碼
登入 Azure 入口網站,然後瀏覽至應用程式。
選取左側功能表中的 [驗證]。 選取 [新增識別提供者]。
在 [識別提供者] 下拉式清單中選取 [Microsoft]。
針對 [應用程式註冊類型],您可以選擇在此目錄中挑選現有的應用程式註冊,以自動收集必要的應用程式資訊。 如果您的註冊來自另一個租使用者,或您沒有檢視註冊對象的許可權,請選擇 [提供現有應用程式註冊的詳細數據]。 針對此選項,您必須填寫下列組態詳細資料:
欄位 描述 應用程式 (用戶端) 識別碼 使用應用程式註冊的 [應用程式 (用戶端) 識別碼]。 用戶端密碼 使用您在應用程式註冊中產生的用戶端秘密。 使用客戶端密碼時,會使用混合式流程,而應用程式會傳回存取權和重新整理令牌。 未設定用戶端密碼時,會使用隱含流程,且只會傳回識別碼權杖。 提供者會傳送令牌,並儲存在 EasyAuth 令牌存放區中。 簽發者 URL 使用 <authentication-endpoint>/<TENANT-ID>/v2.0
,並將驗證端點取代<為您雲端環境的驗證端點>(例如,“https://login.microsoftonline.com"針對全域 Azure,也會將 TENANT-ID> 取代為建立應用程式註冊所在的目錄(租用戶)標識碼。< 這個值可用來將使用者重新導向至正確的 Microsoft Entra 租使用者,以及下載適當的元數據,以判斷適當的令牌簽署密鑰和令牌簽發者宣告值,例如。 對於使用 Azure AD v1 的應用程式,請在 URL 中省略/v2.0
。允許的權杖對象 所設定的 [應用程式 (用戶端) 識別碼]一律會被隱含地視為允許的對象。 如果此值指的是雲端或伺服器應用程式,而且您想要接受來自用戶端容器應用程式的驗證令牌(可以在標頭中 X-MS-TOKEN-AAD-ID-TOKEN
擷取驗證令牌),請在這裡新增 用戶端應用程式的應用程式(用戶端)標識碼 。用戶端密碼會儲存為 容器應用程式中的 秘密。
如果這是為應用程式設定的第一個識別提供者,您也會收到容器應用程式驗證設定一節的提示。 否則,您會繼續執行下一個步驟。
這些選項會決定您的應用程式如何回應未經驗證的要求,而預設選取項目會重新導向所有要求,以使用這個新提供者登入。 您可以立即變更自訂此行為,或稍後從主要 [驗證] 畫面選擇 [驗證設定] 旁的 [編輯],以調整這些 [設定]。 若要深入了解這些選項,請參閱驗證流程。
選取 [新增]。
您現在已準備好在應用程式中使用 Microsoft 身分識別平台進行驗證。 提供者會列在 [驗證] 畫面上。 您可以從這裡編輯或刪除此提供者設定。
設定用戶端應用程式以存取您的容器應用程式
在上一節中,您已註冊容器應用程式來驗證使用者。 在本節中,您會註冊原生用戶端或精靈應用程式。 然後,他們可以代表使用者或自己要求存取由容器應用程式公開的 API。 如果您只想要驗證使用者,則不需要完成本節中的步驟。
原生用戶端應用程式
您可以註冊原生用戶端,以代表登入的使用者要求存取容器應用程式的 API。
在 Azure 入口網站 中,選取 [Active Directory> 應用程式註冊>[新增註冊]。
在 [註冊應用程式] 頁面上,輸入您應用程式註冊的 [名稱]。
在 [重新導向 URI] 中,選取 [公用用戶端 (行動和傳統型)] 並輸入 URL
<app-url>/.auth/login/aad/callback
。 例如:https://<hostname>.azurecontainerapps.io/.auth/login/aad/callback
。注意
若是 Microsoft Store 應用程式,請改為使用套件 SID作為 URI。
選取 建立。
建立應用程式註冊之後,複製 [應用程式 (用戶端) 識別碼] 的值。
選取 [API 許可權>][新增許可權>我的 API]。
選取您稍早為容器應用程式建立的應用程式註冊。 如果您沒有看到應用程式註冊,請確定您已在容器應用程式的 Microsoft Entra ID 中建立應用程式註冊中新增user_impersonation範圍。
在 [委派權限] 底下,選取 [user_impersonation],然後選取 [新增權限]。
在本節中,您已設定原生用戶端應用程式,可代表使用者要求存取您的容器應用程式。
精靈用戶端應用程式 (服務對服務呼叫)
您的應用程式可以取得令牌,以代表本身呼叫裝載在容器應用程式中的 Web API(而非代表使用者)。 此案例適用於未使用已登入使用者來執行工作的非互動式精靈應用程式。 其會使用標準 OAuth 2.0 用戶端認證授與。
- 在 Azure 入口網站 中,選取 [Active Directory> 應用程式註冊>[新增註冊]。
- 在 [ 註冊應用程式] 頁面中,輸入 精靈應用程式註冊的 [名稱 ]。
- 若為精靈應用程式,您不需要重新導向 URI,因此可以保留空白。
- 選取 建立。
- 建立應用程式註冊之後,複製 [應用程式 (用戶端) 識別碼] 的值。
- 選取 [憑證與秘密>] [新增客戶端密碼>] [新增]。 複製頁面中顯示的客戶端密碼值。 它不會再次顯示。
您現在可以使用用戶端識別碼和用戶端密碼來要求存取權杖,方法是將 resource
參數設定為目標應用程式的應用程式識別碼 URI。 接著,產生的存取令牌可以使用標準 OAuth 2.0 授權標頭向目標應用程式呈現,而 Container Apps 驗證/授權會如往常驗證並使用令牌,以指出呼叫者(在此案例中不是使用者的應用程式)已經過驗證。
此程式可讓 Microsoft Entra 租使用者中的任何用戶端應用程式要求存取令牌,並驗證目標應用程式。 如果您也想要強制授權只允許特定用戶端應用程式,則必須調整組態。
- 在應用程式註冊指令清單中定義應用程式角色 ,此指令清單代表您想要保護的容器應用程式。
- 在應用程式註冊 (代表需要授權的用戶端) 上,選取 [API 權限]>[新增權限]>[我的 API]。
- 選取您稍早建立的應用程式註冊。 如果您沒有看到應用程式註冊,請確定您已新增應用程式角色。
- 在 [應用程式權限] 底下,選取您稍早建立的應用程式角色,然後選取 [新增權限]。
- 確實選取 [授與管理員同意],以授權用戶端應用程式要求權限。
- 類似於先前的案例(新增任何角色之前),您現在可以要求相同目標的
resource
存取令牌,而存取令牌包含roles
包含用戶端應用程式授權的應用程式角色的宣告。 - 在目標 Container Apps 程式代碼中,您現在可以驗證令牌中是否有預期的角色。 容器應用程式驗證層不會執行驗證步驟。 如需詳細資訊,請參閱存取使用者宣告。
在本節中,您已設定精靈用戶端應用程式,其可以使用自己的身分識別來存取容器應用程式。
處理已驗證的使用者
有關如何處理已驗證的使用者,請參閱下列指南以取得詳細資訊。