[英]How to reset id_token in google oauth api javascript
我一直在我的網站上創建一個谷歌登錄。 這是我的代碼:
function gmailLogin(userInfo)
{
//geting the id_token
var token_id = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token;
jQuery.ajax({
url: "functions/login_check.php",
type: "post",
data: {token_id: token_id},
success: function(data)
{
//do something if success
$('#console').html(data);
}
});
}
我使用PHP curl通過這個id_token驗證帳戶,一切正常。
這是我的 php 代碼:
//token I got from the page previously using ajax
$token_id = $_POST['token_id'];
$verifyResponse = file_get_contents('https://oauth2.googleapis.com/tokeninfo?id_token='.$token_id);
$response = json_decode($verifyResponse);
if(isset($response->email_verified))
{
//do stuff
}
但是,由於id_token永遠保持不變。 它可能導致安全漏洞。 有沒有辦法使用PHP或Javascript 重置此 id_token ? 如果沒有,是否有任何其他方法可以輕松實現此登錄系統(無需任何外部庫和 php)?
id_token 是一個 JWT 壽命短。 谷歌將其設置為 1 小時。 您可以通過獲取 JWT 並將其放在https://jwt.io 上來驗證它。
google的openid配置在那里: https://accounts.google.com/.well-known/openid-configuration 。 你有一個撤銷端點來做你需要的事情。
在您的 php 代碼中,我沒有看到您必須對 id_token 進行的驗證:
如果您不想對 PHP 代碼進行這些驗證(因為已經使用 google 的 js api 完成),請不要將 id_token 發送到后端。 發送 access_token。 它具有與 id_token 相同的生命周期。 您可以使用它通過端點 userinfo 獲取用戶信息。 您也可以撤銷它。
對於 web 應用程序來說,令牌的生命周期一定不是問題。 通過 google 驗證並驗證令牌信息后,您的應用需要使用 session 並使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.