2012-04-04 247 views
1

我已經將Web服務添加到現有的asp.net Intranet應用程序。目的是向同一個域上的其他Intranet應用程序公開功能。Web服務 - Windows身份驗證

Intranet應用程序使用Windows身份驗證。如何設置Web服務以使用Windows身份驗證?

+0

查看它的另一種方法 - 如果您使用的是靜態IP,請保留一個用戶在哪個IP上的表格。 – 2012-04-04 16:17:55

回答

0
Client.localhost.Service1 service = new Client.localhost.Service1(); 
    service.Credentials = new System.Net.NetworkCredential("username", "pass", ""); 
0

設置Web服務以使用Windows身份驗證很容易。您只需在IIS中更改身份驗證模式!

與該服務通信是另一回事。首先,您需要在消費應用程序的Web配置中正確設置服務引用。下面的安全部分是使其發揮作用最關鍵的部分。

<system.serviceModel> 
<bindings> 
<basicHttpBinding> 
    <binding name="ServiceSoap" closeTimeout="00:01:00" 
     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
     useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
     maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<client> 
    <endpoint address="http://yourservice.com/Service.asmx" 
    binding="basicHttpBinding" bindingConfiguration="ServiceSoap" 
    contract="ServiceClient.IServiceSoap" name="ServiceSoap" /> 
</client> 

然後,你需要在開始使用它之前設置客戶端對象的的Windows憑據。

var credentials = ServiceSoapClient.ClientCredentials; 
credentials.Windows.ClientCredential.Domain = "domain"; 
credentials.Windows.ClientCredential.UserName = "user"; 
credentials.Windows.ClientCredential.Password = "pwd"; 
credentials.Windows.AllowNtlm = true; 
+0

您認爲使用Web服務公開ASP.NET應用程序的一小部分是不好的做法嗎?這是一個內部應用程序,將鏈接到另一個內部應用程序。 – w0051977 2012-04-04 19:43:22

+0

我不認爲創建一個小型Web服務以允許兩個應用程序進行通信是不好的做法,但是我歡迎任何其他意見。 – SouthShoreAK 2012-04-04 19:53:45

+0

謝謝。您在答案中引用了web.config中的代碼。如果您爲Web服務創建服務引用,是否自動生成此代碼? – w0051977 2012-04-04 20:04:34