我正在尝试实现Rest方法来设计我的Api。
请仔细阅读下面的工作流程,尽量清除疑虑并指出错误 -
客户端(网络浏览器) 来自客户的休息电话 - > / post / login username / password
服务器 / login服务检查数据库是否用户名&密码是正确的 回复确定:200 +发回数据 - > X
客户端 收到用户通过身份验证+数据的确认 - > X 现在使用数据X进行后续调用服务器,以通过其他服务调用获取用户特定信息
/ GET / FirstName_of_User / X 或
/ GET / LastName_of_User / X
现在我的怀疑如下(执行以下操作的最佳做法是什么)
因为对于后续请求,我们需要告诉服务,我们的数据是否要求X应该是什么? (创建了用户名或临时令牌(因为Rest完全是无状态的,所以没有意义)或其他什么?)
返回此X后,应将其存储在客户端,以便每次后续请求都可以起诉? (Cookie或其他方式存在)?
如果这是我如何进行后续通话
的 /获得/ FirstName_of_User / X
如果这个电话是由其他人发出的,那么它会给出结果,我希望刚登录的人只能获得结果..
Reg question 3 - 我在stackoverflow上找到了这个链接 - Is session used to REST authentication?
建议使用HMAC并找到此链接 - http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/,其中讨论了如何将HMAC用于Rest(基本上讨论在客户端和服务器上都有私钥并使用它来散列请求) ..
我对这种方法的疑问是 - 假设我使用密码作为客户端和服务器都知道的私钥..然后在客户端,我们应该只在密码中保存密码,每次后续请求都要消息吗? / p>
由于 感谢任何疑惑的任何帮助
PS:我正在尝试使用PHP + Mysql实现系统
答案 0 :(得分:0)
/user/id?access_token=42342342342423
休息apis不需要没有SEO,所以删除firstname_of_user,只需使用id,更简单,更清洁,更少维护。
答案 1 :(得分:0)
不管怎样,你的要求以及我们在项目中实施的内容看起来都是相同的,除了不同的平台,我们的是.net。
使用用户名和密码对登录资源执行相同的过程。一旦您决定要对此令牌进行签名的机制,就不一定要将其附加在URL中。
Authorization = "Authorization" ":" credentials
Ref 通过这种方式,您可以保持您的网址相同,但根据身份验证,您可以提供资源。
您可以将此令牌存储在Cookie中以供后续请求使用。
从网址中删除令牌可以解决您的第三个疑问。
希望这能在某种程度上帮助你。