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調用時出現對象錯誤。有什麼我做錯了嗎?謝謝。
通過這個例子我唯一需要注意的是,它需要在客戶端應用程序持有到服務的用戶名和密碼。這意味着比任何黑客都擁有用戶名:密碼。如果你沒有問題,那麼+1。但我會問,爲什麼你要認證。你不能相信客戶。你必須假設客戶端是黑客。如果你不這樣做,你會被黑客入侵。 :-) –
@MarkGood您的客戶使用自己的用戶名和密碼登錄到您的Web服務。他們是不是黑客 – Julien
@Julien,如果您使用的用戶憑據登錄到你的服務,那麼你必須在某個客戶端上存儲這些憑據。大多數Web應用程序不存儲這些憑據,而是設置會話cookie。您的網站是公開的還是內部的? –