1

我希望将 Google Authenticator 实现到 CakePHP 应用程序中。诀窍是用户可以确定他们是否要使用它。这意味着如果用户使用多部分登录,他们将使用他们的用户名和密码正常登录。一旦他们成功提交了正确的用户名/密码组合,他们需要被重定向到向 Google Authenticator 询问密码的页面。

在他们输入密码之前,您如何限制身份验证成功?我可以进行重定向,一切都很好,但是如果他们退出密码表单并进入该站点,他们已经使用他们的用户名/密码进行了身份验证,他们可以很好地浏览该站点。

在密码确认成功之前,我需要一些关于如何关闭身份验证的指导。有任何想法吗?

4

1 回答 1

2

我注意到这个问题很老而且没有答案,我也在做类似的事情,所以我会分享我的两分钱。希望你现在已经解决了这个问题。

您的用户管理系统应仅在完成整个登录过程后才提供会话密钥,这意味着您应仅在用户通过所有步骤提供所有身份验证数据后才允许用户进入。

  1. 接收用户名和密码
  2. 检查凭据和身份验证选项
  3. 如果凭据正常且未启用 Google 身份验证,请给他会话密钥,否则重试
  4. 如果凭据正常并且启用了 Google 身份验证,则将 $_POST['user'] 传递给质询表单
  5. 如果 TOTP 密码匹配服务器端检查,则返回会话密钥,否则重试
$_POST[] ----> loginCheck() ----> if(GAuth) ----> checkTotp() ----> sessionKey
                                      |                                 |
                                      *---------------------------------*

loginCheck() 应该检查用户和密码是否正确,否则拒绝访问

if(GAuth) 应该返回 true 或 false,取决于您的用户是否使用 GAuth

checkTotp 应该是一种在客户端和服务器上检查 TOTP 密码的方法

sessionKey 应该是用来访问受保护内容的令牌,在服务器端和客户端存储一段时间

或者根据您的需要调整这个想法......在我看来,当他通过所有身份验证试验时,您应该接受系统中的用户。

您可以制作一个包含用户/密码和密码的用户表单,并一次处理所有数据并避免两页。

阅读更多关于https://www.rfc-editor.org/rfc/rfc6238

于 2013-01-16T19:31:04.217 回答