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

如何为.NET MVC网站生成适用于AD FS/Ping AD的FederationMetadata.xml文件(替代已停用的WIF SDK方案)

生成WS-Federation应用的FederationMetadata.xml方案(少代码改动版)

我来给你分享几个实用的方案,既能搞定FederationMetadata.xml的生成需求,又能尽量少改动现有代码:

方案1:手动生成元数据文件(零代码改动)

FederationMetadata本质是符合标准的XML文件,只要填对关键参数就能直接用。你可以复制下面的模板,替换掉占位符后保存为FederationMetadata.xml:

<?xml version="1.0" encoding="utf-8"?>
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://你的应用根域名">
  <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol http://schemas.xmlsoap.org/ws/2005/02/trust http://schemas.xmlsoap.org/ws/2004/09/policy">
    <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
    <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://你的应用根域名/signin-wsfed" index="0" isDefault="true"/>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://你的应用根域名/signout-wsfed"/>
    <KeyDescriptor use="signing">
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>
          <X509Certificate>你的证书Base64编码(去掉首尾的证书标记)</X509Certificate>
        </X509Data>
      </KeyInfo>
    </KeyDescriptor>
  </SPSSODescriptor>
</EntityDescriptor>

关键参数说明:

  • entityID:你的应用唯一标识,一般填应用的根域名即可
  • AssertionConsumerService的Location:WS-Federation的回调地址,旧MVC应用里应该已经配置过这个路径(通常是/signin-wsfed)
  • 证书部分:如果应用之前有用于签名的证书,提取其Base64编码填入;没有的话可以生成自签名证书,或者有些AD允许暂时不提供(但不推荐)

方案2:给现有MVC应用启用自动元数据端点(仅改配置)

旧的.NET MVC 2013应用基于WIF,只要在web.config里加几行配置,就能让应用自动生成并暴露元数据端点:

  1. 先确保web.config里有WIF的配置节声明(如果没有就加上):
<configSections>
  <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
  <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
  1. 添加元数据生成配置:
<system.identityModel>
  <federationConfiguration>
    <metadata generationEnabled="true" />
  </federationConfiguration>
</system.identityModel>
  1. 确保WS-Federation的基础配置正确(替换为新AD的地址):
<system.identityModel.services>
  <federationConfiguration>
    <wsFederation passiveRedirectEnabled="true" issuer="https://新AD的地址/adfs/ls/" realm="https://你的应用根域名" reply="https://你的应用根域名/signin-wsfed" requireHttps="true" />
    <cookieHandler requireSsl="true" />
  </federationConfiguration>
</system.identityModel.services>
  1. 重启IIS或运行应用,访问https://你的应用根域名/FederationMetadata/2007-06/FederationMetadata.xml,就能获取自动生成的元数据,直接保存即可。

方案3:VS新应用的元数据获取方法

你用VS创建的新WS-Federation应用,元数据不会生成物理文件,而是通过动态端点暴露的:

  • 启动应用后,在浏览器访问https://localhost:你的端口/FederationMetadata/2007-06/FederationMetadata.xml
  • 把页面里的XML内容复制保存为FederationMetadata.xml,就能给新AD用了

注意事项:

  • 所有URL尽量用HTTPS,AD几乎都要求HTTPS端点
  • 如果用自签名证书,需要把证书导入到新AD的信任存储中,否则会验证失败
  • 新AD的配置要和你填的realm、entityID等参数保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:02:36