声明感知 WCF 服务

在 Visual Studio 中,打开“文件”菜单,然后选择“新建”、“网站”。 选择“声明感知 WCF 服务”。

如果查看 web.config 文件,将看到它与典型的 WCF 服务的 web.config 有多处不同。

  • assemblies 元素现在包括 WIF 程序集:

    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    
  • services 元素包含一个新服务:

    <service name="ClaimsAwareService1.Service" behaviorConfiguration="ClaimsAwareService1.ServiceBehavior">
    
  • services 元素还包含一个新终结点:

    <endpoint address="" binding="wsHttpBinding" contract="ClaimsAwareService1.IService">
    
  • serviceBehavior 元素包含一个新服务行为:

    <behaviors> <serviceBehaviors> <behavior name="ClaimsAwareService1.ServiceBehavior" > <!-- Behavior extension to make the service claims aware --> <federatedServiceHostConfiguration/> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata  httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors>
    
  • 最后,extensions 元素已添加到 system.serviceModel 元素中:

    <extensions> <behaviorExtensions> <!-- This behavior extension will enable the service host to be Claims aware --> <add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </behaviorExtensions> </extensions>
    

现在可以使用 FedUtil 通过 IClaimsPrincipal 访问当前用户的声明。 有关详细信息,请参阅如何构建 WCF 信赖方应用程序