Skip to content

Commit 6f09eb0

Browse files
authored
Merge pull request #5790 from Thumimku/np-5.11-db-change
[5.11] [NP_AT] Update tested dbs
2 parents fafeab5 + 6d8dc3b commit 6f09eb0

File tree

1 file changed

+1
-283
lines changed

1 file changed

+1
-283
lines changed

en/identity-server/5.11.0/docs/setup/token-persistence.md

Lines changed: 1 addition & 283 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ and is executed as follows:
123123
By default, JWT access-token generation or validation triggers interactions with the database. JWT access-token persistence differs from opaque-token persistence, where an existing active token is retrieved during a token request. The issuer always issues a new JWT access token. The following sections explain how to optimize the default JWT persistence in Identity Server using **non-persistent access token**.
124124

125125
!!! note
126-
This feature is available for **WSO2 Identity Server 5.11.0** as of **update level 410**.
126+
This feature is available for **WSO2 Identity Server 5.11.0** as of **update level 410** and currently supports **H2** and **MySQL** databases.
127127

128128
### Why optimize JWT Acces token persistence?
129129

@@ -199,57 +199,6 @@ In large-scale WSO2 Identity Server deployments, especially with millions of use
199199

200200
1. Add following tables to the `IDENTITY_DB`.
201201

202-
??? Example "DB2"
203-
204-
```sql
205-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN (
206-
REFRESH_TOKEN_ID VARCHAR (255),
207-
REFRESH_TOKEN VARCHAR(2048),
208-
CONSUMER_KEY_ID INTEGER,
209-
AUTHZ_USER VARCHAR (100),
210-
TENANT_ID INTEGER,
211-
USER_DOMAIN VARCHAR(50),
212-
GRANT_TYPE VARCHAR (50),
213-
REFRESH_TOKEN_TIME_CREATED TIMESTAMP,
214-
REFRESH_TOKEN_VALIDITY_PERIOD BIGINT,
215-
TOKEN_SCOPE_HASH VARCHAR(32),
216-
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
217-
SUBJECT_IDENTIFIER VARCHAR(255),
218-
REFRESH_TOKEN_HASH VARCHAR(512),
219-
IDP_ID INTEGER DEFAULT -1 NOT NULL,
220-
PRIMARY KEY (REFRESH_TOKEN_ID),
221-
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE) INDEX IN TS32K
222-
/
223-
224-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN_SCOPE (
225-
REFRESH_TOKEN_ID VARCHAR (255) NOT NULL,
226-
TOKEN_SCOPE VARCHAR (255) NOT NULL,
227-
TENANT_ID INTEGER DEFAULT -1,
228-
PRIMARY KEY (REFRESH_TOKEN_ID, TOKEN_SCOPE),
229-
FOREIGN KEY (REFRESH_TOKEN_ID) REFERENCES IDN_OAUTH2_REFRESH_TOKEN(REFRESH_TOKEN_ID) ON DELETE CASCADE)
230-
/
231-
232-
CREATE TABLE IDN_OAUTH2_REVOKED_TOKENS (
233-
UUID VARCHAR(255) NOT NULL,
234-
TOKEN_IDENTIFIER VARCHAR(2048) NOT NULL,
235-
CONSUMER_KEY VARCHAR(255) NOT NULL,
236-
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
237-
EXPIRY_TIMESTAMP TIMESTAMP NOT NULL,
238-
PRIMARY KEY (UUID))
239-
/
240-
241-
CREATE TABLE IDN_SUBJECT_ENTITY_REVOKED_EVENT (
242-
EVENT_ID VARCHAR(255) NOT NULL,
243-
ENTITY_ID VARCHAR(255) NOT NULL,
244-
ENTITY_TYPE VARCHAR(255) NOT NULL,
245-
TIME_REVOKED TIMESTAMP NOT NULL,
246-
TENANT_ID INTEGER DEFAULT -1,
247-
PRIMARY KEY (EVENT_ID),
248-
CONSTRAINT CON_SUB_EVT_KEY UNIQUE (ENTITY_ID, ENTITY_TYPE, TENANT_ID))
249-
/
250-
251-
252-
```
253202

254203
??? Example "H2"
255204

@@ -301,61 +250,6 @@ In large-scale WSO2 Identity Server deployments, especially with millions of use
301250
);
302251
```
303252

304-
??? Example "MsSQL"
305-
306-
```sql
307-
308-
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_REFRESH_TOKEN]') AND TYPE IN (N'U'))
309-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN (
310-
REFRESH_TOKEN_ID VARCHAR (255),
311-
REFRESH_TOKEN VARCHAR(2048),
312-
CONSUMER_KEY_ID INTEGER,
313-
AUTHZ_USER VARCHAR (100),
314-
TENANT_ID INTEGER,
315-
USER_DOMAIN VARCHAR(50),
316-
GRANT_TYPE VARCHAR (50),
317-
REFRESH_TOKEN_TIME_CREATED DATETIME,
318-
REFRESH_TOKEN_VALIDITY_PERIOD BIGINT,
319-
TOKEN_SCOPE_HASH VARCHAR(32),
320-
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
321-
SUBJECT_IDENTIFIER VARCHAR(255),
322-
REFRESH_TOKEN_HASH VARCHAR(512),
323-
IDP_ID INTEGER DEFAULT -1 NOT NULL,
324-
PRIMARY KEY (REFRESH_TOKEN_ID),
325-
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
326-
);
327-
328-
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_REFRESH_TOKEN_SCOPE]') AND TYPE IN (N'U'))
329-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN_SCOPE (
330-
REFRESH_TOKEN_ID VARCHAR (255),
331-
TOKEN_SCOPE VARCHAR (255),
332-
TENANT_ID INTEGER DEFAULT -1,
333-
PRIMARY KEY (REFRESH_TOKEN_ID, TOKEN_SCOPE),
334-
FOREIGN KEY (REFRESH_TOKEN_ID) REFERENCES IDN_OAUTH2_REFRESH_TOKEN(REFRESH_TOKEN_ID) ON DELETE CASCADE
335-
);
336-
337-
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_REVOKED_TOKENS]') AND TYPE IN (N'U'))
338-
CREATE TABLE IDN_OAUTH2_REVOKED_TOKENS (
339-
UUID VARCHAR(255) NOT NULL,
340-
TOKEN_IDENTIFIER VARCHAR(2048) NOT NULL,
341-
CONSUMER_KEY VARCHAR(255) NOT NULL,
342-
TIME_CREATED DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
343-
EXPIRY_TIMESTAMP DATETIME NOT NULL,
344-
PRIMARY KEY (UUID)
345-
);
346-
347-
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_SUBJECT_ENTITY_REVOKED_EVENT]') AND TYPE IN (N'U'))
348-
CREATE TABLE IDN_SUBJECT_ENTITY_REVOKED_EVENT (
349-
EVENT_ID VARCHAR(255) NOT NULL,
350-
ENTITY_ID VARCHAR(255) NOT NULL,
351-
ENTITY_TYPE VARCHAR(255) NOT NULL,
352-
TIME_REVOKED DATETIME NOT NULL,
353-
TENANT_ID INTEGER DEFAULT -1,
354-
PRIMARY KEY (EVENT_ID),
355-
CONSTRAINT CON_SUB_EVT_KEY UNIQUE (ENTITY_ID, ENTITY_TYPE, TENANT_ID)
356-
);
357-
```
358-
359253
??? Example "MYSQL"
360254

361255
```sql
@@ -494,182 +388,6 @@ In large-scale WSO2 Identity Server deployments, especially with millions of use
494388

495389
```
496390

497-
??? Example "Oracle"
498-
499-
```sql
500-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN (
501-
REFRESH_TOKEN_ID VARCHAR (255),
502-
REFRESH_TOKEN VARCHAR(2048),
503-
CONSUMER_KEY_ID INTEGER,
504-
AUTHZ_USER VARCHAR (100),
505-
TENANT_ID INTEGER,
506-
USER_DOMAIN VARCHAR(50),
507-
GRANT_TYPE VARCHAR (50),
508-
REFRESH_TOKEN_TIME_CREATED TIMESTAMP,
509-
REFRESH_TOKEN_VALIDITY_PERIOD BIGINT,
510-
TOKEN_SCOPE_HASH VARCHAR(32),
511-
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
512-
SUBJECT_IDENTIFIER VARCHAR(255),
513-
REFRESH_TOKEN_HASH VARCHAR(512),
514-
IDP_ID INTEGER DEFAULT -1 NOT NULL,
515-
PRIMARY KEY (REFRESH_TOKEN_ID),
516-
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
517-
)
518-
/
519-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN_SCOPE (
520-
REFRESH_TOKEN_ID VARCHAR2 (255),
521-
TOKEN_SCOPE VARCHAR2 (255),
522-
TENANT_ID INTEGER DEFAULT -1,
523-
PRIMARY KEY (REFRESH_TOKEN_ID, TOKEN_SCOPE),
524-
FOREIGN KEY (REFRESH_TOKEN_ID) REFERENCES IDN_OAUTH2_REFRESH_TOKEN(REFRESH_TOKEN_ID) ON DELETE CASCADE
525-
)
526-
/
527-
528-
CREATE TABLE IDN_OAUTH2_REVOKED_TOKENS (
529-
UUID VARCHAR(255) NOT NULL,
530-
TOKEN_IDENTIFIER VARCHAR(2048) NOT NULL,
531-
CONSUMER_KEY VARCHAR(255) NOT NULL,
532-
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
533-
EXPIRY_TIMESTAMP TIMESTAMP NOT NULL,
534-
PRIMARY KEY (UUID)
535-
)
536-
/
537-
538-
CREATE TABLE IDN_SUBJECT_ENTITY_REVOKED_EVENT (
539-
EVENT_ID VARCHAR(255) NOT NULL,
540-
ENTITY_ID VARCHAR(255) NOT NULL,
541-
ENTITY_TYPE VARCHAR(255) NOT NULL,
542-
TIME_REVOKED TIMESTAMP NOT NULL,
543-
TENANT_ID INTEGER DEFAULT -1,
544-
PRIMARY KEY (EVENT_ID),
545-
CONSTRAINT CON_SUB_EVT_KEY UNIQUE (ENTITY_ID, ENTITY_TYPE, TENANT_ID)
546-
)
547-
/
548-
```
549-
550-
??? Example "OracleRac"
551-
552-
```sql
553-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN (
554-
REFRESH_TOKEN_ID VARCHAR (255),
555-
REFRESH_TOKEN VARCHAR(2048),
556-
CONSUMER_KEY_ID INTEGER,
557-
AUTHZ_USER VARCHAR (100),
558-
TENANT_ID INTEGER,
559-
USER_DOMAIN VARCHAR(50),
560-
GRANT_TYPE VARCHAR (50),
561-
REFRESH_TOKEN_TIME_CREATED TIMESTAMP,
562-
REFRESH_TOKEN_VALIDITY_PERIOD BIGINT,
563-
TOKEN_SCOPE_HASH VARCHAR(32),
564-
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
565-
SUBJECT_IDENTIFIER VARCHAR(255),
566-
REFRESH_TOKEN_HASH VARCHAR(512),
567-
IDP_ID INTEGER DEFAULT -1 NOT NULL,
568-
PRIMARY KEY (REFRESH_TOKEN_ID),
569-
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
570-
)
571-
/
572-
CREATE TABLE IDN_OAUTH2_REFRESH_TOKEN_SCOPE (
573-
REFRESH_TOKEN_ID VARCHAR2 (255),
574-
TOKEN_SCOPE VARCHAR2 (255),
575-
TENANT_ID INTEGER DEFAULT -1,
576-
PRIMARY KEY (REFRESH_TOKEN_ID, TOKEN_SCOPE),
577-
FOREIGN KEY (REFRESH_TOKEN_ID) REFERENCES IDN_OAUTH2_REFRESH_TOKEN(REFRESH_TOKEN_ID) ON DELETE CASCADE
578-
)
579-
/
580-
581-
CREATE TABLE IDN_OAUTH2_REVOKED_TOKENS (
582-
UUID VARCHAR(255) NOT NULL,
583-
TOKEN_IDENTIFIER VARCHAR(2048) NOT NULL,
584-
CONSUMER_KEY VARCHAR(255) NOT NULL,
585-
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
586-
EXPIRY_TIMESTAMP TIMESTAMP NOT NULL,
587-
PRIMARY KEY (UUID)
588-
)
589-
/
590-
591-
CREATE TABLE IDN_SUBJECT_ENTITY_REVOKED_EVENT (
592-
EVENT_ID VARCHAR(255) NOT NULL,
593-
ENTITY_ID VARCHAR(255) NOT NULL,
594-
ENTITY_TYPE VARCHAR(255) NOT NULL,
595-
TIME_REVOKED TIMESTAMP NOT NULL,
596-
TENANT_ID INTEGER DEFAULT -1,
597-
PRIMARY KEY (EVENT_ID),
598-
CONSTRAINT CON_SUB_EVT_KEY UNIQUE (ENTITY_ID, ENTITY_TYPE, TENANT_ID)
599-
)
600-
/
601-
```
602-
603-
??? Example "Postgres"
604-
605-
```sql
606-
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_REFRESH_TOKEN (
607-
REFRESH_TOKEN_ID VARCHAR(255) PRIMARY KEY,
608-
REFRESH_TOKEN VARCHAR(2048),
609-
CONSUMER_KEY_ID INTEGER,
610-
AUTHZ_USER VARCHAR(100),
611-
TENANT_ID INTEGER,
612-
USER_DOMAIN VARCHAR(50),
613-
GRANT_TYPE VARCHAR(50),
614-
REFRESH_TOKEN_TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
615-
REFRESH_TOKEN_VALIDITY_PERIOD BIGINT,
616-
TOKEN_SCOPE_HASH VARCHAR(32),
617-
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
618-
SUBJECT_IDENTIFIER VARCHAR(255),
619-
REFRESH_TOKEN_HASH VARCHAR(512),
620-
IDP_ID INTEGER NOT NULL DEFAULT -1,
621-
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
622-
);
623-
624-
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_REFRESH_TOKEN_SCOPE (
625-
REFRESH_TOKEN_ID VARCHAR(255),
626-
TOKEN_SCOPE VARCHAR(255),
627-
TENANT_ID INTEGER DEFAULT -1,
628-
PRIMARY KEY (REFRESH_TOKEN_ID, TOKEN_SCOPE),
629-
FOREIGN KEY (REFRESH_TOKEN_ID) REFERENCES IDN_OAUTH2_REFRESH_TOKEN(REFRESH_TOKEN_ID) ON DELETE CASCADE
630-
);
631-
632-
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_REVOKED_TOKENS (
633-
UUID VARCHAR(255) NOT NULL PRIMARY KEY,
634-
TOKEN_IDENTIFIER VARCHAR(2048) NOT NULL,
635-
CONSUMER_KEY VARCHAR(255) NOT NULL,
636-
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
637-
EXPIRY_TIMESTAMP TIMESTAMP NOT NULL
638-
);
639-
640-
CREATE TABLE IF NOT EXISTS IDN_SUBJECT_ENTITY_REVOKED_EVENT (
641-
EVENT_ID VARCHAR(255) NOT NULL PRIMARY KEY,
642-
ENTITY_ID VARCHAR(255) NOT NULL,
643-
ENTITY_TYPE VARCHAR(100) NOT NULL,
644-
TIME_REVOKED TIMESTAMP NOT NULL,
645-
TENANT_ID INTEGER DEFAULT -1,
646-
CONSTRAINT IDN_SUBJECT_ENTITY_REVOKED_EVENT_CONSTRAINT
647-
UNIQUE (ENTITY_ID, ENTITY_TYPE, TENANT_ID)
648-
);
649-
-- IDN_OAUTH2_REVOKED_TOKENS
650-
CREATE INDEX IF NOT EXISTS idx_token_consumer
651-
ON IDN_OAUTH2_REVOKED_TOKENS (token_identifier, consumer_key);
652-
653-
-- IDN_SUBJECT_ENTITY_REVOKED_EVENT
654-
CREATE INDEX IF NOT EXISTS idx_entity_time_revoked
655-
ON IDN_SUBJECT_ENTITY_REVOKED_EVENT (entity_id, time_revoked);
656-
657-
-- IDN_OAUTH2_REFRESH_TOKEN
658-
CREATE INDEX IF NOT EXISTS idx_refresh_token_hash
659-
ON IDN_OAUTH2_REFRESH_TOKEN (refresh_token_hash);
660-
661-
CREATE INDEX IF NOT EXISTS idx_authz_user_tenant_domain_state
662-
ON IDN_OAUTH2_REFRESH_TOKEN (authz_user, tenant_id, user_domain, token_state);
663-
664-
CREATE INDEX IF NOT EXISTS idx_consumer_key_state
665-
ON IDN_OAUTH2_REFRESH_TOKEN (consumer_key_id, token_state);
666-
667-
CREATE INDEX IF NOT EXISTS idx_consumer_user_scope_idp
668-
ON IDN_OAUTH2_REFRESH_TOKEN
669-
(consumer_key_id, authz_user, tenant_id, user_domain, token_scope_hash, token_state, idp_id);
670-
671-
```
672-
673391
!!! note "Custom JWT Token Issuer"
674392
If you already use a custom JWT token issuer that extends
675393
[`JWTTokenIssuer`](https://github.com/wso2-extensions/identity-inbound-auth-oauth/blob/master/components/org.wso2.carbon.identity.oauth/src/main/java/org/wso2/carbon/identity/oauth2/token/JWTTokenIssuer.java),

0 commit comments

Comments
 (0)