在 Azure 容器應用程式中實作驗證和授權

已完成

Azure 容器應用程式提供內建的驗證和授權功能,以最少或無程式碼方式保護您的外部輸入啟用容器應用程式。 適用於容器應用程式的內建驗證功能,可透過提供現成的驗證與同盟識別提供者來節省您的時間與精力,讓您專注於應用程式的其餘部分。

  • Azure 容器應用程式可讓您存取各種內建驗證提供者。
  • 內建的驗證功能不需要任何特定語言、SDK、安全性專業知識,甚至不需要您撰寫任何程式碼。

此功能只能與 HTTPS 搭配使用。 確定在容器應用程式的輸入設定中停用 allowInsecure。 您可以設定容器應用程式進行驗證,無論是否限制存取網站內容和 API。

  • 若僅要將應用程式存取限制為已驗證的使用者,請將其 [限制存取] 設定設為 [需要驗證]
  • 若要驗證但不限制存取,請將其 [限制存取] 設定設為 [允許未驗證的存取]。

身分識別提供者

容器應用程式採用同盟身分識別,協力廠商識別提供者會在其中為您管理使用者身分識別及驗證流程。 預設可用的識別提供者如下:

Provider 登入端點 做法指引
Microsoft 身分識別平台 /.auth/login/aad Microsoft 身分識別平台
Facebook /.auth/login/facebook Facebook
GitHub /.auth/login/github GitHub
Google /.auth/login/google Google
Twitter /.auth/login/twitter Twitter
任何 OpenID Connect 提供者 /.auth/login/<providerName> OpenID Connect

當您使用上述其中一個提供者,就可使用登入端點進行使用者驗證,及驗證來自提供者的驗證權杖。 您可以為使用者提供不限數量的提供者選項。

功能架構

驗證和授權中介軟體元件是平台的功能,可在應用程式中的每個複本上以 sidecar 容器的形式執行。 啟用時,每個傳入的 HTTP 要求都會通過安全性層,再由您的應用程式進行處理。

Diagram showing requests being intercepted by a sidecar container interacting with identity providers before allowing traffic to the app container.

平台中介軟體可為您的應用程式處理下列事項:

  • 使用指定的識別提供者驗證使用者和用戶端
  • 管理已驗證的工作階段
  • 將身分識別資訊插入 HTTP 要求標頭

驗證和授權模組會在與您應用程式程式碼隔離的個別容器中執行。 因為安全性容器不執行內含式,所以無法直接與特定的語言架構相整合。 不過,您應用程式所需的相關資訊會在要求標頭中提供。

驗證流程

所有提供者的驗證流程皆相同,差別僅在是否要使用提供者的 SDK 登入:

  • 不使用提供者 SDK (伺服器導向流程或伺服器流程):應用程式會將同盟登入委派給容器應用程式。 委派通常是瀏覽器應用程式的情況,其無法向使用者展示提供者登入頁面。

  • 使用提供者 SDK (用戶端導向的流量或用戶端流量):應用程式會以手動方式將使用者登入提供者,然後將驗證權杖提交給 App Service 進行驗證。 此方法通常是無瀏覽器應用程式的情況,其無法向使用者展示提供者登入頁面。 例如,使用提供者的 SDK 讓使用者登入的原生行動應用程式。