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

如何在后端应用中通过AuthnRequest获取Azure AD的SAML2(SSO)

问题解答

1. 后端应用能否直接获取SAML2断言?

标准的SAML 2.0 WebSSO流程基于浏览器上下文设计,依赖浏览器与Azure AD的会话Cookie完成身份验证。纯后端服务(无浏览器参与)默认无法直接触发完整SAML流程获取断言,但有两种替代方案:

  • ROPC流(Resource Owner Password Credentials):仅适用于遗留应用场景,需在Azure AD中为企业应用开启此流。通过向Azure AD的OAuth2令牌端点发送包含用户名、密码、客户端ID等参数的请求,获取ID Token后,可结合企业应用的SAML配置转换为SAML断言(部分场景需额外处理)。但此方式因明文传递密码存在安全风险,Azure AD仅允许特定合规场景使用,不推荐作为主流方案。
  • 切换到OIDC/OAuth2流程:后端场景更适配OIDC的客户端凭据流或授权码流(带PKCE),直接获取JWT格式令牌,比SAML更适合服务端交互场景。

2. AuthnRequest能否传入用户名、密码、clientId参数?

  • 用户名/密码:SAML 2.0的AuthnRequest规范不支持直接传入用户名和密码,身份验证过程由Azure AD(身份提供商)全权负责,明文传递密码也违反安全最佳实践。若需指定用户身份,可通过NameIDPolicy字段设置预期的用户标识符格式,但仍需Azure AD完成身份验证环节。
  • clientId:对应SAML中的Issuer字段,必须在AuthnRequest中指定(即你的应用实体ID),Azure AD通过该字段识别对应的企业应用,从而返回正确的SAML断言。

3. 已登录Azure AD应用,如何在企业应用中获取SAML2断言?

确保企业应用完成SAML SSO配置后,按以下步骤操作:

  • 配置企业应用的SAML设置:在Azure AD门户找到目标企业应用,进入「单点登录」→「SAML」,配置实体ID、回复URL、登录URL等基本信息,保存后获取Azure AD的SAML元数据或登录端点。
  • 生成并发起AuthnRequest:
    • 推荐使用成熟的SAML库(如.NET的Sustainsys.Saml2、Java的OpenSAML)生成签名后的AuthnRequest,避免手动构造XML出错;
    • 将用户重定向到Azure AD的SAML登录端点,携带Base64编码并压缩后的SAMLRequest参数;
  • 接收并解析SAML断言:Azure AD验证用户身份后,会将SAML断言POST到你的应用的回复URL,应用解析断言中的用户信息即可完成登录流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:14:57