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

Angular中仅使用client_secret能否从Azure获取服务访问令牌?

核心结论

不可直接在Angular前端实现该需求。你找不到MSAL、ADAL对应方案的原因是,这类前端身份库本身就不支持纯客户端使用客户端凭证流(即仅用应用凭据而非用户身份获取令牌的流程),本质原因是Client Secret属于最高级别的敏感凭据,一旦写在前端代码中,任何用户都可以通过抓包、解压前端静态资源直接获取该密钥,进而冒用你的Azure应用权限,造成数据泄露、资源被盗刷等严重安全事故。

标准实现方案

你需要新增一个后端服务做中转代理,完整流程如下:

  • Angular前端仅向你自己的后端服务发起业务请求,不需要携带任何Azure相关凭据
  • 后端服务使用你持有的Client ID、Client Secret、Tenant ID、Scope,走Azure AD客户端凭证流请求访问令牌
  • 后端拿到令牌后调用目标Azure API,将结果处理后返回给Angular前端即可
后端令牌获取参考代码(Node.js示例)

如果你用Node.js做后端,可以直接用@azure/msal-node库实现令牌获取:

const msal = require('@azure/msal-node');

// 配置项替换为你自己的凭据
const msalConfig = {
  auth: {
    clientId: "YOUR_CLIENT_ID",
    authority: "https://login.microsoftonline.com/YOUR_TENANT_ID",
    clientSecret: "YOUR_CLIENT_SECRET"
  }
};

const confidentialClientApp = new msal.ConfidentialClientApplication(msalConfig);

const tokenRequestParams = {
  scopes: ["YOUR_TARGET_SCOPE"]
};

async function getAzureAccessToken() {
  const tokenResponse = await confidentialClientApp.acquireTokenByClientCredential(tokenRequestParams);
  return tokenResponse.accessToken;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:45:05