我有一个ServiceCallContext对象,它必须作为任何服务调用的第一个参数传入。我想在上下文对象上放置一个用户对象,但是我知道我不能强迫调用者发送他们从服务中收到的用户对象,我也不能阻止他们用他们想要的任何信息来填充这个对象。
因此,据我所知,我需要使用一个安全令牌(通过类似于OAuth的方式)对它们进行身份验证,并且总是需要在身份验证之后在服务端查找我需要的任何用户信息,而不是将其放在上下文对象上。
但是,我知道为数据文件做散列以验证其内容没有被篡改是很常见的。对于我放置在上下文对象上的用户信息来说,这样做是否合理,这样我就不必为每个服务调用调用持久性层了吗?这样做的风险有多大?
发布于 2015-01-24 22:25:39
用户登录信息的散列将本质上是一个实现糟糕的安全令牌。由于您仍然需要对每个请求进行身份验证,所以我看不出您从滚动自己的身份验证中会得到什么好处。使用经过良好测试的解决方案,如OAuth或XAuth。
通过使用HTTPS,您可以轻松、安全地阻止“中间人”篡改或窃听。
发布于 2015-09-22 03:35:07
一旦执行了昂贵的函数(对用户进行身份验证),就会设置一个令牌,该令牌存储在一个更快、更便宜的地方(例如- Memcache)。
这样,您总是可以在每个请求中重新对用户进行身份验证,并且可以通过为任何具有当前会话的用户刷新内存来自动强制进行完整的重新身份验证。
您还可以在Memcache (或类似的)中存储在每个服务调用中所需的所有用户数据,以便快速检索。
https://softwareengineering.stackexchange.com/questions/271026
复制相似问题