我们希望在我们的应用程序中实现“使用LinkedIn登录”。由于应用程序有JS前端和基于REST的后端,我们决定用JSAPI令牌交换here中描述的REST API OAuth令牌。
如果用户登录成功,前端会将包含客户端持有者token和成员ID的凭据cookie发送到后端。在后端,我们检查具有这样的成员ID的用户是否已经存在,如果不存在,我们将JSAPI令牌交换为REST API OAuth令牌,从LinkedIn检索用户详细信息并将其存储在我们的数据库中。
现在的问题是,我们是否可以使用该cookie来验证每个用户对REST后端的请求。用户通过JSAPI成功登录后,后续的所有请求都会自动将cookie传递给我们的后台,这样我们就可以检查会员ID了。有没有遗漏的缺点?或者,这个想法整体上是错误的?
我们是否应该只通过cookie对用户进行一次身份验证,然后发出我们自己的身份验证令牌并将其发送回客户端?
发布于 2013-11-07 02:56:37
cookies通常的工作方式是在每个请求上将它们传递到它们所属的域。LinkedIn正在为您的域设置凭据cookie。
只要您在每次请求时验证这些凭据,使用它们的令牌作为身份验证是完全可以接受的。
就我个人而言,我认为这不是一个好主意,我更喜欢验证他们的凭据一次,然后创建我自己的auth令牌,以便从那时起使用。您始终可以将该令牌设置为在某个时间点过期,然后重新验证LinkedIn凭据(该凭据仍然会在每次请求时发送)。这限制了你用LinkedIn检查的次数,应该会增加你的应用程序的响应性。
发布于 2013-11-13 11:46:54
任何一种方式都可以工作。
如果您正在使用LinkedIn cookie通过成员id验证用户,则应该根据您链接的文档的第2节和常见问题解答的问题2对每个请求验证cookie的签名。
使用你自己的令牌可以更容易地实现一个属于你的应用程序的帐户,并且不一定连接到LinkedIn,假设有可能只连接到其他一些服务或没有第三方(y/ies)。但是,只要您信任cookie中的成员id,仍然应该进行验证。
该文档提供了一个用PHP语言编写的验证示例,如果您对改进ruby版本感兴趣,我有一个shameless plug.
如果您只是登录将OAuth令牌转换为OAuth令牌,然后不再进一步使用JSAPI令牌,那么您在最新评论中概述的直接获取JSAPI令牌的流程是最好的方法。如果您计划在前端应用程序中实际使用JSAPI令牌,并在后端使用OAuth令牌,那么最好采用转换路线。
https://stackoverflow.com/questions/19560113
复制相似问题