在C#中使用控制檯應用程序調用lists.asmx得到'http請求未經授權使用clien tauthentication scheme'ntlm'。從服務器收到的驗證頭是'Negotiate,NTLM'。調用lists.asmx得到'http請求未經客戶認證方案'ntlm'
環境:
- 中Kerberos QA開啓&生產,而不是在開發(愚蠢的我知道,但我不管理任何的箱子)
- 擊中一個SharePoint Web服務爲GET來自共享點列表(lists.asmx)的數據。
- 服務器使用ssl。
我在QA環境中得到一個錯誤信息如下(不能粘貼堆棧跟蹤,因爲它僅是在一個畫面):
System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'Negotiate,NTLM'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
直接導航到列表中工作正常,從每一個機器。
- 代碼在開發環境(在服務器上)沒有kerberos啓用(應該是,但不是,我不能改變這個)。
- 代碼針對啓用Kerberos的桌面計算機的生產工作
- 代碼在啓用Kerberos的QA環境中不起作用。這是我的錯誤
要叫我做這個(沒有其他安全相關的代碼參與)的WebService
XmlElement element = this.LIstsServiceClient.GetListItems(listName, '', query, fields, '300', null, null);
我的app.config如下
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="clientEndpointBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Delegation"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="ListsSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="999999999" maxBufferPoolSize="524288" maxReceivedMessageSize="999999999"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="999999" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
<client>
<endpoint address="https://servername/sitecollectionname/_vti_bin/Lists.asmx"
binding="basicHttpBinding" bindingConfiguration="ListsSoap"
contract="ListsService.ListsSoap" name="ListsSoap" behaviorConfiguration="clientEndpointBehavior" >
<identity>
<servicePrincipalName value="spn" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
無法啓用匿名訪問並嘗試執行集成Windows身份驗證。我正在嘗試使用上面粘貼的指示重新進行測量。 乾杯 – 2009-10-21 08:55:06