2012-08-08 52 views
1

我正在寻找将Google身份验证器应用于CakePHP应用程序。诀窍是用户可以确定他们是否想使用它。这意味着如果用户使用多部分登录,他们将通常使用其用户名和密码登录。成功提交正确的用户名/密码组合后,他们需要重定向到要求Google Authenticator获得其密码的页面。CakePHP的Google身份验证器多部分(TOTP)登录实现

如何限制认证成功,直到他们输入密码后?我可以做重定向,一切就好了,但如果他们退出的密码形式,去到现场,他们用自己的用户名/密码已经认证,他们可以通过网站就好了导航。

我需要关于如何关闭认证的一些指导,直到密码确认成功后。有任何想法吗?

回答

2

我注意到这个问题是很老的和没有答复,我也相似,所以我将分享我的两分钱的东西工作。希望你现在已经解决了这个问题。

你的用户管理系统应提供整个登录过程中只完成后的会话密钥,这意味着你应该让用户在他们完成所有步骤都提供权威性的数据之后。

  1. 收到用户名和密码
  2. 支票凭证和身份验证选项
  3. 如果凭据是确定并没有启用谷歌验证,给他的会话密钥,否则重试
  4. 如果credetials是确定并启用谷歌验证,通过$ _ POST [“用户”]挑战形式
  5. 如果TOTP密码与服务器端的检查,返回会话密钥,否则重试
$_POST[] ----> loginCheck() ----> if(GAuth) ----> checkTotp() ----> sessionKey 
             |         | 
             *---------------------------------* 

loginCheck()应检查用户和密码都OK,否则拒绝访问

如果(GAuth)应返回true或false,depeding如果你的用户使用GAuth

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

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

或者适应这种想法你的需要......在我看来,你应该接受的时候,他通过了所有的认证试验系统中的用户。

你可以让用户表单hols用户名/密码和密码,然后一次处理所有数据,并避免两页。

了解更多关于https://tools.ietf.org/html/rfc6238

+0

这基本上是我终于实现了。感谢发布! – 2013-01-16 19:46:00

+0

好吧,祝你有个愉快的一天 – 2013-01-16 19:48:06