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

如何使用Azure Active Directory SSO结合SAML 2.0保护API

借助Azure AD SAML 2.0 SSO防护API的实操方案

SAML 2.0主要解决用户身份认证问题,而API安全防护需要结合令牌验证逻辑。下面是基于Azure AD的完整落地流程:

一、Azure AD端的核心配置

1. 注册两个应用实体

你需要在Azure AD中创建两个独立的应用注册:

  • SAML客户端应用:用户用来登录的前端/桌面/中间层应用,负责处理SAML认证流程。
  • 受保护的API应用:你要防护的API服务,用来定义权限范围并验证请求令牌。

2. 配置SAML客户端应用的单点登录

  • 进入Azure AD的「企业应用」,创建非库应用,切换到「单点登录」→「SAML」配置页:
    • 设置标识符(Entity ID)和回复URL(ACS URL)(即客户端接收SAML响应的地址)。
    • 下载Azure AD的SAML元数据文件(后续客户端验证签名会用到)。
    • 给这个客户端应用分配需要访问API的用户或安全组。

3. 为API应用配置权限范围

  • 打开API应用的「公开API」页面,添加自定义权限(比如命名为access_core_api),权限类型选「委派」(用于用户上下文访问)或「应用程序」(用于服务间无用户场景调用)。
  • 回到SAML客户端应用的「API权限」页面,添加刚才API应用的权限,记得点击「授予管理员同意」(否则普通用户无法获取对应权限)。

二、客户端应用:SAML登录+获取API访问令牌

客户端需要先完成SAML认证,再拿到Azure AD的OAuth2访问令牌才能合法调用API:

1. 实现SAML 2.0认证流程

用对应语言的成熟SAML库处理认证逻辑:

  • 向Azure AD的SAML端点发送AuthnRequest请求。
  • 接收Azure AD返回的SAML响应,用元数据里的公钥验证签名,提取用户身份信息。
  • 常用库:.NET用Microsoft.Identity.Web.Saml,Java用OpenSAML,Python用pysaml2。

2. 转换为API访问令牌

完成SAML登录后,客户端需要获取访问令牌:

  • 如果是用户上下文访问,用授权码流或者on-behalf-of流程(中间层应用场景)。
  • .NET代码示例:
    // 已完成SAML登录,获取用户的API访问令牌
    var scopes = new[] { "api://<你的API应用ClientID>/access_core_api" };
    var tokenAcquisition = serviceProvider.GetRequiredService<ITokenAcquisition>();
    var accessToken = await tokenAcquisition.GetAccessTokenForUserAsync(scopes);
    
  • 调用API时,把令牌放在请求头:Authorization: Bearer {accessToken}

三、API端:令牌验证与授权

API需要验证客户端传来的访问令牌,确保请求合法:

1. 集成Azure AD令牌验证库

用官方库快速实现验证逻辑:

  • .NET Core API:直接用Microsoft.Identity.Web
    // Program.cs中配置验证服务
    builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration)
        .AddInMemoryTokenCaches();
    
  • Python API:用msal库手动验证令牌的签名、受众和核心声明。

2. 保护API端点

在需要防护的控制器或方法上添加[Authorize]属性,自动拦截未授权请求。如果需要细粒度权限控制,还可以检查令牌中的scp(委派权限)或roles(应用权限)声明:

[Authorize(Roles = "ApiAdmin")]
[HttpGet("/admin/data")]
public IActionResult GetAdminData()
{
    // 仅拥有ApiAdmin角色的用户可访问此端点
    return Ok("Admin exclusive data");
}

四、强化安全的额外措施

  • 条件访问策略:在Azure AD中配置,比如要求MFA、限制IP范围、设备合规,只有符合条件的用户才能获取访问令牌。
  • 最小权限原则:客户端只请求必要的API权限,API根据令牌中的权限声明限制访问范围。
  • 严格SAML验证:客户端必须验证SAML响应的签名、issuer、受众、过期时间,防止伪造的认证响应。
  • 令牌生命周期管理:设置合理的令牌过期时间,客户端实现自动刷新逻辑,避免频繁重新登录。
  • 日志与监控:开启Azure AD日志和API访问日志,及时发现异常请求或认证行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:31:00