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

如何使用Azure Java SDK实现az account get-access-token命令功能?

使用Azure Java SDK获取指定资源的访问令牌

核心依赖

先确保项目引入Azure身份验证核心SDK的依赖,以Maven为例:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.12.0</version> <!-- 建议使用最新稳定版 -->
</dependency>

实现方案

1. 复用当前环境身份(与az cli上下文对齐)

DefaultAzureCredential会自动适配当前环境的身份源(比如az cli已登录账户、环境变量、托管身份等),是最通用的方案:

import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.core.credential.AccessToken;
import com.azure.core.credential.TokenRequestContext;

public class AccessTokenFetcher {
    public static void main(String[] args) {
        // 对应az命令中--resource参数的目标资源ID
        String targetResource = "api://xxxxx.microsoft.com/YYYY/ZZZZ";
        
        DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
        
        // Azure AD v2端点要求格式为 {resourceId}/.default,等价于v1端点的resource参数
        TokenRequestContext requestContext = new TokenRequestContext()
                .addScopes(targetResource + "/.default");
        
        // 同步获取令牌,异步场景可改用subscribe()处理
        AccessToken accessToken = credential.getToken(requestContext).block();
        
        System.out.println("Access Token: " + accessToken.getToken());
        System.out.println("过期时间: " + accessToken.getExpiresAt());
    }
}

2. 仅复用az cli登录身份

如果只想严格使用当前az cli的登录账户,可直接用AzureCliCredential:

import com.azure.identity.AzureCliCredential;
import com.azure.core.credential.AccessToken;
import com.azure.core.credential.TokenRequestContext;

public class CliAccessTokenFetcher {
    public static void main(String[] args) {
        String targetResource = "api://xxxxx.microsoft.com/YYYY/ZZZZ";
        
        AzureCliCredential cliCredential = new AzureCliCredential();
        
        TokenRequestContext requestContext = new TokenRequestContext()
                .addScopes(targetResource + "/.default");
        
        AccessToken accessToken = cliCredential.getToken(requestContext).block();
        
        System.out.println("Access Token: " + accessToken.getToken());
    }
}

关键注意点

  • 必须确保az cli已完成登录(执行过az login),否则上述凭据类无法获取有效身份。
  • /.default后缀是Azure AD v2端点的要求,用于匹配v1端点的resource参数逻辑,不能省略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:07:37