我正在尝试设置一个托管在IIS中的WCF服务,该服务公开一个充当生成JSON数据的REST服务的端点,我想使用HTTPS。我想在UserNamePasswordValidator的帮助下自己处理用户身份验证,因为用户存储在数据库中。
目前我正在使用webhttpbinding来实现REST-fulness。当我尝试启用HTTPS(将安全模式设置为Transport)时,我的问题就出现了。我在服务器端有一个SSL证书(现在是自签名的),所以这一切都很好,但我不知道如何配置绑定的传输clientCredentialType,以便将凭据传递给我的UserNamePasswordValidator实现。
我搜索了很多,但似乎找不到任何好事。如果我理解正确IIS在WCF之前处理身份验证,并且没有任何关于它的事情?我真的不想使用ASP.Net会员提供商,但也许这是一种方法还是有另一种方式?
谢谢!
修改:找到this。不是我真正想要的......
答案 0 :(得分:1)
您不能使用UserName
凭据 - 即通过SOAP标头进行消息级别身份验证,但JSON数据交换没有此类标头。尝试在transport元素(=传输级别身份验证)中设置Basic
个凭据。 It should work with custom password validator since .NET 3.5。您必须传递有效的HTTP标头才能成功进行身份验证。
编辑:
我没有使用IIS测试它,因此可能会出现一些问题,因为IIS会在执行自定义验证程序之前触发身份验证。在这种情况下,您需要custom HTTP module for authentication。
答案 1 :(得分:1)
经过大量的谷歌搜索后,我找到了几种可能的解决方案。
使用IIS中托管的RESTful WCF服务来解决身份验证的The recommended way似乎是使用令牌。要么在第三方实施OAuth的帮助下,要么实施self。但是,这会给我的nettcp端点带来一些问题,而且我可能无法对两个端点使用相同的实现(因为我需要对来自webhttp端点的调用进行一些令牌验证)
Ladislav Mrnka给出的The solution似乎也是有效的。