所以我正在创建一个wordpress网站并实施Google登录API,
我设计了它,所以每个用户都有相同的密码(长'乱码'字符串)。
// PHP代码
$usrname =$_REQUEST['/:)REQUEST EMAIL FROM GOOGLE API AFTER SIGN IN:(/'];
$creds = array();
$creds['user_login'] = $usrname;
$creds['user_password'] = 'AIzaSyA9s0cRKrGuhN7oLsjQUxlA1oZroWdWXbc';
$creds['remember'] = true;
然后我意识到任何人都可以通过JS将他们的电子邮件传递给该函数来冒充用户。
编辑:加上是看到了这个。“警告:不要在后端服务器上接受普通用户ID,例如您可以使用GoogleUser.getId()方法获得的用户ID。修改后的客户端应用程序可以向服务器发送任意用户ID以模拟用户,因此您必须使用可验证的ID令牌来安全地获取服务器端登录用户的用户ID。“
所以我正在考虑使用从google api获取的CONSTANT字符串,以便字符串成为他们的密码。
我需要知道googleUser.getAuthResponse()。id_token;是一个常量变量,所以我可以用它作为密码。
by“Constant”我的意思是如果用户在2010年AUTHEs我的应用程序并且ID令牌是“XPOXVSCWSW32526C”,如果用户需要在2017年再次登录,则ID令牌仍然是“XPOXVSCWSW32526C”。
感谢!
答案 0 :(得分:0)
我建议将ID令牌与this post on the Google developers blog中描述的后端架构一起使用:
通过HTTPS将ID令牌字符串(非常量)发送到您的服务器
使用您服务器上的库(例如an open source one in PHP from Google)对其进行验证。请务必提供网络 OAuth客户端ID(应该看起来像X.apps.googleusercontent.com)
$curl -sS getcomposer.org/installer | php
$php composer.phar require google/apiclient:dev-master
$php -a
php > require_once 'vendor/autoload.php';
php > $client = new Google_Client(['client_id' => 'web_client_id']);
php > print_r($client->verifyIdToken('id_token_string'));
您的客户端ID成功验证此令牌是您应该使用的代替给定用户的密码进行安全身份验证
使用并存储用户ID(ID标记'sub'字段)为字符串以查找或创建您的用户条目,而不是可能更改的电子邮件地址
为用户发出会话Cookie或令牌
有关详细信息,请参阅developer guide