c# - WCF:通过向每个方法传递密码来实现简单的安全性

标签 c# wcf security passwords

假设有一个 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/

相关文章:

php - Laravel 网站上的虚假帐户创建预防

javascript - 保护用户定义的 javascript 函数以保护 node.js 服务器

c# - 检测父任务取消的正确方法是什么?

security - 信用卡号验证算法

c# - process.getprocessesbyname()

wcf - WCF 如何根据请求决定何时返回 SOAP 还是 JSON?

javascript - WCF 问题上的 CORS

wcf - 配置mod_mono部署wcf服务(CentOS)

c# - .Take(5) 在 ObservableCollection 上返回 0 计数

c# - 无法从 BaseClass<int> 隐式转换为 DerivedClass