mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-05-31 09:12:14 +00:00
Add SQL for Oracle at section USERS and revise ACL
I feel very painful when using SQL script for Oracle database. I set datatype, number(18), number(38) is too big, all character is uppercase (because Oracle database is case-insensitive). ACL's SQL script has script for Oracle database, but section USERS, AUTHORITIES has not SQL scrip for Oracle database, therefore I add more.
This commit is contained in:
parent
7f04d8d893
commit
594cacb0d6
@ -28,6 +28,24 @@ create table authorities (
|
|||||||
create unique index ix_auth_username on authorities (username,authority);
|
create unique index ix_auth_username on authorities (username,authority);
|
||||||
----
|
----
|
||||||
|
|
||||||
|
=== For Oracle database
|
||||||
|
[source]
|
||||||
|
----
|
||||||
|
CREATE TABLE USERS (
|
||||||
|
USERNAME NVARCHAR2(128) NOT NULL PRIMARY KEY,
|
||||||
|
PASSWORD NVARCHAR2(128) NOT NULL,
|
||||||
|
ENABLED CHAR(1) CHECK (ENABLED IN ('Y','N') ) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE AUTHORITIES (
|
||||||
|
USERNAME NVARCHAR2(128) NOT NULL,
|
||||||
|
AUTHORITY NVARCHAR2(128) NOT NULL
|
||||||
|
);
|
||||||
|
ALTER TABLE AUTHORITIES ADD CONSTRAINT AUTHORITIES_UNIQUE UNIQUE (USERNAME, AUTHORITY);
|
||||||
|
ALTER TABLE AUTHORITIES ADD CONSTRAINT AUTHORITIES_FK1 FOREIGN KEY (USERNAME) REFERENCES USERS (USERNAME) ENABLE;
|
||||||
|
----
|
||||||
|
|
||||||
==== Group Authorities
|
==== Group Authorities
|
||||||
Spring Security 2.0 introduced support for group authorities in `JdbcDaoImpl`.
|
Spring Security 2.0 introduced support for group authorities in `JdbcDaoImpl`.
|
||||||
The table structure if groups are enabled is as follows.
|
The table structure if groups are enabled is as follows.
|
||||||
@ -282,71 +300,66 @@ CREATE TABLE acl_entry (
|
|||||||
==== Oracle Database
|
==== Oracle Database
|
||||||
[source,ddl]
|
[source,ddl]
|
||||||
----
|
----
|
||||||
CREATE TABLE acl_sid (
|
CREATE TABLE ACL_SID (
|
||||||
id NUMBER(38) NOT NULL PRIMARY KEY,
|
ID NUMBER(18) PRIMARY KEY,
|
||||||
principal NUMBER(1) NOT NULL CHECK (principal in (0, 1)),
|
PRINCIPAL NUMBER(1) NOT NULL CHECK (PRINCIPAL IN (0, 1 )),
|
||||||
sid NVARCHAR2(100) NOT NULL,
|
SID NVARCHAR2(128) NOT NULL,
|
||||||
CONSTRAINT unique_acl_sid UNIQUE (sid, principal)
|
CONSTRAINT ACL_SID_UNIQUE UNIQUE (SID, PRINCIPAL)
|
||||||
);
|
);
|
||||||
CREATE SEQUENCE acl_sid_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
CREATE SEQUENCE ACL_SID_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
CREATE OR REPLACE TRIGGER acl_sid_id_trigger
|
CREATE OR REPLACE TRIGGER ACL_SID_SQ_TR BEFORE INSERT ON ACL_SID FOR EACH ROW
|
||||||
BEFORE INSERT ON acl_sid
|
|
||||||
FOR EACH ROW
|
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT acl_sid_sequence.nextval INTO :new.id FROM dual;
|
SELECT ACL_SID_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TABLE acl_class (
|
|
||||||
id NUMBER(38) NOT NULL PRIMARY KEY,
|
CREATE TABLE ACL_CLASS (
|
||||||
class NVARCHAR2(100) NOT NULL,
|
ID NUMBER(18) PRIMARY KEY,
|
||||||
CONSTRAINT uk_acl_class UNIQUE (class)
|
CLASS NVARCHAR2(128) NOT NULL,
|
||||||
|
CONSTRAINT ACL_CLASS_UNIQUE UNIQUE (CLASS)
|
||||||
);
|
);
|
||||||
CREATE SEQUENCE acl_class_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
CREATE SEQUENCE ACL_CLASS_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
CREATE OR REPLACE TRIGGER acl_class_id_trigger
|
CREATE OR REPLACE TRIGGER ACL_CLASS_ID_TR BEFORE INSERT ON ACL_CLASS FOR EACH ROW
|
||||||
BEFORE INSERT ON acl_class
|
|
||||||
FOR EACH ROW
|
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT acl_class_sequence.nextval INTO :new.id FROM dual;
|
SELECT ACL_CLASS_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TABLE acl_object_identity (
|
|
||||||
id NUMBER(38) NOT NULL PRIMARY KEY,
|
CREATE TABLE ACL_OBJECT_IDENTITY(
|
||||||
object_id_class NUMBER(38) NOT NULL,
|
ID NUMBER(18) PRIMARY KEY,
|
||||||
object_id_identity NVARCHAR2(36) NOT NULL,
|
OBJECT_ID_CLASS NUMBER(18) NOT NULL,
|
||||||
parent_object NUMBER(38),
|
OBJECT_ID_IDENTITY NVARCHAR2(64) NOT NULL,
|
||||||
owner_sid NUMBER(38),
|
PARENT_OBJECT NUMBER(18),
|
||||||
entries_inheriting NUMBER(1) NOT NULL CHECK (entries_inheriting in (0, 1)),
|
OWNER_SID NUMBER(18),
|
||||||
CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity),
|
ENTRIES_INHERITING NUMBER(1) NOT NULL CHECK (ENTRIES_INHERITING IN (0, 1)),
|
||||||
CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id),
|
CONSTRAINT ACL_OBJECT_IDENTITY_UNIQUE UNIQUE (OBJECT_ID_CLASS, OBJECT_ID_IDENTITY),
|
||||||
CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id),
|
CONSTRAINT ACL_OBJECT_IDENTITY_PARENT_FK FOREIGN KEY (PARENT_OBJECT) REFERENCES ACL_OBJECT_IDENTITY(ID),
|
||||||
CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id)
|
CONSTRAINT ACL_OBJECT_IDENTITY_CLASS_FK FOREIGN KEY (OBJECT_ID_CLASS) REFERENCES ACL_CLASS(ID),
|
||||||
|
CONSTRAINT ACL_OBJECT_IDENTITY_OWNER_FK FOREIGN KEY (OWNER_SID) REFERENCES ACL_SID(ID)
|
||||||
);
|
);
|
||||||
CREATE SEQUENCE acl_object_identity_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
CREATE SEQUENCE ACL_OBJECT_IDENTITY_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
CREATE OR REPLACE TRIGGER acl_object_identity_id_trigger
|
CREATE OR REPLACE TRIGGER ACL_OBJECT_IDENTITY_ID_TR BEFORE INSERT ON ACL_OBJECT_IDENTITY FOR EACH ROW
|
||||||
BEFORE INSERT ON acl_object_identity
|
|
||||||
FOR EACH ROW
|
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT acl_object_identity_sequence.nextval INTO :new.id FROM dual;
|
SELECT ACL_OBJECT_IDENTITY_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TABLE acl_entry (
|
|
||||||
id NUMBER(38) NOT NULL PRIMARY KEY,
|
CREATE TABLE ACL_ENTRY (
|
||||||
acl_object_identity NUMBER(38) NOT NULL,
|
ID NUMBER(18) NOT NULL PRIMARY KEY,
|
||||||
ace_order INTEGER NOT NULL,
|
ACL_OBJECT_IDENTITY NUMBER(18) NOT NULL,
|
||||||
sid NUMBER(38) NOT NULL,
|
ACE_ORDER INTEGER NOT NULL,
|
||||||
mask INTEGER NOT NULL,
|
SID NUMBER(18) NOT NULL,
|
||||||
granting NUMBER(1) NOT NULL CHECK (granting in (0, 1)),
|
MASK INTEGER NOT NULL,
|
||||||
audit_success NUMBER(1) NOT NULL CHECK (audit_success in (0, 1)),
|
GRANTING NUMBER(1) NOT NULL CHECK (GRANTING IN (0, 1)),
|
||||||
audit_failure NUMBER(1) NOT NULL CHECK (audit_failure in (0, 1)),
|
AUDIT_SUCCESS NUMBER(1) NOT NULL CHECK (AUDIT_SUCCESS IN (0, 1)),
|
||||||
CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order),
|
AUDIT_FAILURE NUMBER(1) NOT NULL CHECK (AUDIT_FAILURE IN (0, 1)),
|
||||||
CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id),
|
CONSTRAINT ACL_ENTRY_UNIQUE UNIQUE (ACL_OBJECT_IDENTITY, ACE_ORDER),
|
||||||
CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id)
|
CONSTRAINT ACL_ENTRY_OBJECT_FK FOREIGN KEY (ACL_OBJECT_IDENTITY) REFERENCES ACL_OBJECT_IDENTITY (ID),
|
||||||
|
CONSTRAINT ACL_ENTRY_ACL_FK FOREIGN KEY (SID) REFERENCES ACL_SID(ID)
|
||||||
);
|
);
|
||||||
CREATE SEQUENCE acl_entry_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
CREATE SEQUENCE ACL_ENTRY_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
CREATE OR REPLACE TRIGGER acl_entry_id_trigger
|
CREATE OR REPLACE TRIGGER ACL_ENTRY_ID_TRIGGER BEFORE INSERT ON ACL_ENTRY FOR EACH ROW
|
||||||
BEFORE INSERT ON acl_entry
|
|
||||||
FOR EACH ROW
|
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT acl_entry_sequence.nextval INTO :new.id FROM dual;
|
SELECT ACL_ENTRY_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
|
||||||
END;
|
END;
|
||||||
----
|
----
|
||||||
|
Loading…
x
Reference in New Issue
Block a user