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

如何在Azure SSO登录后获取可调用微软Azure接口的JWT令牌

Azure SSO登录后获取JWT的可行方案

你现有SSO流程未返回JWT,核心原因是身份验证请求未配置正确的权限范围(scope)和响应类型,按以下步骤操作即可拿到调用Azure API所需的JWT:

1. 提前完成应用权限配置

  • 进入Azure AD应用注册页,找到你集成的自有应用,打开「API权限」页,添加目标Azure API对应的权限:调用Microsoft Graph就加User.Read等对应权限,调用Azure资源管理API就加https://management.azure.com/user_impersonation权限,配置完成后按需授予管理员同意。

2. 调整SSO认证请求参数

修改现有SSO登录请求的两个核心参数:

  • 响应类型(response_type):如果使用授权码流,设置为code;如果使用隐式流,设置为id_token token,即可直接返回访问令牌(即JWT)
  • 权限范围(scope):必须包含目标Azure API的资源标识+对应权限,比如调用Graph就加https://graph.microsoft.com/User.Read,调用Azure管理API就加https://management.azure.com/user_impersonation,同时保留原有openid profile email等基础SSO所需的scope即可。

3. 不同集成场景的获取方式

  • 如果使用微软官方MSAL库集成SSO(推荐方案):登录完成后直接调用acquireTokenSilent方法,传入对应scope即可拿到可用JWT,浏览器端JS示例代码如下:
const tokenRequest = {
    scopes: ["https://management.azure.com/user_impersonation"]
};
msalInstance.acquireTokenSilent(tokenRequest)
    .then(response => {
        const jwtToken = response.accessToken;
        // 此处即可拿到JWT用于后续Azure API调用
    })
    .catch(error => {
        // 静默获取失败时触发交互获取逻辑
        msalInstance.acquireTokenPopup(tokenRequest)
            .then(response => {
                const jwtToken = response.accessToken;
            })
    })
  • 如果是自行实现OIDC认证流:拿到授权码后,向Azure AD的token端点https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token发起POST请求,携带授权码、client_id、client_secret、redirect_uri、grant_type=authorization_code以及对应scope,接口返回内容中的access_token字段就是你需要的JWT。

4. 可用性校验

拿到JWT后可自行解码校验payload中的aud字段,确认和目标Azure API的资源标识一致后,即可放在请求头Authorization: Bearer {JWT_TOKEN}中发起Azure API调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:15:02