SecurityBundle配置("security")

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

SecurityBundle配置("security")

安全系统是Symfony最强大的部分之一,在很大程度上可以通过其配置进行控制。ob娱乐下载

全默认配置

以下是安全系统的完整默认配置。每个部分将在下一节中解释。

2.4

在Symfony 2.4中引入了将安全防火墙限制到特定主机的支持。ob娱乐下载

2.5

在Symfony 2.5中引入了将安全防火墙限制为特定http方法的支持。ob娱乐下载

  • YAML
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 207 207 208 209 211 212 213 214 215 216 217 218 219 220 221
# app / config / security.yml安全:access_denied_url:#示例:/foo/error403#策略可以是:none, migrate, invalidatesession_fixation_strategy:迁移hide_user_not_found:真正的always_authenticate_before_granting:erase_credentials:真正的access_decision_manager:策略:肯定的allow_if_all_abstain:allow_if_equal_granted_denied:真正的acl:# doctrine中配置的任何名称。dbal节连接:缓存:id:前缀:sf2_acl_供应商:表:类:acl_classes条目:acl_entriesobject_identity:acl_object_identitiesobject_identity_ancestors:acl_object_identity_ancestorssecurity_identity:acl_security_identities选民:allow_if_object_identity_unavailable:真正的编码器:#的例子:Acme \ DemoBundle \ \ User1实体:sha512Acme \ DemoBundle \ \ User2实体:算法:sha512encode_as_base64:真正的迭代:5000# PBKDF2编码器#关于安全性和速度的细节,请参阅下面关于PBKDF2的说明Acme \ \类\名称:算法:pbkdf2hash_algorithm:sha512encode_as_base64:真正的迭代:1000key_length:40#自定义编码器的选项/值示例Acme \ DemoBundle \ \ User3实体:id:my.encoder.id# BCrypt编码器#请参阅下面关于bcrypt的说明,以了解特定依赖项的详细信息Acme \ DemoBundle \ \ User4实体:算法:bcrypt成本:13#明文编码器#它不做任何编码Acme \ DemoBundle \ \ User5实体:算法:明文ignore_case:提供者:#需要#的例子:my_in_memory_provider:记忆:用户:foo:密码:喷火角色:ROLE_USER栏:密码:酒吧角色:[ROLE_USER,ROLE_ADMIN]my_entity_provider:实体:类:SecurityBundle:用户属性:用户名manager_name:示例自定义提供程序my_some_custom_provider:id:#链接一些供应商my_chain_provider:链:提供者:my_in_memory_provider,my_entity_provider防火墙:#需要#的例子:somename:模式:. *#限制防火墙到特定的主机主持人:admin \ .example \ com#限制防火墙到特定的HTTP方法方法:(,邮报》)request_matcher:some.service.idaccess_denied_url:/ foo / error403access_denied_handler:some.service.identry_point:some.service.id供应商:some_key_from_above#管理每个防火墙存储会话信息的位置#参见下面的“防火墙上下文”了解更多细节背景:context_key无状态:x509:供应商:some_key_from_abovehttp_basic:供应商:some_key_from_abovehttp_digest:供应商:some_key_from_aboveform_login:#在这里提交登录表单check_path:/ login_check#用户在需要登录时被重定向到这里login_path:/登录#如果为真,则将用户转发到登录表单,而不是重定向use_forward:#登录成功重定向选项(进一步阅读下面)always_use_default_target_path:default_target_path:/target_path_parameter:_target_pathuse_referer:#登录失败重定向选项(进一步阅读下面)failure_path:/ foofailure_forward:failure_path_parameter:_failure_pathfailure_handler:some.service.idsuccess_handler:some.service.id#用户名和密码字段的名称username_parameter:_usernamepassword_parameter:_password# CSRF令牌选项csrf_parameter:_csrf_token意愿:进行身份验证csrf_provider:my.csrf_provider.id默认情况下,登录表单*必须*是POST,而不是GETpost_only:真正的remember_me:#缺省情况下,在提交认证请求之前,会话必须已经存在#如果为false,则在身份验证期间不会调用Request::hasPreviousSession# Symfonyob娱乐下载 2.3新功能require_previous_session:真正的remember_me:token_provider:的名字关键:someS3cretKey名称:NameOfTheCookie生命周期:3600#以秒为单位路径:/ foo域:somedomain.foo安全:httponly:真正的always_remember_me:remember_me_parameter:_remember_me注销:路径:/注销目标:/invalidate_session:delete_cookies:答:路径:域:b:路径:域:处理程序:[some.service.id,another.service.id]success_handler:some.service.id匿名:#防火墙的默认值和选项some_firewall_listener:模式:安全:真正的request_matcher:access_denied_url:access_denied_handler:entry_point:供应商:无状态:背景:注销:csrf_parameter:_csrf_tokencsrf_provider:意愿:注销路径:/注销目标:/success_handler:invalidate_session:真正的delete_cookies:#原型名称:路径:域:处理程序:[]匿名:关键:4 f954a0667e01switch_user:供应商:参数:_switch_user角色:ROLE_ALLOWED_TO_SWITCHaccess_control:requires_channel:使用urldecoded格式路径:#示例:^/资源/的路径主持人:“诱导多能性”:[]方法:[]角色:[]role_hierarchy:ROLE_ADMIN:[ROLE_ORGANIZER,ROLE_USER]ROLE_SUPERADMIN:(ROLE_ADMIN)

表单登录配置

当使用form_login防火墙下的身份验证侦听器,有几个常用选项用于配置“表单登录”体验。

有关更多细节,请参见如何自定义您的表单登录

登录表单和过程

login_path

类型字符串默认的/登录

这是用户将被重定向到的路由或路径(除非use_forward设置为真正的),当他们试图访问受保护的资源,但没有完全验证。

这条路必须可由普通的、未经身份验证的用户访问,否则可能创建重定向循环。详情见“避免常见陷阱".

check_path

类型字符串默认的/ login_check

这是您的登录表单必须提交的路由或路径。防火墙将拦截任何请求(帖子默认情况下,仅请求)到此URL并处理提交的登录凭据。

确保这个URL被你的主防火墙覆盖(也就是说,不要为它单独创建一个防火墙check_pathURL)。

use_forward

类型布尔默认的

如果希望用户被转发到登录表单,而不是被重定向,请将此选项设置为真正的

username_parameter

类型字符串默认的_username

这是您应该提供给登录表单的用户名字段的字段名。当您将表单提交给check_path,安全系统将使用此名称查找POST参数。

password_parameter

类型字符串默认的_password

这是您应该提供给登录表单的密码字段的字段名。当您将表单提交给check_path,安全系统将使用此名称查找POST参数。

post_only

类型布尔默认的真正的

默认情况下,必须将登录表单提交给check_pathURL作为POST请求。通过将此选项设置为,您可以发送一个GET请求check_pathURL。

登录后重定向

  • always_use_default_target_path(类型:布尔违约:
  • default_target_path(类型:字符串违约:/
  • target_path_parameter(类型:字符串违约:_target_path
  • use_referer(类型:布尔违约:

使用PBKDF2编码器:安全性和速度

PBKDF2编码器提供了高水平的密码安全,由国家标准与技术研究所(NIST)推荐。

你可以看到一个例子pbkdf2编码器在该页的YAML块。

但是使用PBKDF2也需要一个警告:使用它(伴随着大量的迭代)减慢了过程。因此,PBKDF2应谨慎使用。

一个好的配置至少在1000次迭代和sha512左右。

使用BCrypt密码编码器

谨慎

要使用此编码器,您需要使用PHP Version 5.5或安装ircmaxell / password-compat库通过作曲家。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
# app / config / security.yml安全:#……编码器:ob娱乐下载Symfony核心组件\ \安全\ \ \用户:算法:bcrypt成本:15

成本可以在的范围内4-31并确定密码编码的长度。的每一增量成本双打编码密码所花费的时间。

如果你不提供成本选项,默认的代价13使用。

请注意

您可以随时更改成本-即使您已经使用不同的成本编码了一些密码。新密码将使用新的代价进行编码,而已经编码的密码将使用编码时使用的代价进行验证。

为每个新密码自动生成一个salt,不需要持久化。由于编码后的密码包含用于编码的盐,因此仅持久化编码后的密码就足够了。

请注意

所有编码的密码都是60字符很长,所以请确保为它们分配足够的空间进行持久化。

防火墙的上下文

大多数应用程序只需要一个防火墙.但是如果你的申请使用多个防火墙,您会注意到,如果您在一个防火墙中进行了身份验证,那么在另一个防火墙中就不会自动进行身份验证。换句话说,这些系统不共享一个共同的“上下文”:每个防火墙就像一个单独的安全系统。

但是,每个防火墙都有一个可选的上下文密钥(默认为防火墙的名称),用于在会话中存储和从会话中检索安全数据。如果这个键在多个防火墙中被设置为相同的值,“context”实际上可以被共享:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
# app / config / security.yml安全:#……防火墙:somename:#……背景:my_contextothername:#……背景:my_context

http摘要认证

要使用HTTP-Digest身份验证,您需要提供一个域和一个密钥:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / security.yml安全:防火墙:somename:http_digest:关键:“a_random_string”域:“安全api”
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。