【问题标题】:How to create federation metadata XML for "Relying Party Trust" and "Claims Provider Trusts" for ADFS 2.0如何为 ADFS 2.0 的“依赖方信任”和“声明提供者信任”创建联合元数据 XML
【发布时间】:2015-01-19 19:17:00
【问题描述】:

我们的一个网络应用程序想与 ADFS 2.0 服务器连接以获取凭据令牌并据此检查用户角色。 ADFS 服务器管理员要求我们给他们一个联合元数据 XML 文件,让他们创建依赖方信任。我用谷歌搜索,只找到如何使用 URL 下载 ADFS 服务器的联合元数据 XML - https://[adfs server name]/federationmetadata/2007-06/federationmetadata.xml 但找不到任何指南来创建联合元数据 XML 以创建“信赖方信任”和“Claims Provider Trusts”。是否有创建这些元数据文件的工具?请分享一些关于如何创建的想法。

谢谢

回答我自己的问题:

我在http://www.microsoft.com/en-ca/download/details.aspx?id=4451WindowsIdentityFoundation-SDK-4.0 中找到了 Federation Utility 工具。

【问题讨论】:

  • 你能帮忙吗?您是如何使用此工具创建联合元数据的。我也试过这个工具。它要求提供 web.config 路径和 URI。之后有 3 个选项 1.没有 STS 2.创建新的 STS(禁用) 3.使用现有的 STS。但是为什么第二个选项被禁用了。
  • 使用第三个选项。输入您的应用程序 web.config 文件路径为 web.config 路径并使用 ADFS Server 的元数据 url
  • 请注意,手动将 RP 添加到 ADFS 很容易 - 不需要元数据。

标签: metadata adfs2.0 federation


【解决方案1】:

其实网址是

https://server/federationmetadata/2007-06/federationmetadata.xml

没有我知道的工具。

您可以使用Microsoft.IdentityModel.Protocols.WSFederation.Metadata 类或参考Generating Federation Metadata Dynamically

看看 “Thinktecture.IdentityServer.v2 / src / Libraries / Thinktecture.IdentityServer.Protocols / FederationMetadata”在Thinktecture.IdentityServer.v2

或者,如果您的应用程序使用 WIF,它位于元数据目录中。

更新:

在 WIF 中,除非您希望对令牌进行加密,否则您不需要证书。这对于 ADFS 方面来说更重要,因为它必须对令牌和应用程序进行签名。需要公钥来验证。

例子:

<?xml version="1.0" encoding="utf-8"?>
<EntityDescriptor ID="_5b6cd05c-a5e3-470d-a2fc-6c6f66633d1b" entityID="http://localhost/app/" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
    <RoleDescriptor xsi:type="fed:ApplicationServiceType" xmlns:fed="http://docs.oasis-open.org/wsfed/federation/200706" protocolSupportEnumeration="http://docs.oasis-open.org/wsfed/federation/200706" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <fed:ClaimTypesRequested>
            <auth:ClaimType Uri="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="true" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
            <auth:ClaimType Uri="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" Optional="true" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
        </fed:ClaimTypesRequested>
        <fed:TargetScopes>
            <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://localhost/app/</Address>
            </EndpointReference>
        </fed:TargetScopes>
        <fed:PassiveRequestorEndpoint>
            <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://localhost/app/</Address>
            </EndpointReference>
        </fed:PassiveRequestorEndpoint>
    </RoleDescriptor>
</EntityDescriptor>

其中 localhost\app\ 需要是您应用的 URL。注意结束斜线!

【讨论】:

  • 如何获取 ADFS 3.0 openId 连接的“ResourceUrl”?
【解决方案2】:

用于创建“重播方信任”的元数据 xml 不是 ADFS 联合元数据,而是 SP(Saml 颁发者)的元数据 xml。

【讨论】:

    【解决方案3】:

    对于创建 SAML RP 元数据,samltool.com 提供了一个基于 Web 的工具,可以提供帮助。除了联邦实用程序之外,我还没有找到用于 WS-Federation 的...

    我最近还发现了支持 AD FS / WS-Federation 的站点 rcFederation

    【讨论】:

      【解决方案4】:

      我最近不得不这样做,以前从未使用过 .Net 或 ADFS,并且只有我试图与之集成的服务器 (STS) 元数据 URL。我有一台基本的 Windows 10 PC,并试图将 Node.js webapp 设置为 RP。这就是我所做的:

      1. 在 Win 10 PC 上,转到控制面板 -> 程序和功能 -> 打开或关闭 Windows 功能 -> 启用 Windows Identity Foundation 3.5

      2. 已安装 Windows Identity Foundation SDK 4.0(由原作者引用)。

      3. 创建了一个基本的 Web.config 文件,其中包含:

        <?xml version="1.0" encoding="utf-8" ?>
        <configuration>
          <system.web>
        
          </system.web>
        </configuration>
        
      4. 在SDK安装目录中,找到了FedUtil.exe和FedUtilSampleUserInput.xml。示例文件解释了 FedUtil.exe 将要求的所有参数,这非常有帮助。

      5. 以管理员身份启动 FedUtil.exe(在文件资源管理器中右键单击),提供我刚刚创建的 Web.config 文件、webapp URL、服务器 (STS) 元数据 URL 作为“现有 STS”,以及选择创建新的默认证书。

      6. 瞧,一个 FederationMetadata.xml 文件已生成,我的 Web.config 文件已自动更新。

      7. 然后我取消注释更新后的 Web.config 文件中的某些声明类型并重新运行 FedUtil.exe,然后使用我需要的 STS 的其他声明类型更新我的 FederationMetadata.xml (例如,电子邮件、名字、姓氏)

      8. 将 FederationMetadata.xml 提供给 STS 管理员,成功了!

      唯一的缺点是这一切都需要一台 Windows 机器......我不确定我会在 Mac 或 Linux 上做什么!

      【讨论】:

      • 嗨,理查德,你能帮我进一步吗?我想将我的网站与客户的 adfs 服务器之一集成。我google了很多。我对 ADFS 很陌生
      猜你喜欢
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 2020-07-09
      • 2011-02-14
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多