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