You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Spring Boot应用访问Azure Key Vault方法及服务主体创建报错排查

Java Spring Boot 访问 Azure Key Vault 实现指南

一、代码实现内容

1. 引入依赖

在pom.xml中添加Spring Cloud Azure的Key Vault依赖:

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
    <version>4.11.0</version> <!-- 使用最新稳定版 -->
</dependency>

2. 配置应用参数

在application.yml(或application.properties)中配置Key Vault连接信息:

spring:
  cloud:
    azure:
      keyvault:
        uri: https://<your-key-vault-name>.vault.azure.net/
        credential:
          client-id: <service-principal-client-id>
          client-secret: <service-principal-client-secret>
        profile:
          tenant-id: <azure-ad-tenant-id>

3. 读取Key Vault中的密钥

通过@Value注解直接注入密钥值:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SecretController {

    @Value("${your-secret-name}")
    private String secretValue;

    @GetMapping("/secret")
    public String getSecret() {
        return secretValue;
    }
}

也可以通过AzureKeyVaultSecretService主动获取密钥:

import com.azure.spring.cloud.keyvault.secrets.AzureKeyVaultSecretService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class SecretReader {

    private final AzureKeyVaultSecretService secretService;

    @Autowired
    public SecretReader(AzureKeyVaultSecretService secretService) {
        this.secretService = secretService;
    }

    public String getSecret(String secretName) {
        return secretService.getSecret(secretName).getValue();
    }
}

二、Azure订阅权限配置

1. 配置Key Vault访问策略

  • 登录Azure门户,进入目标Key Vault,选择「访问策略」>「添加访问策略」。
  • 在「密钥权限」中勾选所需权限(如获取、列出,根据业务需求选择)。
  • 在「选择主体」中搜索并选择目标Service Principal,完成添加。

2. 订阅层面权限(可选)

如果需要Service Principal管理Key Vault资源(如创建、删除),需在订阅或资源组的IAM中为其分配Key Vault参与者或参与者角色:

  • 进入订阅/资源组的「访问控制(IAM)」>「添加角色分配」。
  • 选择对应角色,指定Service Principal为被分配者,完成配置。

三、创建Service Principal报错解决

报错Directory permission is needed for the current user to register the application.是因为当前Azure用户没有Azure AD应用注册权限,解决方法如下:

  • 方法1:提升用户角色
    让Azure AD管理员为当前用户分配应用程序注册参与者、应用程序管理员或全局管理员角色(优先选择最小权限的应用程序注册参与者)。
  • 方法2:修改Azure AD租户设置
    管理员登录Azure门户,进入「Azure Active Directory」>「用户设置」>「应用注册」,将「用户可以注册应用程序」设置为「是」,允许普通用户注册应用。
  • 方法3:通过管理员账号创建SP
    如果无法获取权限,可请求Azure AD管理员使用其账号创建Service Principal,再将权限分配给你的用户使用。

内容的提问来源于stack exchange,提问作者BPT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:15:28