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

如何在.NET Core 2(Sustainsys)中添加含公钥的.cer文件

在ASP.NET Core 2中配置AD FS身份验证并导入.cer公钥文件

我刚踩过类似的坑,老MVC里Web.config那套简单配置到ASP.NET Core里确实得换个思路,给你一步步说清楚怎么弄:

核心思路

ASP.NET Core的AD FS身份验证中间件(比如WsFederation)不像老版本那样直接支持配置文件里指定证书文件名,得手动加载.cer文件,然后把它添加到验证中间件的SigningKeys集合里——这就是你看到帖子里说的操作,具体步骤如下:

1. 加载.cer公钥文件

首先在你的项目里把.cer文件放好(比如根目录下的Certificates文件夹),然后在Startup.cs里加载它:

// 从配置文件读取证书路径(推荐,方便不同环境切换)
var certPath = Configuration.GetValue<string>("AdfsSettings:SigningCertPath");
// 或者直接写死路径(测试用)
// var certPath = Path.Combine(Directory.GetCurrentDirectory(), "Certificates/YourADFSCert.cer");

// 加载证书
var signingCertificate = new X509Certificate2(certPath);

如果用配置文件的话,记得在appsettings.json里加对应的配置项:

"AdfsSettings": {
  "SigningCertPath": "Certificates/YourADFSCert.cer"
}

2. 配置AD FS验证时添加到SigningKeys

接下来在ConfigureServices方法里配置WsFederation身份验证,把加载好的证书添加到SigningKeys集合中:

services.AddAuthentication(WsFederationDefaults.AuthenticationScheme)
    .AddWsFederation(options =>
    {
        // 基础AD FS配置
        options.MetadataAddress = "https://your-adfs-server/FederationMetadata/2007-06/FederationMetadata.xml";
        options.Wtrealm = "your-app-realm-uri"; // 比如https://yourapp.com

        // 关键步骤:把加载的证书加入签名密钥集合
        options.SigningKeys.Add(new X509SecurityKey(signingCertificate));
    });

关于你提到的SigningServiceCertificate

这个属性确实只有getter,因为它是中间件自动从SigningKeys或者Metadata里提取的有效签名证书,不需要你手动设置——只要你把证书加到SigningKeys里,中间件会自动识别并赋值给它,所以不用纠结这个属性的设置问题。

额外注意点

  • 如果是部署到IIS,要确保应用池的运行账户有读取.cer文件的权限,不然会加载失败。
  • 如果你能正常访问AD FS的Metadata地址,其实中间件会自动从Metadata里获取签名证书,但测试环境下如果Metadata不可达,手动加载证书就是最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:00:14