2012-04-17 112 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

相关问题