{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
1.安全数据库架构框架使用了各种数据库模式,本附录为它们提供了一个参考点。您只需要提供所需功能区域的表格。
给出了hsqldb数据库的ddl语句。您可以使用这些作为定义正在使用的数据库的架构的指导。
1.1。用户架构userdetailsservice(jdbcdaoimpl)的标准jdbc实现要求表加载密码,帐户状态(启用或禁用)以及用户权限列表(角色)。您将需要调整此模式以匹配您正在使用的数据库方言。
createtableusers(usernamevarchar_ignorecase(50)notnullprimarykey,passwordvarchar_ignorecase(50)notnull,enabledbooleannotnull);createtableauthorities(usernamevarchar_ignorecase(50)notnull,authorityvarchar_ignorecase(50)notnull,constraintfk_authorities_usersforeignkey(username)referencesusers(username));createuniqueindexix_auth_usernameonauthorities(username,authority);
1.1.1。集团主管部门springsecurity2.0引入了对jdbcdaoimpl中的组管理员的支持。如果组启用,表结构如下。您将需要调整此模式以匹配您正在使用的数据库方言。
createtablegroups(idbigintgeneratedbydefaultasidentity(startwith0)primarykey,group_namevarchar_ignorecase(50)notnull);createtablegroup_authorities(group_idbigintnotnull,authorityvarchar(50)notnull,constraintfk_group_authorities_groupforeignkey(group_id)referencesgroups(id));createtablegroup_members(idbigintgeneratedbydefaultasidentity(startwith0)primarykey,usernamevarchar(50)notnull,group_idbigintnotnull,constraintfk_group_members_groupforeignkey(group_id)referencesgroups(id));
请记住,只有在使用提供的jdbcuserdetailsservice实现时,才需要这些表。如果您自己编写或选择在没有userdetailsservice的情况下实施authenticationprovider,则只要符合接口合同,就可以完全自由地存储数据。
1.2。持久登录(记住我)模式此表用于存储由更安全的持久令牌remember-me实现使用的数据。如果您直接或通过命名空间使用jdbctokenrepositoryimpl,那么您将需要此表。请记住调整此模式以匹配您正在使用的数据库方言。
createtablepersistent_logins(usernamevarchar(64)notnull,seriesvarchar(64)primarykey,tokenvarchar(64)notnull,last_usedtimestampnotnull);
1.3。acl模式springsecurityacl使用了四个表。
假设数据库将自动生成每个身份的主键。当它在acl_sid或acl_class表中创建一个新行时,jdbcmutableaclservice必须能够检索这些。它有两个属性定义了检索这些值classidentityquery和sididentityquery所需的sql。这两个默认调用identity()
acl工件jar包含用于在hypersql(hsqldb),postgresql,mysql/mariadb,microsoftsqlserver和oracle数据库中创建acl模式的文件。这些模式也在以下部分中演示。
mysql
createtableacl_sid(idbigintunsignednotnullauto_incrementprimarykey,principalbooleannotnull,sidvarchar(100)notnull,uniquekeyunique_acl_sid(sid,principal))engine=innodb;createtableacl_class(idbigintunsignednotnullauto_incrementprimarykey,classvarchar(100)notnull,uniquekeyuk_acl_class(class))engine=innodb;createtableacl_object_identity(idbigintunsignednotnullauto_incrementprimarykey,object_id_classbigintunsignednotnull,object_id_identitybigintnotnull,parent_objectbigintunsigned,owner_sidbigintunsigned,entries_inheritingbooleannotnull,uniquekeyuk_acl_object_identity(object_id_class,object_id_identity),constraintfk_acl_object_identity_parentforeignkey(parent_object)referencesacl_object_identity(id),constraintfk_acl_object_identity_classforeignkey(object_id_class)referencesacl_class(id),constraintfk_acl_object_identity_ownerforeignkey(owner_sid)referencesacl_sid(id))engine=innodb;createtableacl_entry(idbigintunsignednotnullauto_incrementprimarykey,acl_object_identitybigintunsignednotnull,ace_orderintegernotnull,sidbigintunsignednotnull,maskintegerunsignednotnull,grantingbooleannotnull,audit_successbooleannotnull,audit_failurebooleannotnull,uniquekeyunique_acl_entry(acl_object_identity,ace_order),constraintfk_acl_entry_objectforeignkey(acl_object_identity)referencesacl_object_identity(id),constraintfk_acl_entry_aclforeignkey(sid)referencesacl_sid(id))engine=innodb;
oracle
createtableacl_sid(idnumber(38)notnullprimarykey,principalnumber(1)notnullcheck(principalin(0,1)),sidnvarchar2(100)notnull,constraintunique_acl_sidunique(sid,principal));createsequenceacl_sid_sequencestartwith1incrementby1nomaxvalue;createorreplacetriggeracl_sid_id_triggerbeforeinsertonacl_sidforeachrowbeginselectacl_sid_sequence.nextvalinto:new.idfromdual;end;createtableacl_class(idnumber(38)notnullprimarykey,classnvarchar2(100)notnull,constraintuk_acl_classunique(class));createsequenceacl_class_sequencestartwith1incrementby1nomaxvalue;createorreplacetriggeracl_class_id_triggerbeforeinsertonacl_classforeachrowbeginselectacl_class_sequence.nextvalinto:new.idfromdual;end;createtableacl_object_identity(idnumber(38)notnullprimarykey,object_id_classnumber(38)notnull,object_id_identitynumber(38)notnull,parent_objectnumber(38),owner_sidnumber(38),entries_inheritingnumber(1)notnullcheck(entries_inheritingin(0,1)),constraintuk_acl_object_identityunique(object_id_class,object_id_identity),constraintfk_acl_object_identity_parentforeignkey(parent_object)referencesacl_object_identity(id),constraintfk_acl_object_identity_classforeignkey(object_id_class)referencesacl_class(id),constraintfk_acl_object_identity_ownerforeignkey(owner_sid)referencesacl_sid(id));createsequenceacl_object_identity_sequencestartwith1incrementby1nomaxvalue;createorreplacetriggeracl_object_identity_id_triggerbeforeinsertonacl_object_identityforeachrowbeginselectacl_object_identity_sequence.nextvalinto:new.idfromdual;end;createtableacl_entry(idnumber(38)notnullprimarykey,acl_object_identitynumber(38)notnull,ace_orderintegernotnull,sidnumber(38)notnull,maskintegernotnull,grantingnumber(1)notnullcheck(grantingin(0,1)),audit_successnumber(1)notnullcheck(audit_successin(0,1)),audit_failurenumber(1)notnullcheck(audit_failurein(0,1)),constraintunique_acl_entryunique(acl_object_identity,ace_order),constraintfk_acl_entry_objectforeignkey(acl_object_identity)referencesacl_object_identity(id),constraintfk_acl_entry_aclforeignkey(sid)referencesacl_sid(id));createsequenceacl_entry_sequencestartwith1incrementby1nomaxvalue;createorreplacetriggeracl_entry_id_triggerbeforeinsertonacl_entryforeachrowbeginselectacl_entry_sequence.nextvalinto:new.idfromdual;end;
2.安全名称空间本附录提供了对安全命名空间中可用的元素的引用以及它们创建的基础bean的信息(假设各个类的知识以及它们如何协同工作)-您可以在本文档中的javadoc和其他地方找到更多信息)。如果以前没有使用命名空间,请阅读命名空间配置的入门章节,因为这是为了补充信息。建议在编辑基于模式的配置时使用高质量的xml编辑器,因为这将提供有关哪些元素和属性可用的上下文信息以及解释其目的的注释。命名空间以relaxngcompact格式编写,后来转换为xsd模式。如果您熟悉此格式,则可能希望直接检查模式文件。
2.1。web应用程序安全2.1.1。
2.1.2。
需要引用authenticationmanager的所有过滤器将自动注入由命名空间配置创建的内部实例(有关authenticationmanager的更多信息,请参阅介绍章节)。
每个
childelementsof
access-denied-handler
anonymous
csrf
custom-filter
expression-handler
form-login
headers
http-basic
intercept-url
jee
logout
openid-login
port-mappings
remember-me
request-cache
session-management
2.1.3。
http
2.1.4。
http
cache-control
content-type-options
frame-options
header
hsts
2.1.5。
headers
2.1.6。
头
2.1.7。<帧选项>启用时,将x-frame-options头添加到响应中,这样可以让较新的浏览器进行一些安全检查并防止劫持攻击。
...