簡體   English   中英

IIS托管具有SSL安全性的WCF-“ HTTP請求被客戶端身份驗證方案'Anonymous'禁止”錯誤

[英]IIS hosted WCF with SSL security -“The HTTP request was forbidden with client authentication scheme 'Anonymous'” error

我正在嘗試使用傳輸安全性在IIS上托管wcf。 我找到了一個不錯的教程,並按照說明進行操作: http : //robbincremers.me/2011/12/27/wcf-transport-security-and-client-certificate-authentication-with-self-signed-certificates/ 我總是收到“客戶端身份驗證方案'Anonymous'禁止HTTP請求”。 我該如何處理?

到目前為止,我所做的是:

  1. 我創建自簽名的根授權證書,作為解釋在這里

    makecert -n“ CN = TempCA” -r -sv TempCA.pvk TempCA.cer

  2. 創建了由根權限證書簽名的新服務器證書

    makecert -sk SignedByCA -iv TempCA.pvk -n“ CN = localhost” -ic TempCA.cer localhost.cer -sr localmachine -ss我

  3. 創建了由根權限證書簽名的新客戶端證書

    makecert -sk SignedByCA -iv TempCA.pvk -n“ CN = clientCert” -ic TempCA.cer clientCert.cer -sr localmachine -ss我

  4. 將CA添加到受信任的根證書

    在此處輸入圖片說明

  5. 將這些證書添加到個人->證書 在此處輸入圖片說明

  6. 將客戶證書添加到“受信任的人” 在此處輸入圖片說明

  7. 一切看起來還不錯 在此處輸入圖片說明

  8. 創建了非常簡單的WCF應用程序。 IIS添加了它 在此處輸入圖片說明

  9. 調整安全設置 在此處輸入圖片說明

  10. 這是我的服務web.config文件

 > <?xml version="1.0"?> <configuration> <system.web> > <compilation debug="true" targetFramework="4.5" /> > <httpRuntime targetFramework="4.5"/> </system.web> <system.serviceModel> > <bindings> > <basicHttpBinding> > <binding name="EmployeeBindingConfig"> > <security mode="Transport"> > <transport clientCredentialType="Certificate" /> > </security> > </binding> > </basicHttpBinding> > </bindings> > <behaviors> > <serviceBehaviors> > <behavior name="EmployeeServiceBehavior"> > <serviceMetadata httpsGetEnabled="true"/> > <serviceDebug includeExceptionDetailInFaults="true"/> > <serviceCredentials> > <clientCertificate> > <authentication certificateValidationMode="PeerOrChainTrust" > trustedStoreLocation="LocalMachine" /> > </clientCertificate> > </serviceCredentials> > </behavior> > </serviceBehaviors> > </behaviors> > <services> > <service > behaviorConfiguration="EmployeeServiceBehavior" > name="WCF.Tutorial.TransportSecurity.ServiceNew.EmployeeService"> > <host> > <baseAddresses> > <add baseAddress="https://localhost/WCF.Tutorial.TransportSecurity.ServiceNew"/> > </baseAddresses> > </host> > <endpoint address="EmployeeService" > binding="basicHttpBinding" > bindingConfiguration="EmployeeBindingConfig" > contract="WCF.Tutorial.TransportSecurity.ServiceNew.IEmployeeService" > /> > <endpoint > address="mex" > binding="mexHttpsBinding" > contract="IMetadataExchange" /> > </service> > </services> </system.serviceModel> <system.webServer> > <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration> 
  1. 這是我的客戶端app.config
 > <?xml version="1.0" encoding="utf-8" ?> > <configuration> > <startup> > <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> > </startup> > <system.serviceModel> > <behaviors> > <endpointBehaviors> > <behavior name="EmployeeEndpointBehaviour"> > <clientCredentials> > <clientCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="omer-HP"/> > </clientCredentials> > </behavior> > </endpointBehaviors> > </behaviors> > <bindings> > <basicHttpBinding> > <binding name="EmployeeBindingConfig"> > <security mode="Transport"> > <transport clientCredentialType="Certificate" /> > </security> > </binding> > </basicHttpBinding> > </bindings> > <client> > <endpoint address="https://localhost/WCF.Tutorial.TransportSecurity.ServiceNew/EmployeeService.svc" > binding="basicHttpBinding" bindingConfiguration="EmployeeBindingConfig" > contract="WCF.Tutorial.TransportSecurity.ServiceNew.IEmployeeService" > name="serviceEndpoint" > behaviorConfiguration="EmployeeEndpointBehaviour"/> > </client> > </system.serviceModel> > </configuration> 
  1. 這是我的客戶代碼和錯誤 在此處輸入圖片說明

我的問題是如何傳遞此錯誤? 我需要你的幫助。

至少已發現問題。 當我查看Windows事件日志時,看到了該錯誤

當請求客戶端身份驗證時,此服務器會將受信任的證書頒發機構列表發送到客戶端。 客戶端使用此列表選擇服務器信任的客戶端證書。 當前,此服務器信任太多的證書頒發機構,以致該列表已過長。 因此,該列表已被截斷。 本機的管理員應檢查可信任的證書頒發機構以進行客戶端身份驗證,並刪除那些不需要真正信任的證書頒發機構。

我備份了一些證書並刪除了它們。 完成此操作后,我的程序開始運行。

更改匿名身份,如IIS網站中所示

更改匿名身份,如IIS網站中所示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM