2008-08-19 60 views
3

通过WCF实现身份验证的最佳方式是什么?通过WCF进行身份验证的最佳方式是什么?

我宁愿不使用WS- *,因为它需要独立于传输。

我应该“自己动手”吗?有没有任何指导(文章/博客文章)?
或者是有一些方法来(应该I)使用内置的ASP.NET Membership和Profile提供者在服务器端?

回答

0

为什么WS- *应该依赖于传输?

WS- *规范的全部要点是,它们是消息的一部分,并因此输送独立的。

0

WS- *是运输独立的。这就是整个观点。

认证真的取决于您的服务所需的消费者是谁。不要用不需要的安全权衡内部服务,同样如果您需要了解关于第三方用户的具体信息,可以添加额外的安全层。

因为我们已经走了使用WS- *的认证证书,然后进行简单的身份验证机制的外部API(用户名和密码被提供,GUID认证令牌返回,令牌与事实毕竟请求提供)。

0

感谢您的回答。

我不是说运输依赖,我的错误。我的意思是我希望消费者能够选择要绑定的端点。由于basicHttpBinding和netTcpBinding等都不支持WS- *,所以我需要在服务级别使用某些东西。

戴维斯简单认证是我一直试图避免的。理想情况下,我想要一种方法来完成同样的事情,而不必为我的所有操作合同添加一个标记参数。

2

基于消息的认证,它是基于WS-Security的,就是你要寻找的和绝对的basicHttpBinding的和NetTcpBinding的支持。我认为你错误地认为只有WsHttpBinding会支持WS-Security,这是不准确的。

的WS绑定的WS- *元素以外的WS-Security,如WS-ReliableMessaging的。如果您希望它保持安全,那么设置独立于传输的消息安全性仍然会非常棘手。对于不是双工的传输,您至少需要先交换一个证书。

这可能是您认为basicHttpBinding不支持消息安全性的另一个原因。 basicHttpBinding不会允许你在没有传输安全性的情况下使用UserName身份验证(出于好的理由我也会添加)。而且由于运输安全性本质上依赖于运输,我猜你试图避免它。

因此,无论如何,如果您想完全独立运输,您需要解决的第一件事就是获取证书,并确定您将如何分发第一个(根)证书或安全地交换证书。如果您拥有可以分发主证书的应用程序,则可以采用该路线。如果你的情况比这更复杂,你需要退后一步,思考这个问题到底有多难。

0

如果您正在公开需要用户级别认证/授权的外部服务,我会推荐使用ASP.NET提供程序。

有一个有用的实用程序here,它允许远程管理ASP.NET提供程序。 ASP.NET解决方案确实需要SQL ...

相关问题