成功进行Google OAuth登录后,在整个应用程序中验证的会话变量是什么

时间:2018-03-20 13:43:46

标签: php oauth oauth-2.0 google-oauth google-login

我已在我的网站上实施Google OAuth登录。用户使用他/她的Google帐户登录,到达我的欢迎页面&现在在我的欢迎页面&其他后续页面/脚本我需要验证哪些变量进行身份验证&检查用户是否登录。现在我只是这样做:

checklogin.php (using it in require_once in all my subsequent php scripts)

if(isset ( $_SESSION['access_token'] ))
{

  //logged in 
}
else
{
   //NOT LOGGED IN

    header('location:login.php');

} 

我是否还需要检查访问令牌的值?任何其他安全变量,使我的登录检查过程更健壮?如果是,那么如何检查呢?或者这个检查是否足够?

1 个答案:

答案 0 :(得分:1)

从评论中删除

  

$ _ SESSION ['access_token''] ='foo'并运行它然后我的条件将返回true并且他将跳转到我的网站并查看任何用户的所有私人数据?

如果您真的担心某人会这样做,那么最好的办法就是针对tokeninfo端点验证您的访问令牌。 Doc

  

https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=[access_token]

在您在浏览器中讨论会话变量时,我不确定您认为用户如何做到这一点。但浏览器黑客攻击不是我的专长。

UserInfo端点

另一种选择是检查用户信息的终点。所有身份服务器都有此端点,该端点返回有关当前用户的信息。因为您正在请求配置文件范围,所以您应该能够看到这一点。

请求

GET www.googleapis.com/userinfo/v2/me 
Authorization: Bearer ya29.GluEBbGJOYKQ0gcDAFvU2iRKotG-a6MvbyNP6mUUk96RDKJHIFOR_RKiWxl8vQ01rbgy9lP_KmspvrHDzHMZ_

回复

{
  "family_name": "Lawton", 
  "name": "Linda Lawton", 
  "picture": "https://lh5.googleusercontent.com/-a1CWlFnA5xE/AAAAAAAAAAI/AAAAAAAAl1I/UcwPajZOuN4/photo.jpg", 
  "locale": "en", 
  "gender": "female", 
  "email": "xxx@gmail.com", 
  "link": "https://plus.google.com/+LindaLawton", 
  "given_name": "Linda", 
  "id": "7200475532672775346", 
  "verified_email": true
}

我的内部ID是google