信任的设备

编辑本页

信任的设备

先决条件

要使用此功能,必须安装scheb / 2 fa-trusted-device

1
编写器需要scheb/2fa-trusted-device

它的作用

您可以让用户将设备标记为“受信任”,这意味着在该设备上传递后,将跳过双因素过程。

您必须在配置中启用此功能:

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使用SchebTwoFactorBundle模型TrustedDeviceInterface用户实现了TrustedDeviceInterface/ * * *@ORM\列(类型=“整数”)* /私人inttrustedVersion/ /[…]公共函数getTrustedTokenVersion()int返回->trustedVersion;}}

如果没有实现,bundle默认为version0

将设备标记为“受信任”

要将设备标记为“受信任”,在2fa进程的最后一步中,必须传递一个参数_trusted与一个真正的式的值。参数名称可在防火墙配置中修改:

1 2 3 4 5 6
安全:防火墙:your_firewall_name:#……two_factor:trusted_parameter_name:_trusted#受信任设备选项的参数名称

请看一下默认身份验证表单模板它是如何实现的。

要清除特定用户的所有可信cookie(例如,在安全问题的情况下),增加返回的版本getTrustedTokenVersion在用户实体上。

如果需要以编程方式为特定用户和防火墙组合清除设备上的受信任cookie,则可以使用clearTrustedToken方法。scheb_two_factor.trusted_token_storage服务。

自定义可信设备管理器

如果您不喜欢这种实现方式,您也可以拥有自己的可信设备管理器。创建服务实现Scheb\ TwoFactorBundle\安全\ TwoFactor\信任\ TrustedDeviceManagerInterface并在配置中注册它:

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许可证。