如何为ADFS 2.0的“依赖方信任”和“声明提供程序信任”创建联合元数据XML

时间:2014-11-21 15:31:27

标签: metadata adfs2.0 federation

我们的某个网络应用程序希望与 ADFS 2.0 服务器连接以获取凭据令牌,并根据该用户角色检查用户角色。 ADFS服务器管理员要求我们为他们提供联合元数据XML文件,以便他们创建信赖方信任。我用谷歌搜索,只找到如何使用URL下载ADFS服务器的联合元数据XML - https:// [adfs服务器名称] /federationmetadata/2007-06/federationmetadata.xml 但是,没有找到任何指南来创建联合元数据XML 来创建" 依赖方信任"和" 声明提供商信任"。是否有用于创建这些元数据文件的工具?请分享一些如何创建的想法。

由于

回答我自己的问题:

我在http://www.microsoft.com/en-ca/download/details.aspx?id=4451 WindowsIdentityFoundation-SDK-4.0 中找到了联合实用程序工具。

4 个答案:

答案 0 :(得分:29)

实际上网址是

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 \需要是您应用的网址。注意结束斜杠!

答案 1 :(得分:10)

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

  1. 在Win 10 PC上,转到控制面板 - &gt;程序和功能 - &gt;打开或关闭Windows功能 - &gt;启用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作为&#34;现有STS& #34;,然后选择创建新的默认证书。

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

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

  8. 将FederationMetadata.xml提供给STS管理员,该工作正常!

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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