Azure Active Directory 整合最新進展

工程 | Andy Clement | 2021 年 1 月 13 日 | ...

無論您是構建 Web API、移動前端還是傳統的桌面應用程式,身份和訪問管理始終是編寫軟體時最核心的基礎部分。Azure 提供了一個出色的平臺來民主化您的應用程式開發之旅,因為它不僅提供基於雲的身份服務,還與 Azure 生態系統的其餘部分深度整合。Spring Security 透過強大的抽象和可擴充套件的介面,使保護基於 Spring 的應用程式變得容易。然而,儘管 Spring 框架功能強大,但它並非為特定的身份提供商量身定製。Azure Active Directory 的 Azure Spring Boot Starter 是 Microsoft 和 VMware 合作的成果,旨在提供將您的應用程式連線到 Azure AD 租戶並使用 Azure Active Directory 保護資源 API 的最佳方式。舉例來說,在某些場景中,您可能希望針對多個資源伺服器進行授權,您只需在應用程式配置中包含多個授權客戶端即可輕鬆實現。

要開始使用 Azure Active Directory 的 Azure Spring Boot Starter,請將您的應用程式連線到 Azure AD 租戶,並在您的 application.yml 中包含以下配置:

azure:
  activedirectory:
    tenant-id: xxxxxx-your-tenant-id-xxxxxx
    client-id: xxxxxx-your-client-id-xxxxxx
    client-secret: xxxxxx-your-client-secret-xxxxxx
    authorization-clients:
      graph:
        scopes:
            - https://graph.microsoft.com/User.Read
            - https://graph.microsoft.com/Directory.AccessAsUser.All

在您的 Controller 中獲取 OAuth2AuthorizedClient

@GetMapping("/graph")
@ResponseBody
public String graph(
    @RegisteredOAuth2AuthorizedClient("graph") OAuth2AuthorizedClient client
) {
// Now you can use the access token to access a graph URI
}

有關更多詳細資訊,請參閱我們的示例專案

讓我們看看 Starter 最近的一些增強功能

Web 應用程式

與 Microsoft API 整合

身份平臺提供 Microsoft API,可與許多知名的 Microsoft SaaS 應用程式進行互動。例如,使用 Graph API 與 Office 365 互動,使用 Azure DevOps 與 Azure DevOps 伺服器通訊,以及使用 Azure Batch 在雲中排程 HPC 應用程式。要使用 Graph API,首先配置您的 application.yml

azure:
  activedirectory:
    authorization-clients:
      graph:
        scopes:
            - https://graph.microsoft.com/User.Read
            - https://graph.microsoft.com/Directory.AccessAsUser.All

然後,在您的 Controller 中獲取 OAuth2AuthorizedClient

您可以根據需要逐步批准您的應用程式對資源和 API 的訪問。當您希望對訪問管理擁有更精細的控制時,這種行為是可取的,而不是預先授予所有範圍。要在 Web 應用程式中使用增量同意,請配置您的 application.yml

azure:
  activedirectory:
    authorization-clients:
      arm:
        on-demand: true
        scopes: https://management.core.windows.net/user_impersonation

當應用程式嘗試獲取相應的 OAuth2AuthorizedClient 時,會觸發增量同意。也可以透過訪問 URL:/login/oauth2/code/{authorization-client} 來觸發。

與 AAD 整合以實現登出

在您的配置屬性中新增 azure.activedirectory.post-logout-redirect-uri,當用戶執行登出時,您的應用程式將自動登出所有活動會話,然後將使用者重定向到 logout-redirect-uri

有關更多詳細資訊,請參閱此 Web 應用程式示例專案。(此示例包括所有 3 種場景)

資源伺服器

AAD 保護的資源伺服器

在 OAuth 2.0 中,資源伺服器是使用令牌保護底層應用程式的應用程式。在此版本中,我們添加了對受眾和頒發者的驗證,以確保預期的受眾和頒發者得到尊重。有關詳細資訊,請參閱資源伺服器示例專案

使用 Spring 資源伺服器的代表流 (On Behalf-of-flow)

當您的應用程式使用令牌呼叫 API A,而 API A 又呼叫 API B 時,在訪問 API B 之前需要一個不同的令牌。OAuth 2.0 提供了一種 On-Behalf-Of (OBO) 流,旨在處理這種常見場景。藉助 Azure Active Directory 的 Azure Spring Boot Starter,您可以委託使用者身份請求並將其傳播到請求鏈中。

有關詳細資訊,請參閱帶 OBO 示例的資源伺服器專案

其他值得注意的更改

包 ID 更改

為了與其餘 Azure SDK 保持一致,從 3.x 版本開始,Azure Spring Boot starters 的包 ID 已從 azure-[startername]-spring-boot 重新命名為 azure-spring-boot-[startername]

最新版本

3.0.0 版本已釋出,並支援 Spring Boot 2.2.x 和 2.3.x。

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有