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

基于已有凭据,Node.js API如何通过API方式绕过Azure AD SAML登录?

解决方案:利用Azure AD生成Bearer令牌访问SAML保护的服务

明确答复:可以通过Azure AD的OAuth 2.0客户端凭据流(Client Credentials Flow)生成Bearer令牌,以此替代SAML登录完成服务访问,完全符合你要求的令牌/API方案。

核心逻辑

SAML和OAuth 2.0都是Azure AD原生支持的身份认证协议,你可基于已有的证书凭据,通过客户端凭据流直接获取访问令牌,无需走SAML交互式登录流程。此流程中,你的Node.js API作为Azure AD中的服务主体(Service Principal),用证书向Azure AD请求令牌,再以该Bearer令牌访问目标受保护服务。

Node.js实现步骤

  1. Azure AD侧配置

    • 将你持有的证书PEM文件上传到对应服务主体的证书列表中;
    • 确保该服务主体被授予目标服务的应用权限(而非委托权限,因为客户端凭据流无用户上下文),目标服务需在Azure AD中完成应用注册并配置好对应的API范围。
  2. 代码实现令牌获取与服务调用
    使用@azure/msal-node库完成认证流程,示例代码如下:

    const { ConfidentialClientApplication } = require('@azure/msal-node');
    const fetch = require('node-fetch');
    
    // 配置参数
    const msalConfig = {
      auth: {
        clientId: '<你的服务主体Client ID>',
        authority: 'https://login.microsoftonline.com/<你的Azure AD租户ID>',
        clientCertificate: {
          thumbprint: '<你的证书指纹>',
          privateKey: '<私钥PEM完整内容,需保留首尾标识行>'
        }
      }
    };
    
    const cca = new ConfidentialClientApplication(msalConfig);
    
    // 获取Bearer令牌
    async function acquireAccessToken() {
      const tokenRequest = {
        scopes: ['<目标服务的API范围,格式如https://your-service-domain/.default>']
      };
    
      try {
        const response = await cca.acquireTokenByClientCredential(tokenRequest);
        return response.accessToken;
      } catch (err) {
        console.error('令牌获取失败:', err);
        throw err;
      }
    }
    
    // 调用受保护服务
    async function callProtectedApi() {
      const token = await acquireAccessToken();
      const apiResponse = await fetch('<目标服务API地址>', {
        headers: {
          'Authorization': `Bearer ${token}`
        }
      });
    
      if (!apiResponse.ok) {
        throw new Error(`服务请求失败,状态码: ${apiResponse.status}`);
      }
      return await apiResponse.json();
    }
    
    // 执行调用
    callProtectedApi().then(res => console.log('服务响应:', res)).catch(err => console.error(err));
    
  3. 目标服务兼容性验证
    确保目标受SAML保护的服务支持Azure AD的OAuth 2.0 Bearer令牌认证——多数集成Azure AD的服务默认支持双协议;若目标服务仅支持SAML,可在Azure AD的目标服务应用注册中,通过「公开API」选项卡配置API范围,开启OAuth 2.0认证支持。

关键注意事项

  • 证书需为Azure AD支持的PEM/PFX格式,私钥若有密码需在配置中补充password字段;
  • 服务主体的权限需配置为应用权限,并完成管理员同意;
  • 令牌默认有效期1小时,msal-node会自动处理令牌缓存与刷新逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:10:52