我们有一些调用WCF服务来访问数据的应用程序(web和WPF)。我们没有使用Windows身份验证。登录web应用程序或WPF桌面应用程序时,系统会提示用户输入用户名和密码。数据不是高度机密的(即没有信用卡、SSN等)。
我们希望将BasicHttpBinding用于WCF端点。但是,我们希望将用户名和密码传递给我们的WCF服务,以便根据用户限制对某些数据的访问。
我的问题是,既然我们100%处于intranet环境中,那么简单地在SOAP消息的头中传递用户的用户名和密码,这样我们就可以在WCF端验证用户的身份,这是否合理?这似乎是一种非常常见的情况,我很好奇当所有应用程序和服务都驻留在intranet环境中时,其他人是如何解决WCF端的安全性问题的。
谢谢。
发布于 2010-08-18 04:39:07
这看起来很容易,但实际上却相当困难,因为WCF团队已经做出决定,不允许在不安全的通道上发送纯文本用户名令牌。您可以随时在自定义SOAP头中发送用户名和密码,但在这种情况下,您将失去WCF安全基础设施,并且您将不得不注入您自己的密码验证行为等。
如果你真的需要纯文本用户名令牌,你应该检查这个binding。
编辑:顺便说一下。请记住,大多数安全攻击来自内部人员,所以使用HTTPS不是糟糕的决策,它会让事情变得容易得多。
发布于 2010-08-18 04:31:09
是的,这是合理的--但是:即使您在intranet上,也应该对密码进行加密。任何使用网络嗅探器(如WireShark )的人都可以看到通信的文本,如果您没有对密码进行加密,那么即使他们是员工,他们也能够获得密码--这完全破坏了任何内部安全性--也就是说,除非您非常信任您的员工,以至于用户名和密码实际上没有任何意义。
发布于 2010-08-18 23:03:30
如果您使用WCF3.5 sp1,您可以允许用户名和密码跨非安全绑定,只需将安全传输的AllowInsecureTransport设置为true即可。
https://stackoverflow.com/questions/3506637
复制相似问题