2012-04-17 144 views
0

我有我在IIS6託管的WCF服務。我正在嘗試使用傳輸級安全性設置自定義用戶名/密碼認證。我已經建立了一個測試證書,並得到了客戶端通過SSL沒有指定的認證,即連接:IIS6中的自定義用戶名/密碼身份驗證

 <security mode="Transport"> 
     <transport clientCredentialType="Basic" /> 
     </security> 

我已經建立了與郵件安全和客戶端憑證輸入「用戶名」自定義驗證,但我想現在將它與運輸級安全性結合起來。當我設置web.config時,當我嘗試查看WSDL時,出現錯誤: 「此服務的安全設置需要'基本'身份驗證,但未啓用託管此服務的IIS應用程序的身份驗證。」

這裏是我的web.config中的重要組成部分:

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="UserNameBinding"> 
      <security mode="Transport"> 
      <transport clientCredentialType="Basic" /> 
      </security> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="ServiceAuthenticationBehavior" 
     name="Service.WebServices.MyService"> 
     <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration="" 
      name="mexBinding" contract="IMetadataExchange" /> 
     <endpoint binding="wsHttpBinding" bindingConfiguration="UserNameBinding" 
      name="wsHttpBindingWithAuth" contract="Service.WebServices.IMyService" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceAuthenticationBehavior"> 
      <serviceMetadata httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceCredentials> 
      <serviceCertificate findValue="TestCert01" storeLocation="LocalMachine" 
       storeName="TrustedPeople" x509FindType="FindBySubjectName" /> 
      <userNameAuthentication userNamePasswordValidationMode="Custom" 
       customUserNamePasswordValidatorType="Service.WebServices.ClientCredentialsValidator, Service.WebServices" /> 
      </serviceCredentials> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

有什麼我應該在IIS6設置,以使這個? 在IIS中,我最初啓用了「啓用匿名訪問」選項。我也嘗試啓用「基本身份驗證(密碼以明文發送)」複選框,但沒有成功。

+0

你試圖anon [關閉]和基本[在]在一起?做這樣的事你不知道如果一個iisreset可以幫助,所以我做一個無論如何 – 2012-04-17 13:24:49

回答

0

這個職位似乎表明,基本只適用於Windows帳戶,與第三方解決方案......

Basic Authentication with WCF REST service to something other than windows accounts?

我一直在這裏自己,結束了1條腿去很好地運作的openauth。

編輯 這篇文章發給我好對我的方式來解決http://www.cleancode.co.nz/blog/523/oauth-dot-net

其值得一提的1和2腿的OAuth之間的差異。 1-leg是客戶端和服務都知道客戶端的密碼(密碼)的客戶端帳戶名稱,用於加密和解密認證請求(所有這些都被添加到查詢字符串中)。與2腿,這是由第三方,如谷歌,臉譜等產生

+0

你可以形容「單腿openauth」?不知道這是什麼。這聽起來像我正在做的自定義身份驗證消息級安全性不起作用。我想我可以像以前那樣做傳輸+消息安全,匿名SSL,但是可以在消息傳輸上進行自定義身份驗證? – 2012-04-17 14:54:39

+0

此鏈接意味着您可以使用SSL進行自定義用戶/通過身份驗證。雖然有上述問題,但無法讓它工作。 http://www.leastprivilege.com/FinallyUsernamesOverTransportAuthenticationInWCF.aspx – 2012-04-17 16:06:34

相關問題