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

如何在.NET Core微服务中从ADFS获取SAML令牌

.NET Core中获取ADFS SAML令牌的适配方案

你的.NET Core微服务需要调用依赖SAML令牌的外部服务,现有.NET Standard的实现逻辑需要适配.NET Core环境,以下是具体方案:

原代码的适配说明

原代码依赖的WSTrustChannelFactory属于WSTrust协议实现,在.NET Core中需要通过NuGet引入相关组件,且部分API引用路径有调整,以下是修正后的可运行代码:

1. 安装必要NuGet包

需要安装两个核心包:

  • Microsoft.IdentityModel.Protocols.WSTrust:提供WSTrust协议相关的类型
  • System.ServiceModel.Primitives:提供EndpointAddress等WCF基础类型

2. 适配后的代码实现

using Microsoft.IdentityModel.Protocols.WSTrust;
using System.IdentityModel.Tokens;
using System.ServiceModel;
using System.ServiceModel.Security;

var stsEndpoint = "https://MyAdfsServer/adfs/services/trust/13/UsernameMixed";
var reliantPartyUri = "https://MyDomain/AppRoot/";

// 创建WSTrustChannelFactory,适配.NET Core
var factory = new WSTrustChannelFactory(
    new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
    new EndpointAddress(stsEndpoint));

factory.TrustVersion = TrustVersion.WSTrust13;

// 设置认证凭据
factory.Credentials.UserName.UserName = @"Domain\UserName";
factory.Credentials.UserName.Password = "Password";

// 可选:验证ADFS服务器证书(根据需求配置)
factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.ChainTrust;
// 如果需要指定证书指纹,可替换为以下配置
// factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.Custom;
// factory.Credentials.ServiceCertificate.Authentication.CustomCertificateValidator = new FingerprintCertificateValidator("你的证书指纹");

var rst = new RequestSecurityToken
{
    RequestType = RequestTypes.Issue,
    AppliesTo = new EndpointAddress(reliantPartyUri),
    KeyType = KeyTypes.Bearer,
};

using var channel = factory.CreateChannel();
var token = channel.Issue(rst) as GenericXmlSecurityToken;

var samlTokenXml = token?.TokenXml.OuterXml;

关键注意事项

  • 确认ADFS端点UsernameMixed是正确的,该端点支持用户名密码方式的WSTrust请求
  • KeyTypes.Bearer指定返回无密钥的承载令牌,符合大多数服务的调用需求
  • 证书验证部分:如果对方提供了证书指纹,可自定义证书验证器来强制验证ADFS服务器的证书指纹,避免中间人攻击

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:53:26