.net 什么';通过WCF进行身份验证的最佳方式是什么?

.net 什么';通过WCF进行身份验证的最佳方式是什么?,.net,asp.net,wcf,authentication,membership,.net,Asp.net,Wcf,Authentication,Membership,通过WCF实现身份验证的最佳方法是什么 我不想使用WS-*因为它需要独立于传输 我应该“自己滚”吗?有没有关于这方面的指导(文章/博客帖子)? 或者是否有某种方法(我应该)在服务器端使用内置的ASP.NET成员资格和配置文件提供程序? 为什么WS-*要依赖于运输 WS-*规范的全部要点是它们是消息的一部分,因此与传输无关。WS-*与传输无关。这就是重点 身份验证实际上取决于所需的服务使用者。不要用不需要的安全性来衡量内部服务,同样,如果您需要了解第三方用户的具体情况,添加额外的安全性层也很有用

通过WCF实现身份验证的最佳方法是什么

我不想使用WS-*因为它需要独立于传输

我应该“自己滚”吗?有没有关于这方面的指导(文章/博客帖子)?
或者是否有某种方法(我应该)在服务器端使用内置的ASP.NET成员资格和配置文件提供程序?
为什么WS-*要依赖于运输


WS-*规范的全部要点是它们是消息的一部分,因此与传输无关。

WS-*与传输无关。这就是重点

身份验证实际上取决于所需的服务使用者。不要用不需要的安全性来衡量内部服务,同样,如果您需要了解第三方用户的具体情况,添加额外的安全性层也很有用


对于外部API,我们使用了使用证书的WS-*身份验证,然后使用一种简单的身份验证机制(提供用户名和密码,返回GUID身份验证令牌,令牌随事后的所有请求一起提供)。

感谢您的回答

我不是说交通依赖,我错了。我的意思是,我希望消费者能够选择绑定到哪个端点。由于basicHttpBinding和netTcpBinding等不支持WS-*我需要在服务级别使用一些东西


Davids简单身份验证是我一直试图避免的。理想情况下,我希望有一种方法可以完成同样的事情,而不必在我的所有操作契约中添加令牌参数。

基于消息的身份验证,它是基于WS-Security的,是您所寻找的,并且由basicHttpBinding和netTcpBinding明确支持。我认为您错误地认为只有WsHttpBinding支持WS-Security,这是不准确的

WS-Binding用于WS-Security以外的WS-*元素,如WS-ReliableMessaging。如果您希望保持安全,设置独立于传输的消息安全性仍然很棘手。对于非双工传输,您需要至少提前交换一个证书

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


因此,不管怎样,如果您想完全独立于传输,首先需要解决的是将证书按顺序排列,并确定如何分发第一个(根)证书,或安全地交换证书。如果您有一个可以分发主证书的应用程序,那么就走这条路。如果您所处的场景比这更复杂,您需要后退一步,想想这个问题到底有多困难。

如果您公开的外部服务需要用户级身份验证/授权,我建议您使用ASP.NET提供程序

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