正确使用“使用LinkedIn登录”来识别我网站上的用户?

时间:2012-05-25 22:23:04

标签: linkedin

我想了解“使用LinkedIn登录”。我似乎只是抓住了部分图片。

根据我的理解,用户在我的网站上登录LinkedIn,LinkedIn会向我的网站返回唯一的用户标识符。

然后我会在我的网站上使用该标识来识别用户。

但我不明白 - 一旦最终用户看到了标识符,什么是阻止他们直接使用从那时起再也不会通过LinkedIn登录?返回的用户ID必须保密,还是可以公开显示,例如在URL中?

此外,什么是阻止某人找到其他人的用户ID,然后使用它来访问我的网站?

似乎我错过了关于如何使用从LinkedIn返回的用户ID的整个理解,以及与安全性有关的问题。

有人可以解释一下吗?

由于

3 个答案:

答案 0 :(得分:3)

我会自己回答。事实证明,您可以选择让LinkedIn API返回包含签名的cookie。通过连接的HTTPS将此cookie返回到后端服务器,您可以根据自己的API密钥验证签名。 Voila - 您已经证明这是一个有效的用户,并且您已经证明用户登录实际上来自LinkedIn而不是被欺骗。

答案 1 :(得分:1)

当用户通过linkedin登录时,他们的API会返回他们的用户ID。这真的不是秘密,它只是在告诉您网站上的用户已使用该唯一标识符登录的用户。您只需知道他们的服务器ID就无法以其他用户身份登录 - 对于要返回该ID的linkedin的API,您网站上的用户必须使用用户名和密码登录到linkedin。

只要您确定您正在访问的API确实是linkedin并且响应未被截获/更改/伪造,您可以相信API返回的ID是用户的正确ID在他们的网站上,他们已经登录并作为该用户进行身份验证。

基本上,如果您始终使用linkedin的API对linkedin用户进行身份验证,并且您的网站上没有表单并提示“输入您的身份验证身份验证”,那么您就是安全的。即使用户知道另一个用户的ID,他们仍然需要他们的用户名/密码才能将API返回给您。

随时存储返回的ID以跟踪用户首选项/操作。您甚至可以将其与数据库中已有的用户关联,并为用户提供使用存储在数据库中的用户名/密码组合进行登录的选项(盐水/散列,希望)或通过其中一个oauth选项。

希望这有助于清理事情!

基于评论编辑

关于在API请求之后如何处理事情的另一个重点。您可以相信linkedin返回的ID是正确的,但在此之后您还必须能够相信存储在您网站上的ID仍然与您从linkedin获得的ID相同。使用用户无法编辑的服务器端来存储此ID(如PHP会话 - 不是url参数)。

答案 2 :(得分:0)

假设用户成功通过linkedin验证后,
它会重定向到您的信息页http://www.xyz.com/redirect.php

现在你在redirect.php中有代码,它从URL获取oauth参数并调用userid。

function getUserID (){
   // code which takes oauth params and calls linked in api with access token 
   //and returns userId of user
   return userID;
}

$userID = getUserID();

现在,由于您拥有$userID,请使用$userID创建会话,并将用户重定向到他/她的主页。检查主页中的会话,如果设置了会话$userID,让用户打开页面,如果会话不可用,请不要显示页面并告诉他们先登录。

现在问你的问题,你认为用这种方法用户可以自己输入userID吗?

相关问题