信任的设备
编辑本页信任的设备
它的作用
您可以让用户将设备标记为“受信任”,这意味着在该设备上传递后,将跳过双因素过程。
您必须在配置中启用此功能:
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ scheb_2fa.yamlscheb_two_factor:trusted_device:启用:假#是否启用可信设备特性生命周期:5184000#受信任设备令牌的生存期extend_lifetime:假#在重新登录时自动延长可信cookie的生命周期cookie_name:trusted_device#受信任设备cookie的名称cookie_secure:假#在可信设备cookie上设置“安全”(HTTPS Only)标志cookie_same_site:“宽松”# cookie的同站点选项可以是"lax"或"strict"cookie_domain:“.example.com”#设置cookie时使用的域,如果没有设置则回退到请求域cookie_path:“/”#设置cookie时使用的路径
受信任的设备cookie是有版本控制的,这给了你(或用户)一次使所有受信任的设备cookie失效的可能性,例如在安全漏洞的情况下。要使用此特性,必须实现Scheb \ TwoFactorBundle \ \ TrustedDeviceInterface模型
在用户实体中。
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
<?php名称空间Acme\演示\实体;使用学说\ORM\映射作为ORM;使用Scheb\TwoFactorBundle\模型\TrustedDeviceInterface;类用户实现了TrustedDeviceInterface{/ * * *@ORM\列(类型=“整数”)* /私人int$trustedVersion;/ /[…]公共函数getTrustedTokenVersion():int{返回$这->trustedVersion;}}
如果没有实现,bundle默认为version0
.
将设备标记为“受信任”
要将设备标记为“受信任”,在2fa进程的最后一步中,必须传递一个参数_trusted
与一个真正的
式的值。参数名称可在防火墙配置中修改:
1 2 3 4 5 6
安全:防火墙:your_firewall_name:#……two_factor:trusted_parameter_name:_trusted#受信任设备选项的参数名称
请看一下默认身份验证表单模板它是如何实现的。
清除受信任的cookie
要清除特定用户的所有可信cookie(例如,在安全问题的情况下),增加返回的版本getTrustedTokenVersion
在用户实体上。
如果需要以编程方式为特定用户和防火墙组合清除设备上的受信任cookie,则可以使用clearTrustedToken
方法。scheb_two_factor.trusted_token_storage
服务。
自定义可信设备管理器
如果您不喜欢这种实现方式,您也可以拥有自己的可信设备管理器。创建服务实现Scheb
并在配置中注册它:
1 2 3 4
#配置/包/ scheb_2fa.yamlscheb_two_factor:trusted_device:经理:acme.custom_trusted_device_manager#使用自定义可信设备管理器
可信设备条件
在设备被标记为“受信任”之前,有一种方法可以检查设备/用户是否满足某些条件。例如,您可能希望只在内部网络中允许受信任的设备。在这种情况下,请实现您自己的可信设备管理器实例(如上所述)并实现canSetTrustedDevice
方法,使用所需的决策逻辑。
1 2 3 4
公共函数canSetTrustedDevice($用户,请求$请求、字符串$firewallName):保龄球{返回真正的;//始终允许可信设备特性}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。