假设有一个 Windows 服务和一个 WCF 服务需要定期交换数据。
现在让我们假设 diving into the depths of WCF security 不是,开发人员决定简单地向每个 OperationContract
签名添加一个 String password
参数(随机创建并通过 app.config/web 提供给 Windows 服务和 WCF 服务。配置)并激活 HTTPS 以确保加密。
这种方法有什么本质上的错误吗?
最佳答案
对于您控制服务器和客户端的小型服务,这可能是一种简单的前进方式。但是,我可以想到两件本质上错误的事情。首先是它违反了单一职责原则:类应该只有一个改变的理由的原则。您的类将需要更改,原因有两个:首先,如果服务的业务逻辑发生变化,其次,如果您的身份验证逻辑发生变化,比如将用户名添加到密码凭据或使某些方法匿名可用,同时继续要求身份验证其他。
第二个是,虽然从服务器端不使用标准的身份验证方法可能更容易,但它可能会使客户端的生活更加困难,因为他们将不得不阅读您的文档而不是引用标准,他们将无法利用任何可能已经为他们实现了大部分逻辑的库。例如,在 .NET 中实现用于 HTTP Basic 身份验证的客户端非常简单 - 您只需提供凭据作为请求的属性,它会为您执行握手和 Base64 编码。
关于c# - WCF:通过向每个方法传递密码来实现简单的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23809523/