我從ASP.NET應用程序(.Net 4.5和IIS 7)調用WCF服務。 Web應用程序被配置爲使用Windows身份驗證。通過WCF服務調用發送Windows憑據
<authentication mode="Windows" />
我想將Windows用戶憑據作爲身份原則發送給我的服務。在我的服務端,我將手動執行一些額外的授權邏輯。但是我沒有在服務端獲得Windows原則。相反,我總是獲得GenericPrinciple類型,因此原則名稱將變爲空白。我對WCF配置很陌生。我在這裏錯過了什麼?
Web應用程序和WCF目前都在同一臺機器上的IIS 7中託管。
這是客戶端的web.config設置。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBidning_IService" maxReceivedMessageSize="2147483647">
</binding>
</basicHttpBinding>
<client>
<endpoint address="http://localhost/MyWebServiceApp/API/MyAPIService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBidning_IService"
contract="Application.API.IService"
name="BasicHttpBidning_IService" >
</endpoint>
</client>
</system.serviceModel>
服務端:
<service name="MyAPIService" behaviorConfiguration="PublicServiceTypeBehaviors">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBidning_IPublicService" contract="Application.API.IService" name="BasicHttpBidning_IService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<system.serviceModel>
<client />
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" minFreeMemoryPercentageToActivateService="1" />
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBidning_IPublicService" maxReceivedMessageSize="2147483647" />
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="WebHttpBidning_IPublicService">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="PublicServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</system.serviceModel>
Windows憑據用於同一LAN中的Windows機器,並且局域網之外的其他Windows機器已知曉此類知識。您有什麼理由必須使用Windows憑據。 – ZZZ
因爲該網站將在Intranet中使用。並且每個用戶將只能訪問某些WCF方法,具體取決於其角色。 –