在 PHP 中使用 Google 重新验证时如何强制提示密码?

How to force password prompt when re-authenticating with Google in PHP?

我已经在我的 PHP 网站上实施了 Google OAuth2,登录工作正常。但退出后,用户不再需要输入其 Google 帐户的密码;他们只需在出现的列表中单击他们的 Google 帐户,他们就会返回。这不是安全风险吗?

这是一个基本的 PHP 7.4 设置 google-api-php-客户端版本 2.2.2.

我使用

注销用户
unset($_SESSION["access_token"]);
$gClient->revokeToken();
session_destroy();

因为我将访问令牌存储在会话变量中。

我希望登录过程-输入google账户名-下一步-输入密码-下一步-无论您是第一次登录还是后续登录都是一样的。但是在第一次之后没有提示你输入密码。

我尝试包含一个包含 google 注销页面的隐藏 iframe,如下所示:

<iframe id="logoutframe" src="https://accounts.google.com/logout" style="display: none"></iframe>

但这让我完全退出 - 在其他浏览器选项卡的其他网站上也是如此,我发现这很不方便。

您已经通过 Google 的身份验证,因此您不必重新输入密码。

强制注销 - 正如您使用 iframe 实现的那样 - 导致您注销 Google 帐户,这给您带来了不便。

一旦您的应用程序获得访问您的 Google 帐户的权限,并且您处于活动的 Google 身份验证状态,系统将不会提示您输入密码。这就是 OAuth2 的工作方式,也是设计使然。