我们正在使用WCF服务。现在,我们正在使用Windows Auth,但这不是很长时间。某些服务将位于防火墙之外,并使用在数据库中验证的用户名/密码。
我的技术主管“害怕”任何用户可以轻松地“添加参考”到我们拥有的服务并参加派对。他想通过添加另一个身份 - 应用程序来“保护”服务。他希望服务接受来自某些应用程序的请求,以便某些用户不能只使用该服务 - 添加对它的引用并进行调用。这是具有身份+凭证的应用程序的概念,这是此处的操作原则,因为网络上的服务可能需要在完成请求之前验证这些凭证,以防止网络内的恶意代码(即,不是应用程序) )使用“Joe User”最终用户凭证访问服务。
这有意义吗?
然后他认为Juval Lowy的书在附录中讨论了在WCF呼叫期间发送多个身份(安全拦截器)。没有具体的建议,所有这些都必须是最终用户身份,如果是这种情况,其中一个可能是提出请求的应用程序的身份。
如何做到这一点?
谢谢, 萨姆
答案 0 :(得分:3)
发送应用程序标识的问题是用于确认身份必须存储在某处的秘密。如果机器上的一个应用程序可以看到它,那么通常它将以相同标识运行的其他应用程序可见。
您的经理会对“来自授权机器”感到满意吗?如果是这种情况,您可以简单地使用Client Certs
它还值得退后一步:如果用户经过身份验证并被授权执行他们所要求的功能,为什么要关心他们来自哪个应用程序 - 如果他们是他们所说的人并且他们被允许做他们所要求的,然后他们为什么不能使用提琴手来提出请求 - 这不是服务的重点(而不是紧密耦合的客户端服务器应用程序)?
答案 1 :(得分:1)
您可能希望查看MSDN文档中的Common Security Scenarios,看看是否有任何这些选项符合您的需求。
我眼中的选项是Transport Security with Certificate Authentication和Message Security with Mutual Certificates。两者都依赖于X.509证书。后一个选项位于消息级别,因此您可以根据需要处理证书交付和安全协商。
答案 2 :(得分:0)
要让某人添加对您的服务的引用更加困难,您可以删除mex端点。这样,陌生人就很难创建有效的请求消息。
然后,您可以手动将WSDL分发给您信任的人。