Azure Active Directory 集成最新动态

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

无论您是构建 Web API、移动前端还是传统的桌面应用程序,身份和访问管理始终都是软件开发中基础且核心的一部分。Azure 提供了一个很好的平台来简化您的应用程序开发流程,因为它不仅提供了基于云的身份服务,还与 Azure 生态系统的其他部分深度集成。Spring Security 通过强大的抽象和可扩展的接口简化了基于 Spring 的应用程序的安全性。但是,尽管 Spring 框架功能强大,但它并没有针对特定的身份提供商进行定制。Azure Spring Boot 启动器 for Azure Active Directory 是微软和 VMware 共同努力的结果,旨在提供将您的应用程序连接到 Azure AD 租户并使用 Azure Active Directory 保护资源 API 的最佳方式。例如,在某些情况下,您可能希望针对多个资源服务器进行授权,只需在应用程序配置中包含多个授权客户端即可轻松实现。

要开始使用 Azure Spring Boot 启动器 for Azure Active Directory,请将您的应用程序连接到 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

在您的控制器中获取OAuth2AuthorizedClient

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

有关更多详细信息,请参阅我们的示例项目

让我们看看启动器中的一些最新增强功能。

Web 应用程序

与 Microsoft API 集成

身份平台提供 Microsoft API 来与许多知名的 Microsoft SaaS 应用程序交互。例如,使用图形 API 与 Office 365 交互,使用 Azure DevOps 与 Azure DevOps 服务器交互,以及使用 Azure Batch 在云中调度 HPC 应用程序。要使用图形 API,首先配置您的application.yml

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

然后在您的控制器中获取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 中,资源服务器是使用令牌保护底层资源的应用程序。在此版本中,我们添加了对 Audience 和 Issuer 的验证,以确保尊重预期的受众和颁发者。有关详细信息,请参阅资源服务器示例项目

代表用户流程与 Spring 资源服务器

当您的应用程序使用令牌调用 API A,而 API A 又调用 API B 时,在访问 API B 之前需要另一个令牌。OAuth 2.0 提供了一种“代表用户”(OBO)流程,旨在处理这种常见场景。使用 Azure Spring Boot 启动器 for Azure Active Directory,您可以委派用户身份请求并在请求链中进行传播。

有关详细信息,请参阅带有 OBO 的资源服务器示例项目

其他值得注意的更改

包 ID 更改

为了与其他 Azure SDK 保持一致,从 3.x 版本开始,Azure Spring Boot 启动器的包 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 社区所有即将举办的活动。

查看全部