在IIS中托管时,使用HTTPS进行Webhttpbinding,并使用UserNamepPasswordValidat



我正在尝试设置一个托管在IIS中的WCF服务,该服务公开了一个端点,该端点充当生成JSON数据的REST服务,我希望使用HTTPS。我想在UserNamePasswordValidator的帮助下自己处理用户身份验证,因为用户存储在数据库中。

目前,我正在使用webhttpbinding来实现REST功能。当我尝试启用HTTPS(将安全模式设置为传输)时,问题就开始了。我在服务器端有一个SSL证书(目前是自签名的),所以这一切都很好,但我不知道如何配置绑定的传输客户端CredentialType,以便将凭据传递给我的UserNamePasswordValidator实现。

我在谷歌上搜索了很多,但似乎找不到任何好的东西。如果我理解正确,IIS会在WCF之前处理身份验证,而对此却无能为力?我真的不想使用ASP.Net会员服务提供商,但也许这是一种方法,或者还有其他方法吗?

谢谢!

编辑:找到了这个。不是我所希望的。。。

您不能使用UserName凭据,即通过SOAP标头进行消息级身份验证,但JSON数据交换没有这样的标头。尝试在传输元素中设置Basic凭据(=传输级别身份验证)。它应该与.NET 3.5之后的自定义密码验证器配合使用。您必须为基本身份验证传递有效的HTTP标头才能成功进行身份验证。

编辑:

我没有用IIS测试它,所以可能会出现一些问题,因为IIS在执行自定义验证器之前触发身份验证。在这种情况下,您将需要自定义HTTP模块进行身份验证。

经过大量的谷歌搜索,我找到了几个可能的解决方案。

建议使用IIS中托管的RESTful WCF服务来解决身份验证问题的方法似乎是使用令牌。要么借助OAuth的第三方实现,要么自己实现一些东西。然而,这会给我的nettcp端点带来一些问题,我可能无法对两个端点使用相同的实现(因为我需要对通过webhttp端点来的调用进行一些令牌验证)

Ladislav Mrnka给出的解决方案似乎也是有效的。

最新更新