2012-11-15 73 views
1

我正在使用webHttpBinding爲json ajax調用WCF服務。該服務工作正常,直到我打開安全部分。這是我的web.config。 如何使用用戶名/密碼認證配置webHttpBinding

 <serviceCredentials > 
     <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="UserNamePasswordValidator, WebServices" /> 
     </serviceCredentials> 
     <serviceAuthorization principalPermissionMode="Custom"> 
     <authorizationPolicies> 
      <add policyType="AuthorizationPolicy, WebServices" /> 
     </authorizationPolicies> 
     </serviceAuthorization> 
     <!----> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="WebHttpBehaviour"> 
     <enableWebScript /> 
     <webHttp automaticFormatSelectionEnabled="false" defaultBodyStyle="Wrapped" defaultOutgoingResponseFormat="Json" helpEnabled="true" /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

這是我的JavaScript調用。

$.ajax({ 
     headers: { 
       "Authorization": "Basic " + Base64.encode('John:Doe') 
      }, 
      type: "POST", 
      url: "https://localhost/StatusService.svc/CheckStatus", 
      data: JSON.stringify({"companyName":"test"}), 
      contentType: "text/json; charset=utf-8", 
      dataType: "json", 
      processdata: false, 
      success: function (data) { 
       alert('ok!'); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       alert(textStatus + '/' + errorThrown); 
      } 
     });

我收到錯誤消息:當我做ajax調用時出現對象錯誤。有什麼我做錯了嗎?謝謝。

回答

3
+0

通過這個例子我唯一需要注意的是,它需要在客戶端應用程序持有到服務的用戶名和密碼。這意味着比任何黑客都擁有用戶名:密碼。如果你沒有問題,那麼+1。但我會問,爲什麼你要認證。你不能相信客戶。你必須假設客戶端是黑客。如果你不這樣做,你會被黑客入侵。 :-) –

+0

@MarkGood您的客戶使用自己的用戶名和密碼登錄到您的Web服務。他們是不是黑客 – Julien

+0

@Julien,如果您使用的用戶憑據登錄到你的服務,那麼你必須在某個客戶端上存儲這些憑據。大多數Web應用程序不存儲這些憑據,而是設置會話cookie。您的網站是公開的還是內部的? –

相關問題