我正在为基于Play Framework 2.X的项目构建一些RESTful API。
我的重点是我实施的身份验证机制。
目前,我使用SecureSocial。 工作流程是:
整个作品很棒。
然而,经过一些搜索后,我偶然发现了这个post,并且......我想知道我是否采用了正确的方式。
事实上,处理cookies(Play游戏中的“会话”)会破坏Restfulness规则。 因为一个真正被认为是无状态的api应该立即调用所有需要的数据(凭证/令牌等)。我实现的解决方案需要两个调用:一个用于认证,另一个用于调用安全API。
我想做得好,我想知道一些事情:
使用Api密钥怎么样?我应该使用它们来代替这个SecureSocial
工作流来实现解决方案吗? Api Keys将在每次API调用时发送,以保持安静。
我想到了,因为我希望我的API可以通过一些webapps,手机和其他类型的客户端来实现。没有人被迫管理cookie。
OAuth怎么样?我真的需要它吗?它会完全取代简单的api密钥的使用吗?总是有几个客户的目标,这个已知的协议将是管理身份验证和授权的好方法。
总之,我是否应该实施另一种机制以使其符合Restful?
答案 0 :(得分:1)
这是一个相当古老的问题,但仍然值得回答,因为它可能会引起其他人的兴趣。 REST确实要求无状态,但授权是实施时的常见例外。 您描述的解决方案需要一个授权过程,然后是基于授权cookie的大量服务调用。这类似于api键或OAuth。只要服务不具有高安全性并且您在合理的时间之后过期,cookie就没有错。 将OAuth集成到您的服务中听起来有点过分,仅当您将API公开给第三方(组织外)时才推荐使用。