繁体   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