谷歌身份验证
编辑该页面谷歌身份验证
谷歌身份验证是一个流行的实现你觉得算法生成验证码。相比你觉得双重提供者实现有一个固定的配置,需要兼容谷歌身份验证应用程序:
- 它生成6位编码
- 代码改变每30秒
- 它使用sha1哈希算法
如果您需要不同的设置,请使用你觉得双重提供者。警告说,定制你觉得配置有可能不会与谷歌身份验证应用程序兼容。
身份验证是如何工作的
用户账户链接到谷歌身份验证应用程序。这是通过代码生成共享密钥,这是存储在用户实体。用户的代码添加到谷歌身份验证应用程序通过手动输入,或扫描QR自动传输信息。
在成功的身份验证包检查如果有秘密存储在用户实体。如果是这样的话,它将要求身份验证代码。目前用户必须输入的代码显示在谷歌身份验证应用程序获得。
看到的更多信息谷歌身份验证的网站。
基本配置
使这个认证方法添加到您的配置:
1 2 3 4
#配置/包/ scheb_2fa.yamlscheb_two_factor:谷歌:启用:真正的
您的用户实体来实现Scheb
。激活谷歌身份验证的用户,与用户生成一个秘密代码和保存它的实体。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37
< ? php名称空间Acme\演示\实体;使用学说\ORM\映射作为ORM;使用Scheb\TwoFactorBundle\模型\谷歌\TwoFactorInterface;使用ob娱乐下载\组件\安全\核心\用户\用户界面;类用户实现了用户界面,TwoFactorInterface{/ * * *@ORM\列(name = " googleAuthenticatorSecret " type =“字符串”,可空= true) * /私人字符串?美元googleAuthenticatorSecret;/ / […]公共函数isGoogleAuthenticatorEnabled():bool{返回零= = !美元这- >googleAuthenticatorSecret;}公共函数getGoogleAuthenticatorUsername():字符串{返回美元这- >用户名;}公共函数getGoogleAuthenticatorSecret():哦?字符串{返回美元这- >googleAuthenticatorSecret;}公共函数setGoogleAuthenticatorSecret字符串(?美元googleAuthenticatorSecret):无效{美元这- >googleAuthenticatorSecret =美元googleAuthenticatorSecret;}}
配置引用
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ scheb_2fa.yamlscheb_two_factor:谷歌:启用:真正的#如果谷歌身份验证应该启用,默认的错误server_name:服务器的名字#服务器名称用于二维码发行机构:发行人的名字#发行人名称中使用二维码数字:6#位数验证码的数量亮点:1#取决于Spomky-Labs / otphp使用的版本:#直到v10:有多少代码当前之前/之后人会被接受#从v11:可接受的时间漂移在秒模板:安全/ 2 fa_form.html.twig#模板用来显示表单身份验证
自定义的身份验证表单模板
包使用资源/视图/认证/ form.html.twig
身份验证形式呈现。如果你想使用一个不同的模板你可以简单的寄存器配置:
1 2 3 4
#配置/包/ scheb_2fa.yamlscheb_two_factor:谷歌:模板:安全/ 2 fa_form.html.twig
定制的形式呈现
在某些情况下,它是不够的只是改变模板。例如,你用双因素身份验证在多个防火墙,你需要呈现不同的形式为每一个防火墙。在这种情况下您可以实现一种渲染器完全自定义呈现逻辑。
创建一个类实现Scheb
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
< ? php名称空间Acme\演示\FormRenderer;使用Scheb\TwoFactorBundle\安全\TwoFactor\提供者\TwoFactorFormRendererInterface;使用ob娱乐下载\组件\HttpFoundation\请求;使用ob娱乐下载\组件\HttpFoundation\响应;类MyFormRenderer实现了TwoFactorFormRendererInterface{/ / […]公共函数renderForm(请求美元请求数组,美元templateVars):响应{/ /自定义形式呈现}}
然后作为服务注册和更新您的配置:
1 2 3 4
#配置/包/ scheb_2fa.yamlscheb_two_factor:谷歌:form_renderer:acme.custom_form_renderer_service
生成一个密码
服务scheb_two_factor.security.google_authenticator
提供一种方法来生成新的秘密谷歌身份验证。连接的Scheb
也是可能的。
1
美元秘密=美元容器- >get (“scheb_two_factor.security.google_authenticator”)- >generateSecret ();