1

我已将 Web 服务添加到现有的 asp.net 内部网应用程序。目的是向同一域上的其他 Intranet 应用程序公开功能。

Intranet 应用程序使用 Windows 身份验证。如何设置 Web 服务以使用 Windows 身份验证?

4

2 回答 2

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;
于 2012-04-04T16:37:25.133 回答
0
Client.localhost.Service1 service = new Client.localhost.Service1();
   service.Credentials = new System.Net.NetworkCredential("username", "pass", "");
于 2012-04-04T16:17:04.603 回答