用于ws2007FederationHttpBinding和Windows身份验证的WCF服务器配置

时间:2018-11-26 07:01:08

标签: wcf iis windows-authentication adfs wsfederationhttpbinding

我必须在服务器上托管的服务上实施“ Windows身份验证”。
我正在使用“ ws2007FederationHttpBinding”。
我正在使用“ ws2007FederationHttpBinding”绑定,因为我从ADFS服务器接收令牌。

以下是我的服务器配置:

web.config

<authentication mode="Windows" />

            <ws2007FederationHttpBinding>   
              <binding name="SamlTokenCustomStsBindingConfig">
                <security mode="Message">
                  <message establishSecurityContext="false">
                  </message>
                </security>
              </binding>
           </ws2007FederationHttpBinding>

   <service name="XXX.Server" behaviorConfiguration="ClaimsAwareServiceBehavior">
        <endpoint address="http://serverurl/ServerServices.svc" binding="ws2007FederationHttpBinding" 
                  contract="ServerInterfaces.IServer"  bindingConfiguration="SamlTokenCustomStsBindingConfig"  />

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>

 <behavior name="ClaimsAwareServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior> 

以下是我的IIS配置: enter image description here

尽管进行了所有配置,但我仍无法访问我的服务。谁能通知我在哪里出错或错过任何配置。

当我尝试访问服务时收到以下错误消息。 enter image description here

根据每个错误,我们在“ ws2007FederationHttpBinding”中没有“ Transport”或“ TransportCredentialOnly”。
所以我无法继续前进。

1 个答案:

答案 0 :(得分:0)

您应该在下面的代码行中注释此语句,以避免在您的问题中提及该错误:

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

但要为WCF服务实现ADFS,需要几个前提条件,这些前提条件不能发布为答案,而仅对于Windows身份验证模式,只需一步就可以更轻松地使用basicHttpBinding

因此对于ADFS实施,请查看:

1- ADFS in Identity Solutions - Using Active Directory Federation Services 2.0 in Identity Solutions.

2- Federated Security: How to setup and call a WCF service secured by ADFS 2.0

3- ADFS to secure WCF and Workflow Services hosted in Windows Server AppFabric.