我正在忙于设计基于REST的服务,并且正在努力了解安全性如何在网络上运行。这是一个绿色领域解决方案,因此我可以设计它以尽可能最好的方式支持所有新标准和服务。包括遵循所有OpenID最佳实践(我认为现在是时候让所有用户只使用OpenID注册)
我最终将发布API,但我将首先为此系统创建Web客户端和移动客户端的参考实现。
用户通过身份验证后,客户端会向服务提供身份验证代码(所有OpenID OP都是如此吗?)。然后必须在服务器上记录会话。我是否存储从OpenID OP获得的Auth Token?我不想过度连接到OpenID OP,但这可能会被缓存?我是否只存储会话ID和用户的完全限定OpenID?我是否还在服务器会话表中存储用户本地用户配置文件的副本(以消除第二个查询?)
当客户发出第二个请求时,它需要提供一些东西......通常看起来人们使用Session_ID,但我认为因为浏览器之间可能存在第三方网站 - 基于客户端和服务,中间层可能会滥用会话ID?
网站可以方便地使用session-id通过代表用户对服务进行额外调用来构建一些奇特的视图,例如构建视图。但是,我怎么知道这些后续请求是代表合法的连接用户而不是仅仅是那个中间人记录了会话ID的人?