我想了解“使用LinkedIn登录”。我似乎只是抓住了部分图片。
根据我的理解,用户在我的网站上登录LinkedIn,LinkedIn会向我的网站返回唯一的用户标识符。
然后我会在我的网站上使用该标识来识别用户。
但我不明白 - 一旦最终用户看到了标识符,什么是阻止他们直接使用从那时起再也不会通过LinkedIn登录?返回的用户ID必须保密,还是可以公开显示,例如在URL中?
此外,什么是阻止某人找到其他人的用户ID,然后使用它来访问我的网站?
似乎我错过了关于如何使用从LinkedIn返回的用户ID的整个理解,以及与安全性有关的问题。
有人可以解释一下吗?
由于
答案 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
吗?