6

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

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

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

谢谢!

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

4

2 回答 2

1

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

编辑:

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

于 2011-06-15T08:47:14.180 回答
1

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

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

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

于 2011-06-16T12:16:13.170 回答