2015-11-05 76 views
0

我有一個基本身份驗證的WCF服務,它需要用戶名和密碼。我在一個胖客戶端使用這項服務,用戶名和密碼存儲在應用程序中,因此可以很容易地傳遞。如何將ASP.NET身份驗證傳遞給WCF服務

我現在想在ASP.NET應用程序中使用此服務。我啓用了安全性,並且工作正常。我想知道將這些憑據發送到我的Web服務的最佳方式。用戶名我可以輕鬆使用this.User.Identity.Name,但密碼更難。當然,我可以將它存儲在一個加密的會話變量中,但這是正確的解決方案嗎?代碼段下方與目前硬編碼密碼所示: -

MyServiceClient client = new MyServiceClient(); 
client.ClientCredentials.UserName.UserName = this.User.Identity.Name; 
client.ClientCredentials.UserName.Password = "Password"; 

BTW:這是我經過多年在這裏尋找答案的第一個問題,所以請去容易對我:-)

回答

0

啓用身份驗證服務 如果您還沒有ASP.NET Web應用程序,請創建一個。 添加一個服務文件(.SVC)到包含以下指令引用AuthenticationService類,如下面的示例網站: VB

<%@ ServiceHost 
    Language="VB" 
    Service="System.Web.ApplicationServices.AuthenticationService" 
    Factory="System.Web.ApplicationServices.ApplicationServicesHostFactory" %> 
C# 
<%@ ServiceHost 
    Language="C#" 
    Service="System.Web.ApplicationServices.AuthenticationService" 
    Factory="System.Web.ApplicationServices.ApplicationServicesHostFactory" %> 

請在Web.config以下配置設置文件來配置服務並要求SSL: 在authenticationService元素中啓用身份驗證服務。 定義服務元素中的端點合同和behavior元素中的服務行爲。將bindingNamespace屬性包含在端點合同中,如以下示例所示,以防止某些代理生成工具發生異常。有關WCF端點的更多信息,請參閱Windows Communication Foundation端點。 爲了兼容ASP.NET,請配置serviceHostingEnvironment元素。有關託管WCF服務的更多信息,請參閱WCF服務和ASP.NET。 在需要SSL的綁定元素中創建一個綁定。有關WCF中傳輸安全性的更多信息,請參閱傳輸安全性。 以下示例顯示了來自Web.config文件的system.serviceModel元素,該文件顯示了上一列表中描述的配置設置。

<system.web.extensions> 
    <scripting> 
    <webServices> 
     <authenticationService enabled="true" 
     requireSSL = "true"/> 
    </webServices> 
    </scripting> 
</system.web.extensions> 
<system.serviceModel> 
    <services> 
    <service name="System.Web.ApplicationServices.AuthenticationService" 
     behaviorConfiguration="AuthenticationServiceTypeBehaviors"> 
     <endpoint contract= 
     "System.Web.ApplicationServices.AuthenticationService" 
     binding="basicHttpBinding" 
     bindingConfiguration="userHttps" 
     bindingNamespace="http://asp.net/ApplicationServices/v200"/> 
     </service> 
    </services> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="userHttps"> 
       <security mode="Transport" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="AuthenticationServiceTypeBehaviors"> 
     <serviceMetadata httpGetEnabled="true"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment 
    aspNetCompatibilityEnabled="true"/> 
</system.serviceModel> 
To configure forms authentication 
In the Web.config file, configure the Web application to use forms authentication. 
The following example shows the authentication element in a Web.config file that is configured to use forms authentication. 
<authentication mode="Forms"> 
    <forms cookieless="UseCookies" /> 
</authentication> 

驗證服務需要cookie。因此,在認證元素中,將cookieless屬性設置爲「UseCookies」。有關更多信息,請參閱ASP.NET Forms身份驗證概述。 安全 如果您正在傳遞身份驗證憑據等敏感用戶數據,請始終通過安全套接字層(SSL,使用HTTPS協議)訪問身份驗證服務。有關如何設置SSL的信息,請參閱配置安全套接字層(IIS 6.0操作指南)。