Compare commits

...

107 Commits

Author SHA1 Message Date
Pahansith Gunathilake
bad4e9c66f Merge branch 'master' into 'master'
Add remote session host and port into iot-server.sh

See merge request entgra/product-iots!87
2021-10-29 04:22:30 +00:00
sandaru
0fefc44da6 Add remote session host and port into iot-server.sh 2021-10-15 08:16:43 +05:30
Dharmakeerthi Lasantha
cb18546152 Merge branch 'master' into 'master'
Upgrade dependency versions

See merge request entgra/product-iots!84
2021-03-17 06:28:48 +00:00
tcdlpds@gmail.com
3d06168c45 Upgrade dependency versions 2021-03-17 11:53:01 +05:30
Entgra Builder
3dd8a5feac [maven-release-plugin] prepare for next development iteration 2021-03-03 14:49:59 +00:00
Entgra Builder
da03264fc3 [maven-release-plugin] prepare release v4.1.0-RC5 2021-03-03 14:49:54 +00:00
Dharmakeerthi Lasantha
e8c5c55288 Merge branch 'master' into 'master'
Upgrade dependency versions

See merge request entgra/product-iots!83
2021-03-03 14:40:04 +00:00
tcdlpds@gmail.com
405a915b2d Upgrade dependency versions 2021-03-03 20:08:39 +05:30
Entgra Builder
243d8cdf02 [maven-release-plugin] prepare for next development iteration 2021-02-23 23:16:56 +00:00
Entgra Builder
52c37fdf77 [maven-release-plugin] prepare release v4.1.0-RC4 2021-02-23 23:16:52 +00:00
Dharmakeerthi Lasantha
f7f33b0674 Merge branch 'master' into 'master'
Upgrade dependency versions

See merge request entgra/product-iots!82
2021-02-23 23:10:44 +00:00
tcdlpds@gmail.com
f910f98399 Upgrade dependency versions 2021-02-23 21:12:02 +05:30
Entgra Builder
d40bdf830e [maven-release-plugin] prepare for next development iteration 2021-02-23 03:36:55 +00:00
Entgra Builder
be1a9b7001 [maven-release-plugin] prepare release v4.1.0-RC3 2021-02-23 03:36:51 +00:00
Dharmakeerthi Lasantha
913c47e5ca Merge branch 'master' into 'master'
Upgrade dependencies and product version

See merge request entgra/product-iots!81
2021-02-23 03:31:01 +00:00
tcdlpds@gmail.com
b291989c2f Upgrade dependencies and product version 2021-02-23 08:58:38 +05:30
Entgra Builder
d5d53abf79 [maven-release-plugin] prepare for next development iteration 2021-02-22 03:45:05 +00:00
Entgra Builder
e893678b0c [maven-release-plugin] prepare release v4.1.0-RC2 2021-02-22 03:45:00 +00:00
Dharmakeerthi Lasantha
58249bfa5e Merge branch 'master' into 'master'
Upgrade core and plugins versions

See merge request entgra/product-iots!80
2021-02-22 03:34:45 +00:00
tcdlpds@gmail.com
b23279ecac Upgrade core and plugins versions 2021-02-22 08:35:32 +05:30
Saad Sahibjan
59d160d7e2 Merge branch 'master' into 'master'
Add SMS management artifacts to iot core profile

See merge request entgra/product-iots!79
2021-02-17 06:55:32 +00:00
Saad Sahibjan
bc7a144154 Add SMS handler artifacts to iot core profile 2021-02-16 19:03:47 +05:30
Entgra Builder
00d223ce26 [maven-release-plugin] prepare for next development iteration 2021-02-11 10:15:22 +00:00
Entgra Builder
601ed4e8d2 [maven-release-plugin] prepare release v4.1.0-RC 2021-02-11 10:15:17 +00:00
Entgra Builder
94c576ef83 [maven-release-plugin] prepare for next development iteration 2021-02-11 09:42:00 +00:00
Entgra Builder
f8dfa2e3af [maven-release-plugin] prepare release v4.1.0 2021-02-11 09:41:55 +00:00
Dharmakeerthi Lasantha
06b526a6d9 Merge branch 'master' into 'master'
Upgrade core and plugins versions

See merge request entgra/product-iots!78
2021-02-11 09:09:51 +00:00
tcdlpds@gmail.com
ea539937d6 Upgrade core and plugins versions 2021-02-11 14:37:59 +05:30
Charitha Goonetilleke
a269603cbf Update .gitlab-ci.yml 2021-02-03 06:28:25 +00:00
Dharmakeerthi Lasantha
3bff220048 Merge branch 'master' into 'master'
Add admin services payload files

See merge request entgra/product-iots!75
2021-01-13 04:00:16 +00:00
vigneshan
5fb4ed1a9c Add admin services payload files 2021-01-11 14:08:33 +05:30
Dharmakeerthi Lasantha
ee2cad5759 Merge branch 'master' into 'master'
including heart-beat feature in product

See merge request entgra/product-iots!74
2020-12-08 14:38:32 +00:00
Dharmakeerthi Lasantha
7c7d9ded58 Merge branch 'master' into 'master'
API Manager DB and Catalina Config Changes for SSO Task

See merge request entgra/product-iots!73
2020-12-04 05:31:17 +00:00
Vigneshan
8a3e2d254d Update apim dbscripts to increase scope length in oauth2 authorization code table 2020-11-30 08:59:36 +05:30
Vigneshan
f3b92f5306 Change OIDC consent management url 2020-11-30 08:57:59 +05:30
Ace
0dc2e7477b including heart-beat feature in product 2020-11-20 05:50:24 +05:30
Vigneshan
052f9dcce6 Increase maxHttpHeaderSize of catalina-server.xml 2020-11-12 14:30:32 +05:30
Saad Sahibjan
1549d2c2a0 Merge branch 'master' into 'master'
Improve change-ip script

See merge request entgra/product-iots!71
2020-11-04 06:28:40 +00:00
tcdlpds@gmail.com
98cdf15f4e Improve change-ip script 2020-11-04 02:33:14 +05:30
Saad Sahibjan
51b358839b Merge branch 'master' into 'master'
Modify wrapper.conf

See merge request entgra/product-iots!70
2020-07-21 09:58:11 +00:00
Saad Sahibjan
be696e9784 Modify wrapper.conf 2020-07-21 13:55:58 +05:30
Saad Sahibjan
0b9418a86e Merge branch 'master' into 'master'
Bump dependency versions

See merge request entgra/product-iots!69
2020-06-23 08:22:10 +00:00
tcdlpds@gmail.com
e4b593ee8d Bump dependency versions 2020-06-23 05:28:52 +05:30
Entgra Builder
15e7ffe6ed [maven-release-plugin] prepare for next development iteration 2020-06-22 18:07:19 +00:00
Entgra Builder
fe1147ea9d [maven-release-plugin] prepare release v4.0.0-RC3 2020-06-22 18:07:15 +00:00
Charitha Goonetilleke
c966fd71d1 Revert "[maven-release-plugin] prepare release v4.0.0-RC3"
This reverts commit 043d6df638
2020-06-22 18:01:43 +00:00
Charitha Goonetilleke
513b4f81ae Merge branch 'master' into 'master'
Change validity period of refresh token

See merge request entgra/product-iots!68
2020-06-22 18:00:03 +00:00
charitha
d1a2ece03c Change validity period of refresh token 2020-06-22 23:25:22 +05:30
charitha
a37055fa6f Merge remote-tracking branch 'entgra/master' into entgra-master 2020-06-22 22:46:22 +05:30
charitha
67feb009d6 Change validity period of refresh token 2020-06-22 22:28:55 +05:30
Entgra Builder
043d6df638 [maven-release-plugin] prepare release v4.0.0-RC3 2020-06-22 16:58:31 +00:00
Entgra Builder
3df58d269e [maven-release-plugin] prepare for next development iteration 2020-06-22 16:28:09 +00:00
Entgra Builder
fe22e6399e [maven-release-plugin] prepare release v4.0.0-RC3 2020-06-22 16:28:04 +00:00
Entgra Builder
a356d880fa [maven-release-plugin] prepare for next development iteration 2020-06-22 14:02:31 +00:00
Entgra Builder
c24f97afce [maven-release-plugin] prepare release v4.0.0-RC3 2020-06-22 14:02:27 +00:00
Entgra Builder
23bc695927 [maven-release-plugin] prepare for next development iteration 2020-06-22 13:34:51 +00:00
Entgra Builder
292390f6cc [maven-release-plugin] prepare release v4.0.0-rc3 2020-06-22 13:34:45 +00:00
Saad Sahibjan
839fddc9db Merge branch 'master' into 'master'
Bump Dependency versions

See merge request entgra/product-iots!67
2020-06-22 13:18:39 +00:00
tcdlpds@gmail.com
78ef939cf2 Bump Dependency versions 2020-06-22 18:41:35 +05:30
Charitha Goonetilleke
bdf40d61ac Merge branch 'restructure' into 'master'
Remove conflicting components

See merge request entgra/product-iots!65
2020-06-12 11:27:04 +00:00
charitha
71ab64afa6 Remove conflicting components 2020-06-11 16:21:27 +05:30
Saad Sahibjan
019c9bea35 Merge branch 'master' into 'master'
Bump dependencies

See merge request entgra/product-iots!64
2020-06-09 14:44:51 +00:00
tcdlpds@gmail.com
8519ae2486 Bump dependencies 2020-06-05 08:06:38 +05:30
Entgra Builder
60664f7fc9 [maven-release-plugin] prepare for next development iteration 2020-06-04 13:19:43 +00:00
Entgra Builder
6d9aa6d35f [maven-release-plugin] prepare release v4.0.0-RC2 2020-06-04 13:19:38 +00:00
Entgra Builder
809fbc7e2a [maven-release-plugin] prepare for next development iteration 2020-06-04 12:09:32 +00:00
Entgra Builder
3cd96e872c [maven-release-plugin] prepare release v4.0.0-RC2 2020-06-04 12:09:25 +00:00
inoshperera
0a36124533 conflict fix 2020-06-04 17:32:25 +05:30
inoshperera
262a915d3a Bump core to 4.1.9 and plugin to 5.0.9 2020-06-04 17:30:16 +05:30
charitha
5f93b38726 Bump components to latest development versions 2020-05-30 12:00:46 +05:30
Entgra Builder
6118ef821b [maven-release-plugin] prepare for next development iteration 2020-05-24 03:37:36 +00:00
Entgra Builder
5c89a76318 [maven-release-plugin] prepare release v4.0.0-RC 2020-05-24 03:37:30 +00:00
charitha
071e44b56a Prepare release with device.mgt 4.1.8 and plugin 4.0.8 2020-05-24 08:58:07 +05:30
Entgra Builder
8f83a85e0a [maven-release-plugin] prepare for next development iteration 2020-05-22 15:34:40 +00:00
Entgra Builder
93e604e98f [maven-release-plugin] prepare release v4.0.0-RC 2020-05-22 15:34:35 +00:00
charitha
87a6bd894f Fix pom issues for 4.0.0 release 2020-05-22 20:50:29 +05:30
Charitha Goonetilleke
d9eca966a1 Update carbon-device-mgt and plugin versions to latest released versions 2020-05-22 14:05:28 +00:00
Dharmakeerthi Lasantha
5ff8ad8c99 Merge branch 'master' into 'master'
Add reporting webapp endpoint key into iot-server.sh

See merge request entgra/product-iots!63
2020-05-19 08:56:14 +00:00
tcdlpds@gmail.com
7a79c39b62 Change 2020-05-19 14:23:36 +05:30
tcdlpds@gmail.com
ee60d903d3 Add reporting webapp endpoint key into iot-server.sh 2020-05-19 14:21:10 +05:30
Saad Sahibjan
2738febcb1 Fix maximum value of REG_VALUE of REG_PROPERTY table 2020-05-18 17:03:26 +05:30
Charitha Goonetilleke
1d21be428d Merge branch 'master' into 'master'
Add updated config files and removed obsolete migration scripts

See merge request entgra/product-iots!61
2020-05-06 08:11:09 +00:00
charitha
4179bc73a8 Add updated config files and removed obsolete migration scripts 2020-05-05 23:13:50 +05:30
Inosh Perara
ea1eda6de9 Merge branch 'master' into 'master'
Add reporting host

See merge request entgra/product-iots!58
2020-04-01 14:14:35 +00:00
inoshperera
e612725297 Add reporting host 2020-04-01 08:57:01 +05:30
Charitha Goonetilleke
8cd1b01c18 Update .gitlab-ci.yml 2020-03-31 19:05:50 +00:00
Charitha Goonetilleke
c6556b4c12 Merge branch 'master' into 'master'
Add the Synapse API configuration to get the system time for App usage time configuration policy

See merge request entgra/product-iots!53
2020-03-24 17:18:05 +00:00
Nipun Nadeen De Silva
9c8943d45f Add the Synapse API configuration to get the system time for App usage time configuration policy 2020-03-24 17:18:05 +00:00
charitha
d53a59cf9f Add entgra distribution repositories 2020-03-10 21:57:29 +05:30
charitha
3cd5896a97 Fix CI/CD issues 2020-03-10 20:42:51 +05:30
charitha
fcee8e4306 Fix distribution issues 2020-03-10 20:32:35 +05:30
charitha
4e1b26402d Remove non IoT components 2020-03-10 14:50:29 +05:30
charitha
7eda0a8ced Merge branch 'master' of https://gitlab.com/entgra/product-iots into entgra-master 2020-03-08 20:31:50 +05:30
Dharmakeerthi Lasantha
458dc8886b Merge branch 'change-ios-bundle-id' into 'master'
Add IOS agent's bundle id to iot-server.sh

See merge request entgra/product-iots!55
2020-03-05 14:09:33 +00:00
Charitha Goonetilleke
b5ac87e741 Merge branch 'master' into 'master'
Add Health Check API

See merge request entgra/product-iots!56
2020-03-03 03:41:35 +00:00
Charitha Goonetilleke
dfe3b9019d Add Health Check API 2020-03-03 03:41:35 +00:00
charitha
3eba25f1e4 Merge branch 'master' of https://gitlab.com/entgra/product-iots into entgra-master 2020-03-02 21:36:14 +05:30
charitha
e212b1dc3d Add Health Check API to distribution 2020-03-02 21:36:03 +05:30
Inosh Perara
c8ca8616eb Merge branch 'master' into 'master'
Adding api-publisher component to the pack

See merge request entgra/product-iots!54
2020-02-28 06:13:27 +00:00
Yohan Avishke
b96507a77d Add IOS agent's bundle id to iot-server.sh 2020-02-26 15:42:52 +05:30
Ace
e38d0dfd1f Adding api-publisher component to the pack 2020-02-24 14:56:32 +05:30
Charitha Goonetilleke
29020bf2be Merge branch 'master' into 'master'
Remove portal app and sample device type sources

See merge request entgra/product-iots!52
2020-01-11 17:00:22 +00:00
lasanthaDLPDS
75bcbcaa46 Remove portal app and sample device type sources 2020-01-09 14:09:26 +05:30
Saad Sahibjan
c664bf8d7a Merge branch 'master' into 'master'
Remove iot device types

See merge request entgra/product-iots!51
2020-01-08 09:28:32 +00:00
lasanthaDLPDS
e977fd3b2f Remove iot device types 2020-01-04 11:21:59 +05:30
lasanthaDLPDS
a6c31bae33 Bump dependency versions to development versions 2019-12-23 13:36:47 +05:30
Entgra Builder
dd18462899 [maven-release-plugin] prepare for next development iteration 2019-12-16 15:05:00 +00:00
297 changed files with 5085 additions and 112114 deletions

View File

@ -1,15 +1,26 @@
variables:
MAVEN_CLI_OPTS: "--batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
cache:
paths:
- .m2/repository/
- target/
build:
stage: build
script:
- rm -rf ~/.m2/repository/org/wso2/carbon/devicemgt
- rm -rf ~/.m2/repository/org/wso2/carbon/devicemgt-plugins
- rm -rf ~/.m2/repository/org/wso2/carbon/org/wso2/iot
- rm -rf ~/.m2/repository/io/entgra
- mvn $MAVEN_CLI_OPTS clean install
tags:
- OracleJDK1.8
deploy:
stage: deploy
script:
- mvn $MAVEN_CLI_OPTS deploy
only:
- master@entgra/product-iots
tags:
- OracleJDK1.8

12
.m2/settings.xml Normal file
View File

@ -0,0 +1,12 @@
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>maven-snapshots</id>
<username>${env.MAVEN_REPO_USER}</username>
<password>${env.MAVEN_REPO_PASS}</password>
</server>
</servers>
</settings>

View File

@ -19,17 +19,17 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-components</artifactId>
<version>3.8.2</version>
<groupId>io.entgra.iot</groupId>
<artifactId>entgra-iot-components</artifactId>
<version>4.1.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.wso2.iot.core.admin.styles</artifactId>
<packaging>bundle</packaging>
<name>WSO2 IoT - UI Styles</name>
<url>http://wso2.org</url>
<name>Entgra IoT - UI Styles</name>
<url>http://entgra.io</url>
<build>
<plugins>

View File

@ -18,24 +18,24 @@
<html>
<head>
<meta http-equiv="content-type" content=""/>
<title>WSO2 IoT 1.0.0</title>
<title>Entgra IoT 4.1.0</title>
<link href="./tools/cmd/css/gs-dist-doc.css" rel="stylesheet"
type="text/css" media="all"/>
</head>
<body>
<h1>WSO2 IoT 1.0.0</h1>
<h1>Entgra IoT 4.1.0</h1>
<p>
With its modular, extensible, and customizable capabilities,
WSO2 Internet of Things Server (IoT Server) offers a complete, secure,
Entgra Internet of Things Server (IoT Server) offers a complete, secure,
open source, enterprise-grade IoT device management solution.
Built by re-using WSO2 middleware platform capabilities,
WSO2 IoT Server provides the server-side of IoT device management architecture for device manufacturers;
the extensibility of the underlying WSO2 Connected Device Management Framework enables WSO2 IoT Server
Entgra IoT Server provides the server-side of IoT device management architecture for device manufacturers;
the extensibility of the underlying WSO2 Connected Device Management Framework enables Entgra IoT Server
to be extended to any device type and support other protocols and data formats.
Moreover, its in-built tooling capability allows developers to extend WSO2 IoT Servers functionality.
Moreover, its in-built tooling capability allows developers to extend Entgra IoT Servers functionality.
It offers customizable and advanced IoT device analytics via WSO2 Data Analytics Server
that include predictive analytics using machine learning capabilities.

View File

@ -21,17 +21,17 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-parent</artifactId>
<version>3.8.2</version>
<groupId>io.entgra.iot</groupId>
<artifactId>entgra-iot-server-parent</artifactId>
<version>4.1.1-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wso2iot-components</artifactId>
<artifactId>entgra-iot-components</artifactId>
<packaging>pom</packaging>
<name>WSO2 IoT - Components Module</name>
<url>http://wso2.org</url>
<name>Entgra IoT - Components Module</name>
<url>http://entgra.io</url>
<modules>
<module>org.wso2.iot.core.admin.styles</module>

View File

@ -17,9 +17,9 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-parent</artifactId>
<version>3.8.2</version>
<groupId>io.entgra.iot</groupId>
<artifactId>entgra-iot-server-parent</artifactId>
<version>4.1.1-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>

View File

@ -20,9 +20,9 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-parent</artifactId>
<version>3.8.2</version>
<groupId>io.entgra.iot</groupId>
<artifactId>entgra-iot-server-parent</artifactId>
<version>4.1.1-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@ -515,7 +515,7 @@
<classpath refid="maven.compile.classpath" />
<classpath refid="maven.runtime.classpath" />
<fileset file="${basedir}/../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/dbscripts/apimgt/h2.sql" />
<fileset file="${basedir}/src/core/resources/dbscripts/apimgt/h2.sql" />
</sql>
<echo message="##################### END ####################" />
</tasks>
@ -795,14 +795,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>

View File

@ -1,95 +0,0 @@
{
"store": {
"types": ["fs"]
},
"gadgetGeneration" :{
"isCreateGadgetEnable": false,
"ignoreProviders": ["rt"]
},
"authentication": {
"activeMethod": "sso",
"methods": {
"sso": {
"attributes": {
"issuer": "analyticsportal",
"identityProviderURL": "https://localhost:9443/samlsso",
"responseSigningEnabled": true,
"validateAssertionValidityPeriod": true,
"validateAudienceRestriction": true,
"assertionSigningEnabled": true,
"acs": "https://localhost:9445/portal/acs",
"identityAlias": "wso2carbon",
"defaultNameIDPolicy": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
"useTenantKey": false,
"isPassive": false
}
},
"basic": {
"attributes": {}
}
}
},
"authorization": {
"activeMethod": "oauth",
"methods": {
"oauth": {
"attributes": {
"apimgt-gateway": true,
"oauthProvider": {
"appRegistration": {
"appType": "webapp",
"clientName": "analyticsportal",
"owner": "admin",
"password":"admin",
"dynamicClientAppRegistrationServiceURL": "https://localhost:9443/dynamic-client-web/register",
"apiManagerClientAppRegistrationServiceURL": "https://localhost:9443/api-application-registration/register/tenants",
"grantType": "urn:ietf:urn:ietf:params:oauth:grant-type:saml2-bearer",
"tokenScope": "admin",
"callbackUrl": "https://localhost:9445/portal",
"saasApp":true
},
"tokenServiceURL": "https://localhost:9443/oauth2/token"
},
"adminUser":"admin@carbon.super",
"adminUserTenantId":"-1234",
"adminRole":"admin",
"scopes" : [
"device:view"
]
}
}
}
},
"designers": [
"Internal/everyone"
],
"tenantPrefix": "/t",
"shareStore": false,
"theme": "basic",
"cacheTimeoutSeconds": "5",
"cacheSizeBytes": "1073741824",
"defaultDashboardRedirect": false,
"isCreateGadgetEnable": true,
"isSecureVaultEnabled" : false,
"assets": {
"gadget": {
"fileSizeLimit": 5
},
"layout": {
"fileSizeLimit": 1
}
},
"oauth": {
"username": "admin",
"password": "admin"
},
"host": {
"hostname": "localhost",
"port": "",
"protocol": ""
},
"queryParameters" : {
"passBetweenPages" : ["shared", "owner", "deviceId"]
}
}

View File

@ -1,187 +0,0 @@
{
"initScripts": [
"js/dashboard-deployer.js"
],
"welcomeFiles": [
"routers/tenant.jag"
],
"errorPages": {
"500": "/controllers/error-pages/error500.html",
"404": "/controllers/error-pages/error404.html",
"401": "/controllers/error-pages/error401.html",
"405": "/controllers/error-pages/error405.html",
"403": "/controllers/error-pages/error403.html",
"400": "/controllers/error-pages/error400.html"
},
"urlMappings": [
{
"url": "/login-controller",
"path": "/routers/tenant.jag"
},
{
"url": "/login",
"path": "/routers/tenant.jag"
},
{
"url": "/logout",
"path": "/routers/tenant.jag"
},
{
"url": "/t/*",
"path": "/routers/tenant.jag"
},
{
"url": "/apis/*",
"path": "/routers/tenant.jag"
},
{
"url": "/dashboards/*",
"path": "/routers/tenant.jag"
},
{
"url": "/gadget/*",
"path": "/routers/tenant.jag"
},
{
"url": "/layout/*",
"path": "/routers/tenant.jag"
},
{
"url": "/assets/*",
"path": "/routers/tenant.jag"
},
{
"url": "/create-dashboard",
"path": "/routers/tenant.jag"
},
{
"url": "/dashboard-settings/*",
"path": "/routers/tenant.jag"
},
{
"url": "/select-layout",
"path": "/routers/tenant.jag"
},
{
"url": "/create-gadget",
"path": "/routers/tenant.jag"
},
{
"url": "/upload-gadget",
"path": "/routers/tenant.jag"
},
{
"url": "/upload-layout",
"path": "/routers/tenant.jag"
},
{
"url": "/geojson/world/*",
"path": "/templates/geojson/world.json"
},
{
"url": "/geojson/europe/*",
"path": "/templates/geojson/europe.json"
},
{
"url": "/geojson/usa/*",
"path": "/templates/geojson/usa.json"
},
{
"url": "/geojson/countryInfo/*",
"path": "/templates/geojson/countryInfo.json"
},
{
"url": "/geojson/usaInfo/*",
"path": "/templates/geojson/usaInfo.json"
},
{
"url": "/acs",
"path": "/controllers/acs.jag"
},
{
"url": "/banners/*",
"path": "/routers/tenant.jag"
},
{
"url": "/gadgets/*",
"path": "/routers/tenant.jag"
},
{
"url": "/configs/designer.json",
"path": "/controllers/error-pages/error404.html"
}
],
"listeners": [
{
"class": "org.owasp.csrfguard.CsrfGuardServletContextListener"
},
{
"class": "org.owasp.csrfguard.CsrfGuardHttpSessionListener"
}
],
"servlets": [
{
"name": "JavaScriptServlet",
"class": "org.owasp.csrfguard.servlet.JavaScriptServlet"
}
],
"servletMappings": [
{
"name": "JavaScriptServlet",
"url": "/csrf.js"
}
],
"contextParams": [
{
"name": "Owasp.CsrfGuard.Config",
"value": "repository/conf/security/Owasp.CsrfGuard.dashboard.properties"
}
],
"filters": [
{
"name": "ContentTypeBasedCachePreventionFilter",
"class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
"params" : [
{"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
{"name" : "filterAction", "value" : "enforce"},
{"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
]
},
{
"name": "HttpHeaderSecurityFilter",
"class": "org.apache.catalina.filters.HttpHeaderSecurityFilter",
"params": [
{
"name": "hstsEnabled",
"value": "false"
},
{
"name": "antiClickJackingOption",
"value": "SAMEORIGIN"
}
]
},
{
"name": "TenantStoresFilter",
"class": "org.wso2.carbon.dashboard.store.filter.TenantStoreFilter"
}
],
"filterMappings": [
{
"name": "HttpHeaderSecurityFilter",
"url": "*"
},
{
"name": "TenantStoresFilter",
"url": "/store/*"
},
{
"name": "TenantStoresFilter",
"url": "/temp/*"
},
{
"name":"ContentTypeBasedCachePreventionFilter",
"url":"*"
}
]
}

View File

@ -1,60 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var getDateString, getDuration;
(function() {
getDateString = function (timestamp) {
var date = new Date();
date.setTime(timestamp);
return date.toString();
};
getDuration = function (durationInMS) {
var time = '';
var date = new Date();
date.setTime(durationInMS);
var day = Math.floor(durationInMS/86400000);
if (day > 0){
//More than 1 day
time = day +' day : ';
durationInMS = durationInMS - (day * 86400000);
}
var hour = Math.floor(durationInMS/3600000);
if (hour > 0){
//More than 1 hour
time = time + hour + ' hour : ';
durationInMS = durationInMS - (hour * 3600000);
}
var minutes = Math.floor(durationInMS/60000);
if (minutes > 0){
//More than 1 minute
time = time + minutes + ' minutes : ';
durationInMS = durationInMS - (minutes * 60000);
}
var seconds = Math.ceil(durationInMS/1000);
if (seconds > 0){
//More than 1 minute
time = time + seconds + ' seconds : ';
}
time = time.slice(0, -2);
return time;
};
}());

View File

@ -1,598 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var utils = function () {
var log = new Log("/modules/oauth/token-handler-utils.js");
var configs = require('/configs/portal.js').config();
var constants = require("/modules/constants.js");
var carbon = require("carbon");
//noinspection JSUnresolvedVariable
var Base64 = Packages.org.apache.commons.codec.binary.Base64;
//noinspection JSUnresolvedVariable
var String = Packages.java.lang.String;
var publicMethods = {};
var privateMethods = {};
publicMethods["encode"] = function (payload) {
return String(Base64.encodeBase64(String(payload).getBytes()));
};
publicMethods["decode"] = function (payload) {
return String(Base64.decodeBase64(String(payload).getBytes()));
};
/**
* Check whether this application is oauth enable or not
* @returns boolean if oauth enable
*/
publicMethods["checkOAuthEnabled"] = function () {
if (constants.AUTHORIZATION_TYPE_OAUTH === configs["authorization"]["activeMethod"]) {
return true;
}
return false;
};
/**
* Set access token into xml http request header
* @param xhr xml http request
* @returns {*} xhr which has access token it's header
*/
publicMethods["setAccessToken"] = function (xhr, callback) {
var accessToken;
if (publicMethods.checkOAuthEnabled()) {
try {
accessToken = parse(session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL))["accessToken"];
xhr.setRequestHeader(constants.AUTHORIZATION_HEADER, constants.BEARER_PREFIX + accessToken);
} catch (exception) {
log.error("Access token hasn't been set yet, " + exception);
} finally {
callback(xhr);
}
}
callback(xhr);
};
/**
* Get access token of current logged user
* @param callBack response with access token
*/
publicMethods["getAccessToken"] = function (callBack) {
var accessToken = null;
if (publicMethods.checkOAuthEnabled()) {
try {
accessToken = parse(session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL))["accessToken"];
} catch (exception) {
log.error("Access token hasn't been set yet, " + exception);
} finally {
callBack(accessToken);
}
}
callBack(accessToken);
};
/**
* Create error message which adhere to xml http response object
* @param statusCode response status code
* @param status response status
* @param responseText response message
* @returns {{statusCode: *, status: *, responseText: *}}
*/
publicMethods["createXHRObject"] = function (statusCode, status, responseText) {
return {"statusCode": statusCode, "status": status, "responseText": responseText};
};
/**
* check whether user already logged to system before invoking any apis
* @param callBack
*/
publicMethods["isUserAuthorized"] = function (callBack) {
if (session.get("Loged") !== constants.LOGIN_MESSAGE) {
callBack(false);
} else {
callBack(true);
}
};
/**
* Get identity provider uir
* @returns {*}
*/
publicMethods["getIdPServerURL"] = function () {
return configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["tokenServiceURL"];
};
/**
* Get an Access token pair based on client secret
* @param encodedClientKeys {{clientId:"", clientSecret:""}}
* @param scope eg: PRODUCTION
* @param idPServer identity provider url
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenWithClientSecretType"] = function (encodedClientKeys, scope, idPServer) {
var xhr = new XMLHttpRequest();
var tokenEndpoint = idPServer;
xhr.open(constants.HTTP_POST, tokenEndpoint, false);
xhr.setRequestHeader(constants.CONTENT_TYPE_IDENTIFIER, constants.APPLICATION_X_WWW_FOR_URLENCODED);
xhr.setRequestHeader(constants.AUTHORIZATION_HEADER, constants.BASIC_PREFIX + encodedClientKeys);
xhr.send("grant_type=client_credentials&scope=" + scope);
var tokenPair = {};
if (xhr.status == constants.HTTP_ACCEPTED) {
var data = parse(xhr.responseText);
tokenPair.refreshToken = data.refresh_token;
tokenPair.accessToken = data.access_token;
} else if (xhr.status == constants.HTTP_USER_NOT_AUTHENTICATED) {
log.error("Error in obtaining token with client secret grant type, You are not authenticated yet");
return null;
} else {
log.error("Error in obtaining token with client secret grant type, This might be a problem with client meta " +
"data which required for client secret grant type");
return null;
}
return tokenPair;
};
/**
* This will create client id and client secret for a given application
* @param properties "callbackUrl": "",
* "clientName": "",
* "owner": "",
* "applicationType": "",
* "grantType": "",
* "saasApp" :"",
* "dynamicClientRegistrationEndPoint" : ""
*
* @returns {{clientId:*, clientSecret:*}}
*/
publicMethods["getDynamicClientAppCredentials"] = function (username) {
// setting up dynamic client application properties
var dcAppProperties = {
"applicationType": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["appType"],
"clientName": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["clientName"],
"owner": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["owner"],
"tokenScope": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["tokenScope"],
"grantType": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["grantType"],
"callbackUrl": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["callbackUrl"],
"saasApp" : configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["saasApp"]
};
var tenantDomain = carbon.server.tenantDomain({username: username});
if (!tenantDomain) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client application credentials. Unable to obtain a valid tenant domain for provided username "+
username +"- getDynamicClientAppCredentials(x)");
return null;
} else {
var cachedTenantBasedClientAppCredentials = privateMethods.
getCachedTenantBasedClientAppCredentials(tenantDomain);
if (cachedTenantBasedClientAppCredentials) {
return cachedTenantBasedClientAppCredentials;
} else {
// calling dynamic client app registration service endpoint
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]
["dynamicClientAppRegistrationServiceURL"];
var requestPayload = dcAppProperties;
var token = publicMethods.encode(configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["appRegistration"]["owner"] + ":" + configs["authorization"]["methods"]["oauth"]["attributes"]
["oauthProvider"]["appRegistration"]["password"]);
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Basic "+ token);
xhr.send(stringify(requestPayload));
var dynamicClientAppCredentials = {};
if (xhr["status"] == 201 || xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var clientId = responsePayload["client_id"];
var clientSecret = responsePayload["client_secret"];
if(typeof clientId == "undefined"){
clientId = responsePayload["clientId"];
}
if(typeof clientSecret == "undefined"){
clientSecret = responsePayload["clientSecret"];
}
dynamicClientAppCredentials["clientId"] = clientId;
dynamicClientAppCredentials["clientSecret"] = clientSecret;
privateMethods.
setCachedTenantBasedClientAppCredentials(tenantDomain, dynamicClientAppCredentials);
} else if (xhr["status"] == 400) {
log.error("{/modules/oauth/token-handler-utils.js - getDynamicClientAppCredentials()} " +
"Bad request. Invalid data provided as dynamic client application properties.");
dynamicClientAppCredentials = null;
} else {
log.error("{/modules/oauth/token-handler-utils.js - getDynamicClientAppCredentials()} " +
"Error in retrieving dynamic client credentials.");
dynamicClientAppCredentials = null;
}
// returning dynamic client credentials
return dynamicClientAppCredentials;
}
}
};
/**
* If gateway is enable, apiManagerClientAppRegistrationServiceURL is used to create oauth application
* @param username username of current logged user
* @returns {{clientId:*, clientSecret:*}}
*/
publicMethods["getTenantBasedClientAppCredentials"] = function (username) {
if (!username) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client app credentials. No username " +
"as input - getTenantBasedClientAppCredentials(x)");
return null;
} else {
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var tenantDomain = carbon.server.tenantDomain({username: username});
if (!tenantDomain) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client application credentials. Unable to obtain a valid tenant domain for provided " +
"username - getTenantBasedClientAppCredentials(x, y)");
return null;
} else {
var cachedTenantBasedClientAppCredentials = privateMethods.
getCachedTenantBasedClientAppCredentials(tenantDomain);
if (cachedTenantBasedClientAppCredentials) {
return cachedTenantBasedClientAppCredentials;
} else {
var adminUsername = configs["authorization"]["methods"]["oauth"]["attributes"]["adminUser"];
var adminUserTenantId = configs["authorization"]["methods"]["oauth"]["attributes"]
["adminUserTenantId"];
//claims required for jwtAuthenticator.
var claims = {"http://wso2.org/claims/enduserTenantId": adminUserTenantId,
"http://wso2.org/claims/enduser": adminUsername};
var jwtToken = publicMethods.getJwtToken(adminUsername, claims);
// register a tenant based client app at API Manager
var applicationName = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["appRegistration"]["clientName"] + "_" + tenantDomain;
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["appRegistration"]["apiManagerClientAppRegistrationServiceURL"] +
"?tenantDomain=" + tenantDomain + "&applicationName=" + applicationName;
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-JWT-Assertion", "" + jwtToken);
xhr.send();
if ((xhr["status"] == 201 || xhr["status"] == 200) && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tenantBasedClientAppCredentials = {};
var clientId = responsePayload["client_id"];
var clientSecret = responsePayload["client_secret"];
if(typeof clientId == "undefined"){
clientId = responsePayload["clientId"];
}
if(typeof clientSecret == "undefined"){
clientSecret = responsePayload["clientSecret"];
}
tenantBasedClientAppCredentials["clientId"] = clientId;
tenantBasedClientAppCredentials["clientSecret"] = clientSecret;
privateMethods.
setCachedTenantBasedClientAppCredentials(tenantDomain, tenantBasedClientAppCredentials);
return tenantBasedClientAppCredentials;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client application credentials from API " +
"Manager - getTenantBasedClientAppCredentials(x, y)");
return null;
}
}
}
}
};
/**
* Caching oauth application credentials
* @param tenantDomain tenant domain where application is been created
* @param clientAppCredentials {{clientId:*, clientSecret:*}}
*/
privateMethods["setCachedTenantBasedClientAppCredentials"] = function (tenantDomain, clientAppCredentials) {
var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS_PORTAL_APP"]);
if (!cachedTenantBasedClientAppCredentialsMap) {
cachedTenantBasedClientAppCredentialsMap = {};
cachedTenantBasedClientAppCredentialsMap[tenantDomain] = clientAppCredentials;
application.put(constants["CACHED_CREDENTIALS_PORTAL_APP"], cachedTenantBasedClientAppCredentialsMap);
} else if (!cachedTenantBasedClientAppCredentialsMap[tenantDomain]) {
cachedTenantBasedClientAppCredentialsMap[tenantDomain] = clientAppCredentials;
}
};
/**
* Get oauth application credentials from cache
* @param tenantDomain tenant domain where application is been created
* @returns {{clientId:*, clientSecret:*}}
*/
privateMethods["getCachedTenantBasedClientAppCredentials"] = function (tenantDomain) {
var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS_PORTAL_APP"]);
if (!cachedTenantBasedClientAppCredentialsMap ||
!cachedTenantBasedClientAppCredentialsMap[tenantDomain]) {
return null;
} else {
return cachedTenantBasedClientAppCredentialsMap[tenantDomain];
}
};
/**
* Get access token and refresh token using password grant type
* @param username username of the logged user
* @param password password of the logged user
* @param encodedClientAppCredentials {{clientId:*, clientSecret:*}}
* @param scopes scopes list
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenPairAndScopesByPasswordGrantType"] = function (username, password
, encodedClientAppCredentials, scopes) {
if (!username || !password || !encodedClientAppCredentials || !scopes) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token by password " +
"grant type. No username, password, encoded client app credentials or scopes are " +
"found - getTokenPairAndScopesByPasswordGrantType(a, b, c, d)");
return null;
} else {
// calling oauth provider token service endpoint
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["tokenServiceURL"];
var requestPayload = "grant_type=password&username=" +
username + "&password=" + password + "&scope=" + scopes;
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic " + encodedClientAppCredentials);
xhr.send(requestPayload);
if (xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tokenData = {};
tokenData["accessToken"] = responsePayload["access_token"];
tokenData["refreshToken"] = responsePayload["refresh_token"];
tokenData["scopes"] = responsePayload["scope"];
return tokenData;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token " +
"by password grant type - getTokenPairAndScopesByPasswordGrantType(a, b, c, d)");
return null;
}
}
};
/**
* Get access token and refresh token using SAML grant type
* @param assertion
* @param encodedClientAppCredentials
* @param scopes
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenPairAndScopesByJWTGrantType"] = function (username, encodedClientAppCredentials, scopes) {
if (!username || !encodedClientAppCredentials || !scopes) {
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving access token by jwt " +
"grant type. No assertion, encoded client app credentials or scopes are " +
"found - getTokenPairAndScopesByJWTGrantType(x, y, z)");
return null;
} else {
var JWTClientManagerServicePackagePath =
"org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService";
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var JWTClientManagerService = carbon.server.osgiService(JWTClientManagerServicePackagePath);
//noinspection JSUnresolvedFunction
var jwtClient = JWTClientManagerService.getJWTClient();
// returning access token by JWT grant type
var tokenInfo = jwtClient.getAccessToken(encodedClientAppCredentials,
username, scopes);
var tokenData = {};
tokenData["accessToken"] = tokenInfo.getAccessToken();
tokenData["refreshToken"] = tokenInfo.getRefreshToken();
tokenData["scopes"] = tokenInfo.getScopes();
return tokenData;
}
};
/**
* Get access token and refresh token using SAML grant type
* @param assertion
* @param encodedClientAppCredentials
* @param scopes
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenPairAndScopesBySAMLGrantType"] = function (assertion, encodedClientAppCredentials, scopes) {
if (!assertion || !encodedClientAppCredentials || !scopes) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token by saml " +
"grant type. No assertion, encoded client app credentials or scopes are " +
"found - getTokenPairAndScopesBySAMLGrantType(x, y, z)");
return null;
} else {
var assertionXML = publicMethods.decode(assertion);
/*
TODO: make assertion extraction with proper parsing.
Since Jaggery XML parser seem to add formatting which causes signature verification to fail.
*/
var assertionStartMarker = "<saml2:Assertion";
var assertionEndMarker = "<\/saml2:Assertion>";
var assertionStartIndex = assertionXML.indexOf(assertionStartMarker);
var assertionEndIndex = assertionXML.indexOf(assertionEndMarker);
var extractedAssertion;
if (assertionStartIndex == -1 || assertionEndIndex == -1) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token by saml grant " +
"type. Issue in assertion format - getTokenPairAndScopesBySAMLGrantType(x, y, z)");
return null;
} else {
extractedAssertion = assertionXML.
substring(assertionStartIndex, assertionEndIndex) + assertionEndMarker;
var encodedAssertion = publicMethods.encode(extractedAssertion);
// calling oauth provider token service endpoint
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["tokenServiceURL"];
var requestPayload = "grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer&" +
"assertion=" + encodeURIComponent(encodedAssertion) + "&scope=" + scopes;
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic " + encodedClientAppCredentials);
xhr.send(requestPayload);
if (xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tokenData = {};
tokenData["accessToken"] = responsePayload["access_token"];
tokenData["refreshToken"] = responsePayload["refresh_token"];
tokenData["scopes"] = responsePayload["scope"];
return tokenData;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token " +
"by password grant type - getTokenPairAndScopesBySAMLGrantType(x, y, z)");
return null;
}
}
}
};
/**
* If access token is expired, try to refresh it using existing refresh token
* @param callback
*/
publicMethods["refreshAccessToken"] = function (callback) {
try {
if (publicMethods.checkOAuthEnabled()) {
var currentTokenPair = parse(session.get(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"]));
// currentTokenPair includes current access token as well as current refresh token
var encodedClientAppCredentials
= session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!currentTokenPair || !encodedClientAppCredentials) {
callback(false);
throw new Error("{/modules/oauth/token-handlers.js} Error in refreshing tokens. Either the " +
"token pair, encoded client app credentials or both input are not found under " +
"session context - refreshTokenPair()");
} else {
var newTokenPair = publicMethods.
getNewTokenPairByRefreshToken(currentTokenPair["refreshToken"], encodedClientAppCredentials);
if (!newTokenPair) {
log.error("{/app/modules/oauth/token-handlers.js} Error in refreshing token pair. " +
"Unable to update session context with new access token pair - refreshTokenPair()");
callback(false);
} else {
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(newTokenPair));
callback(true);
}
}
} else {
log.error("You have not enable dynamic client yet");
callback(false);
}
} catch (exception) {
callback(false);
throw "Error while refreshing existing access token, " + exception;
}
};
/**
* Get access token and refresh token using refresh token grant type
* @param refreshToken refresh token
* @param encodedClientAppCredentials {{clientId:*, clientSecret:*}}
* @param scopes
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getNewTokenPairByRefreshToken"] = function (refreshToken, encodedClientAppCredentials, scopes) {
if (!refreshToken || !encodedClientAppCredentials) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new access token " +
"by current refresh token. No refresh token or encoded client app credentials are " +
"found - getNewTokenPairByRefreshToken(x, y, z)");
return null;
} else {
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["tokenServiceURL"];
var requestPayload = "grant_type=refresh_token&refresh_token=" + refreshToken;
if (scopes) {
requestPayload = requestPayload + "&scope=" + scopes;
}
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic " + encodedClientAppCredentials);
xhr.send(requestPayload);
if (xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tokenPair = {};
tokenPair["accessToken"] = responsePayload["access_token"];
tokenPair["refreshToken"] = responsePayload["refresh_token"];
return tokenPair;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new access token by " +
"current refresh token - getNewTokenPairByRefreshToken(x, y, z)");
return null;
}
}
};
/**
* Get access token using JWT grant type
* @param clientAppCredentials {{clientId:*, clientSecret:*}}
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getAccessTokenByJWTGrantType"] = function (clientAppCredentials) {
if (!clientAppCredentials) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new access token " +
"by current refresh token. No client app credentials are found " +
"as input - getAccessTokenByJWTGrantType(x)");
return null;
} else {
var JWTClientManagerServicePackagePath =
"org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService";
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var JWTClientManagerService = carbon.server.osgiService(JWTClientManagerServicePackagePath);
//noinspection JSUnresolvedFunction
var jwtClient = JWTClientManagerService.getJWTClient();
// returning access token by JWT grant type
return jwtClient.getAccessToken(clientAppCredentials["clientId"], clientAppCredentials["clientSecret"],
configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["owner"],
null)["accessToken"];
}
};
/**
* Get jwt token
* @param username username of logged user
* @param claims claims which are required
* @returns {"jwtToken"}
*/
publicMethods["getJwtToken"] = function (username, claims) {
if (!username) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new jwt token");
return null;
} else {
var JWTClientManagerServicePackagePath =
"org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService";
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var JWTClientManagerService = carbon.server.osgiService(JWTClientManagerServicePackagePath);
//noinspection JSUnresolvedFunction
var jwtClient = JWTClientManagerService.getJWTClient();
// returning access token by JWT grant type
if (claims) {
return jwtClient.getJwtToken(username, claims);
} else {
return jwtClient.getJwtToken(username);
}
}
};
return publicMethods;
}();

View File

@ -1,192 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* -----------------------------------------------------
* Following module includes handlers
* at Jaggery Layer for handling OAuth tokens.
* -----------------------------------------------------
*/
var handlers = function () {
var log = new Log("/modules/oauth/token-handlers.js");
var tokenUtil = require("/modules/oauth/token-handler-utils.js")["utils"];
var constants = require("/modules/constants.js");
var configs = require('/configs/portal.js').config();
var publicMethods = {};
var privateMethods = {};
/**
* Get an AccessToken pair based on username and password
* @param username username of the logged user
* @param password password of the logged user
*/
publicMethods["setupTokenPairByPasswordGrantType"] = function (username, password) {
if (!username || !password) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up access token pair by " +
"password grant type. Either username of logged in user, password or both are missing " +
"as input - setupTokenPairByPasswordGrantType(x, y)");
} else {
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
var encodedClientAppCredentials =
session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!encodedClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up access token pair by " +
"password grant type. Encoded client credentials are " +
"missing - setupTokenPairByPasswordGrantType(x, y)");
} else {
var tokenData;
// tokenPair will include current access token as well as current refresh token
var arrayOfScopes = configs["authorization"]["methods"]["oauth"]["attributes"]["scopes"];
var stringOfScopes = "";
arrayOfScopes.forEach(function (entry) {
stringOfScopes += entry + " ";
});
tokenData = tokenUtil.
getTokenPairAndScopesByPasswordGrantType(username,
encodeURIComponent(password), encodedClientAppCredentials, stringOfScopes);
if (!tokenData) {
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up " +
"token pair by password grant type. Error in token " +
"retrieval - setupTokenPairByPasswordGrantType(x, y)");
} else {
var tokenPair = {};
tokenPair["accessToken"] = tokenData["accessToken"];
tokenPair["refreshToken"] = tokenData["refreshToken"];
// setting up token pair into session context as a string
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(tokenPair));
var scopes = tokenData.scopes.split(" ");
// adding allowed scopes to the session
session.put(constants["ALLOWED_SCOPES"], scopes);
}
}
}
};
/**
* Get an AccessToken pair based on SAML assertion
* @param samlToken SAML assertion
* @param username {{clientId:"", clientSecret:""}}
*/
publicMethods["setupTokenPairBySamlGrantType"] = function (username, samlToken) {
if (!username || !samlToken) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up access token pair by " +
"saml grant type. Either username of logged in user, samlToken or both are missing " +
"as input - setupTokenPairBySamlGrantType(x, y)");
} else {
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
var encodedClientAppCredentials =
session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!encodedClientAppCredentials) {
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair " +
"by saml grant type. Encoded client credentials are " +
"missing - setupTokenPairBySamlGrantType(x, y)");
} else {
var tokenData;
// accessTokenPair will include current access token as well as current refresh token
tokenData = tokenUtil.
getTokenPairAndScopesByJWTGrantType(username, encodedClientAppCredentials, "PRODUCTION");
if (!tokenData) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up token " +
"pair by saml grant type. Error in token " +
"retrieval - setupTokenPairBySamlGrantType(x, y)");
} else {
var tokenPair = {};
tokenPair["accessToken"] = tokenData["accessToken"];
tokenPair["refreshToken"] = tokenData["refreshToken"];
// setting up access token pair into session context as a string
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(tokenPair));
var scopes = tokenData.scopes.split(" ");
// adding allowed scopes to the session
session.put(constants["ALLOWED_SCOPES"], scopes);
}
}
}
};
/**
* Set access token and refresh token using refresh token grant type
*/
publicMethods["refreshTokenPair"] = function () {
var currentTokenPair = parse(session.get(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"]));
// currentTokenPair includes current access token as well as current refresh token
var encodedClientAppCredentials
= session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!currentTokenPair || !encodedClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Error in refreshing tokens. Either the " +
"token pair, encoded client app credentials or both input are not found under " +
"session context - refreshTokenPair()");
} else {
var newTokenPair = tokenUtil.
getNewTokenPairByRefreshToken(currentTokenPair["refreshToken"], encodedClientAppCredentials);
if (!newTokenPair) {
log.error("{/app/modules/oauth/token-handlers.js} Error in refreshing token pair. " +
"Unable to update session context with new access token pair - refreshTokenPair()");
} else {
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(newTokenPair));
}
}
};
/**
* If gateway is enable, apiManagerClientAppRegistrationServiceURL is used to create an oauth application or
* else DCR endpoint is used to create an oauth application
* @param username username of current logged user
*/
privateMethods["setUpEncodedTenantBasedClientAppCredentials"] = function (username) {
if (!username) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up encoded tenant based " +
"client credentials to session context. No username of logged in user is found as " +
"input - setUpEncodedTenantBasedClientAppCredentials(x)");
} else {
if (configs["authorization"]["methods"]["oauth"]["attributes"]["apimgt-gateway"]) {
var tenantBasedClientAppCredentials = tokenUtil.getTenantBasedClientAppCredentials(username);
if (!tenantBasedClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up encoded tenant " +
"based client credentials to session context as the server is unable " +
"to obtain such credentials - setUpEncodedTenantBasedClientAppCredentials(x)");
} else {
var encodedTenantBasedClientAppCredentials =
tokenUtil.encode(tenantBasedClientAppCredentials["clientId"] + ":" +
tenantBasedClientAppCredentials["clientSecret"]);
// setting up encoded tenant based client credentials to session context.
session.put(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"],
encodedTenantBasedClientAppCredentials);
}
} else {
var dynamicClientAppCredentials = tokenUtil.getDynamicClientAppCredentials(username);
if (!dynamicClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up encoded tenant based " +
"client credentials to session context as the server is unable to obtain " +
"dynamic client credentials - setUpEncodedTenantBasedClientAppCredentials(x)");
}
var encodedTenantBasedClientAppCredentials =
tokenUtil.encode(dynamicClientAppCredentials["clientId"] + ":" +
dynamicClientAppCredentials["clientSecret"]);
// setting up encoded tenant based client credentials to session context.
session.put(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"],
encodedTenantBasedClientAppCredentials);
}
}
};
return publicMethods;
}();

View File

@ -1,165 +0,0 @@
<!--
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2</groupId>
<artifactId>wso2</artifactId>
<version>1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.wso2.iot.devicemgt-plugins</groupId>
<artifactId>iot-devicetype-analytics-samples</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>Install Connected Cup Device Types - Analytics</name>
<url>http://wso2.org</url>
<build>
<plugins>
<plugin>
<groupId>org.wso2.maven</groupId>
<artifactId>carbon-p2-plugin</artifactId>
<version>1.5.4</version>
<executions>
<execution>
<id>2-p2-repo-generation</id>
<phase>package</phase>
<goals>
<goal>p2-repo-gen</goal>
</goals>
<configuration>
<metadataRepository>file:\${project.basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${project.basedir}/target/p2-repo</artifactRepository>
<publishArtifacts>true</publishArtifacts>
<publishArtifactRepository>true</publishArtifactRepository>
<featureArtifacts>
<featureArtifactDef>
org.coffeeking:org.coffeeking.connectedcup.analytics.feature:\${org.coffeeking.version}
</featureArtifactDef>
</featureArtifacts>
</configuration>
</execution>
<execution>
<id>default-feature-install</id>
<phase>package</phase>
<goals>
<goal>p2-profile-gen</goal>
</goals>
<configuration>
<profile>analytics-default</profile>
<metadataRepository>file:\${project.basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${project.basedir}/target/p2-repo</artifactRepository>
<destination>\${project.basedir}/../../../components</destination>
<deleteOldProfileFiles>false</deleteOldProfileFiles>
<features>
<!-- Connected Cup Features -->
<feature>
<id>org.coffeeking.connectedcup.analytics.feature.group</id>
<version>\${org.coffeeking.version}</version>
</feature>
</features>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<!-- Before adding ANYTHING in here, please start a discussion on the dev list.
Ideally the Axis2 build should only use Maven central (which is available
by default) and nothing else. We had troubles with other repositories in
the past. Therefore configuring additional repositories here should be
considered very carefully. -->
<repository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.snapshots</id>
<name>WSO2 Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<properties>
<carbon.device.mgt.plugin.version>@carbon-device-mgt-plugin-version@</carbon.device.mgt.plugin.version>
<org.coffeeking.version>1.0.0</org.coffeeking.version>
</properties>
</project>

View File

@ -1,248 +0,0 @@
<!--
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2</groupId>
<artifactId>wso2</artifactId>
<version>1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.wso2.iot.analytics.devicemgt-plugins</groupId>
<artifactId>analytics-devicetype-feature-installation</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Install Virtual Fire Alarm, Raspberry Pi, Arduino, Android Sense Device Types - Analytics</name>
<url>http://wso2.org</url>
<build>
<plugins>
<plugin>
<groupId>org.wso2.maven</groupId>
<artifactId>carbon-p2-plugin</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>2-p2-repo-generation</id>
<phase>package</phase>
<goals>
<goal>p2-repo-gen</goal>
</goals>
<configuration>
<metadataRepository>file:\${project.basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${project.basedir}/target/p2-repo</artifactRepository>
<publishArtifacts>true</publishArtifacts>
<publishArtifactRepository>true</publishArtifactRepository>
<featureArtifacts>
<!-- Ardino Device Type Features -->
<featureArtifactDef>
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.arduino.analytics.feature:${carbon.device.mgt.plugin.version}
</featureArtifactDef>
<!-- Raspberry Device Type Features -->
<featureArtifactDef>
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.raspberrypi.analytics.feature:${carbon.device.mgt.plugin.version}
</featureArtifactDef>
<!-- Virtual Fire Alarm Device Type Features -->
<featureArtifactDef>
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.virtualfirealarm.analytics.feature:${carbon.device.mgt.plugin.version}
</featureArtifactDef>
<!-- Android Sense Device Type Features -->
<featureArtifactDef>
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.androidsense.analytics.feature:${carbon.device.mgt.plugin.version}
</featureArtifactDef>
</featureArtifacts>
</configuration>
</execution>
<execution>
<id>analytics-feature-install</id>
<phase>package</phase>
<goals>
<goal>p2-profile-gen</goal>
</goals>
<configuration>
<profile>analytics-default</profile>
<metadataRepository>file:\${project.basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${project.basedir}/target/p2-repo</artifactRepository>
<destination>\${project.basedir}/../../../components</destination>
<deleteOldProfileFiles>false</deleteOldProfileFiles>
<features>
<feature>
<id>org.wso2.carbon.device.mgt.iot.arduino.analytics.feature.group</id>
<version>${carbon.device.mgt.plugin.version}</version>
</feature>
<feature>
<id>org.wso2.carbon.device.mgt.iot.raspberrypi.analytics.feature.group</id>
<version>${carbon.device.mgt.plugin.version}</version>
</feature>
<feature>
<id>org.wso2.carbon.device.mgt.iot.virtualfirealarm.analytics.feature.group</id>
<version>${carbon.device.mgt.plugin.version}</version>
</feature>
<feature>
<id>org.wso2.carbon.device.mgt.iot.androidsense.analytics.feature.group</id>
<version>${carbon.device.mgt.plugin.version}</version>
</feature>
</features>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>default-feature-install</id>
<phase>package</phase>
<configuration>
<tasks>
<copy todir="../repository/deployment/server/">
<fileset dir="resources/">
<include name="**/*"/>
</fileset>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<!-- Before adding ANYTHING in here, please start a discussion on the dev list.
Ideally the Axis2 build should only use Maven central (which is available
by default) and nothing else. We had troubles with other repositories in
the past. Therefore configuring additional repositories here should be
considered very carefully. -->
<repository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.snapshots</id>
<name>WSO2 Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>entgra-nexus</id>
<name>Entgra internal Repository</name>
<url>http://nexus.entgra.io/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>entgra.releases</id>
<name>Entgra internal Repository</name>
<url>http://nexus.entgra.io/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>entgra.snapshots</id>
<name>Entgra Snapshot Repository</name>
<url>http://nexus.entgra.io/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<properties>
<carbon.device.mgt.plugin.version>${carbon.device.mgt.plugin.version}</carbon.device.mgt.plugin.version>
</properties>
</project>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>activity_data.csv</file>
<streamID>org.wso2.iot.android.activity:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>audio_data.csv</file>
<streamID>org.wso2.iot.android.audio:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1000</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>battery_data.csv</file>
<streamID>org.wso2.iot.android.battery:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1000</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>call_data.csv</file>
<streamID>org.wso2.iot.android.call:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1000</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>location_data.csv</file>
<streamID>org.wso2.iot.android.location:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1000</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>network_data.csv</file>
<streamID>org.wso2.iot.android.data:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>screen_data.csv</file>
<streamID>org.wso2.iot.android.screen:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1000</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<streamConfiguration type="csv">
<file>sms_data.csv</file>
<streamID>org.wso2.iot.android.sms:1.0.0</streamID>
<separateChar>,</separateChar>
<delayBetweenEventsInMilies>1000</delayBetweenEventsInMilies>
</streamConfiguration>

View File

@ -103,11 +103,6 @@
<exclude>**/conf/tomcat/carbon/WEB-INF/web.xml</exclude>
<exclude>**/bin/wso2server.sh</exclude>
<exclude>**/bin/wso2server.bat</exclude>
<exclude>
**/repository/deployment/server/jaggeryapps/portal/modules/oauth/plugins/token-handler-utils.js
</exclude>
<exclude>**/repository/deployment/server/jaggeryapps/portal/modules/oauth/plugins/token-handlers.js
</exclude>
</excludes>
</fileSet>
@ -387,22 +382,6 @@
</excludes>
</fileSet>
<!-- Copying APP Manager Publisher and Store Jaggery apps -->
<!--<fileSet>-->
<!--<directory>-->
<!--../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/jaggeryapps/publisher/-->
<!--</directory>-->
<!--<outputDirectory>${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/publisher-->
<!--</outputDirectory>-->
<!--<excludes>-->
<!--<exclude>publisherLogo/**</exclude>-->
<!--<exclude>publisherTheme/**</exclude>-->
<!--<exclude>publisherSite/**</exclude>-->
<!--<exclude>footer/**</exclude>-->
<!--<exclude>localstyles.css</exclude>-->
<!--<exclude>**/jaggery.conf</exclude>-->
<!--</excludes>-->
<!--</fileSet>-->
<!--<fileSet>-->
<!--<directory>-->
<!--../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/jaggeryapps/store/-->
@ -419,24 +398,6 @@
<!--</excludes>-->
<!--</fileSet>-->
<!-- Copying API Manager Store Jaggery app -->
<fileSet>
<directory>
../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/jaggeryapps/api-store/
</directory>
<outputDirectory>${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/api-store
</outputDirectory>
<excludes>
<exclude>storeLogo/**</exclude>
<exclude>storeSite/**</exclude>
<exclude>base-page/**</exclude>
<exclude>login/**</exclude>
<exclude>styles-layout.css</exclude>
<exclude>**/site/conf/site.json</exclude>
<exclude>**/jaggery.conf</exclude>
</excludes>
</fileSet>
<!-- <fileSet>-->
<!-- <directory>-->
<!-- ../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/jaggeryapps/social/-->
@ -518,49 +479,6 @@
<include>*/**</include>
</includes>
</fileSet>
<!-- Dashboard portal Jaggery app. Should be copied to <DAS_HOME>/repository/deployment/server/jaggeryapps -->
<fileSet>
<directory>
../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/jaggeryapps/portal
</directory>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal
</outputDirectory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>**/configs/designer.json</exclude>
<exclude>**/jaggery.conf</exclude>
</excludes>
</fileSet>
<!-- Adding analytics theme to extensions -->
<fileSet>
<directory>
src/core/jaggeryapps/portal/themes/analytics
</directory>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/extensions/themes/analytics
</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
<!-- Files required to mobile-qsg -->
<fileSet>
<directory>../scripts/mobile-qsg/resources</directory>
<outputDirectory>
${pom.artifactId}-${pom.version}/samples/mobile-qsg
</outputDirectory>
<includes>
<include>**/**</include>
</includes>
<excludes>
<exclude>**/*.sh*</exclude>
</excludes>
</fileSet>
<!-- Files required to mobile-qsg -->
@ -639,22 +557,6 @@
</excludes>
</fileSet>
<fileSet>
<directory>src/core/samples</directory>
<outputDirectory>${pom.artifactId}-${pom.version}/samples</outputDirectory>
<includes>
<include>*/**</include>
</includes>
<fileMode>644</fileMode>
<excludes>
<exclude>**/*connectedcup-samples-deployer.xml</exclude>
<exclude>**/*connectedcup/pom.xml</exclude>
<exclude>**/*sampledevice/pom.xml</exclude>
<exclude>**/*sampledevice-deployer.xml</exclude>
<exclude>**/*device-plugins-deployer.xml</exclude>
</excludes>
</fileSet>
<!-- Copying forget me tool -->
<fileSet>
<directory>target/forget-me/identity-anonymization-tool-${forgetme.tool.version}/</directory>
@ -859,30 +761,6 @@
</includes>
</fileSet>
<fileSet>
<directory>
../p2-profile/analytics-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/jaggeryapps/portal
</directory>
<outputDirectory>
${pom.artifactId}-${pom.version}/wso2/analytics/repository/deployment/server/jaggeryapps/portal
</outputDirectory>
<excludes>
<exclude>**/configs/designer.json</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>
src/analytics/jaggeryapps/portal/libs/
</directory>
<outputDirectory>
${pom.artifactId}-${pom.version}/wso2/analytics/repository/deployment/server/jaggeryapps/portal/analytics-wso2-2.0.0
</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
<fileSet>
<directory>
../p2-profile/analytics-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/deployment/server/carbonapps/
@ -950,12 +828,6 @@
<fileMode>755</fileMode>
</fileSet>
<fileSet>
<directory>src/analytics/samples</directory>
<outputDirectory>${pom.artifactId}-${pom.version}/wso2/analytics/samples</outputDirectory>
<filtered>true</filtered>
</fileSet>
<fileSet>
<directory>../p2-profile/analytics-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/components
</directory>
@ -1177,7 +1049,7 @@
</includes>
</dependencySet>
<dependencySet>
<outputDirectory>wso2iot-broker-${pom.version}/repository/lib</outputDirectory>
<outputDirectory>entgra-iot-broker-${pom.version}/repository/lib</outputDirectory>
<includes>
<include>jline:jline:jar</include>
</includes>
@ -1195,37 +1067,6 @@
<source>src/core/conf/tomcat/webapp-classloading-environments.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/conf/tomcat</outputDirectory>
</file>
<file>
<source>src/core/jaggeryapps/portal/configs/designer.json</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/configs
</outputDirectory>
<fileMode>755</fileMode>
</file>
<file>
<source>src/core/jaggeryapps/portal/modules/oauth/token-handler-utils.js</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/modules/oauth
</outputDirectory>
<fileMode>755</fileMode>
</file>
<file>
<source>src/core/jaggeryapps/portal/modules/oauth/token-handlers.js</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/modules/oauth
</outputDirectory>
<fileMode>755</fileMode>
</file>
<!-- End of "portal" app specific modifications -->
<!-- Copying config file for enabling sso in api-store-->
<file>
<source>src/core/jaggeryapps/api-store/site/conf/site.json</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/api-store/site/conf
</outputDirectory>
<fileMode>755</fileMode>
</file>
<!-- Copying synapse.properties file -->
<file>
@ -1566,27 +1407,6 @@
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/core/jaggeryapps/api-store/jaggery.conf</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/api-store/
</outputDirectory>
<fileMode>755</fileMode>
</file>
<file>
<source>src/core/jaggeryapps/portal/jaggery.conf</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/
</outputDirectory>
<fileMode>755</fileMode>
</file>
<!--<file>-->
<!--<source>src/core/jaggeryapps/publisher/jaggery.conf</source>-->
<!--<outputDirectory>-->
<!--${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/publisher/-->
<!--</outputDirectory>-->
<!--<fileMode>755</fileMode>-->
<!--</file>-->
<file>
<source>src/core/jaggeryapps/privacy-policies/jaggery.conf</source>
@ -1596,60 +1416,6 @@
<fileMode>755</fileMode>
</file>
<!-- <file>-->
<!-- <source>src/core/jaggeryapps/social/jaggery.conf</source>-->
<!-- <outputDirectory>-->
<!-- ${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/social/-->
<!-- </outputDirectory>-->
<!-- <fileMode>755</fileMode>-->
<!-- </file>-->
<!--<file>-->
<!--<source>src/core/jaggeryapps/store/jaggery.conf</source>-->
<!--<outputDirectory>-->
<!--${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/store/-->
<!--</outputDirectory>-->
<!--<fileMode>755</fileMode>-->
<!--</file>-->
<file>
<source>
src/core/cloud/portal/common.css
</source>
<outputDirectory>${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/css
</outputDirectory>
</file>
<file>
<source>
src/core/cloud/portal/portal.js
</source>
<outputDirectory>${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/js
</outputDirectory>
</file>
<file>
<source>
src/core/cloud/portal/global-navigation.jag
</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/theme/templates
</outputDirectory>
</file>
<!-- Copying mobile-qsg jar -->
<file>
<source>../scripts/mobile-qsg/target/mobile-qsg.jar</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/samples/mobile-qsg
</outputDirectory>
</file>
<file>
<source>../scripts/mobile-qsg/resources/mobile-qsg.sh</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/samples/mobile-qsg
</outputDirectory>
<fileMode>755</fileMode>
</file>
<!-- copying server scripts -->
<file>
<source>../scripts/change-ip.sh</source>
@ -1690,44 +1456,6 @@
${pom.artifactId}-${pom.version}/conf/identity
</outputDirectory>
</file>
<!--<file>-->
<!--<source>-->
<!--../p2-profile/iot-core-profile/target/wso2carbon-core-${carbon.kernel.version}/wso2/resources/lifecycles/MobileAppLifeCycle.xml-->
<!--</source>-->
<!--<outputDirectory>-->
<!--${pom.artifactId}-${pom.version}/repository/resources/lifecycles-->
<!--</outputDirectory>-->
<!--</file>-->
<file>
<source>src/core/samples/connectedcup-samples-deployer.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/samples/</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/core/samples/device-plugins-deployer.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/samples/</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/core/samples/sampledevice-deployer.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/samples/</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/core/samples/connectedcup/pom.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/samples/connectedcup/</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/core/samples/sampledevice/pom.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/samples/sampledevice/</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<!-- ********************************* End of IoT Core Profile ********************************* -->
<!-- ********************************* Start of Analytics Profile ********************************* -->
@ -1829,33 +1557,6 @@
</outputDirectory>
</file>
<!-- portal-->
<file>
<source>
src/analytics/jaggeryapps/portal/designer.json
</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/wso2/analytics/repository/deployment/server/jaggeryapps/portal/configs/
</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/analytics/jaggeryapps/portal/modules/oauth/token-handler-utils.js</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/wso2/analytics/repository/deployment/server/jaggeryapps/portal/modules/oauth
</outputDirectory>
<fileMode>755</fileMode>
</file>
<file>
<source>src/analytics/jaggeryapps/portal/modules/oauth/token-handlers.js</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/wso2/analytics/repository/deployment/server/jaggeryapps/portal/modules/oauth
</outputDirectory>
<fileMode>755</fileMode>
</file>
<file>
<source>src/analytics/resources/geodashboard/events.csv</source>
<outputDirectory>
@ -1872,14 +1573,6 @@
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>src/analytics/jaggeryapps/portal/jaggery.conf</source>
<outputDirectory>
${pom.artifactId}-${pom.version}/wso2/analytics/repository/deployment/server/jaggeryapps/portal/
</outputDirectory>
<fileMode>755</fileMode>
</file>
<!-- ********************************* End of Analytics Profile ********************************* -->
<!-- ********************************* Start of Broker Profile ********************************* -->
@ -2058,6 +1751,42 @@
<source>src/core/resources/dbscripts/postgresql.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/db2.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/h2.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/mssql.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/mysql.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/mysql5.7.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/mysql_cluster.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/oracle.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/oracle_rac.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<file>
<source>src/core/resources/dbscripts/apimgt/postgresql.sql</source>
<outputDirectory>${pom.artifactId}-${pom.version}/dbscripts/apimgt</outputDirectory>
</file>
<!-- ********************************* End of Carbon DB Copying ********************************* -->
</files>
</assembly>

View File

@ -18,7 +18,7 @@
product.name=Entgra IoT Server
product.key=IoT
product.version=4.0.0-SNAPSHOT
product.version=4.1.0-SNAPSHOT
product.doc.version=360
carbon.version=4.4.26

View File

@ -1,18 +1,18 @@
WSO2 IoT Server @product.version@
Entgra IoT Server @product.version@
==============================================================
Welcome to the WSO2 IoT Server (IoTS) @product.version@ release.
Welcome to the Entgra IoT Server (IoTS) @product.version@ release.
WSO2 IoT Server (IoTS) provides the essential capabilities required to implement a scalable server-side IoT Platform. These capabilities
Entgra IoT Server (IoTS) provides the essential capabilities required to implement a scalable server-side IoT Platform. These capabilities
involve device management, API/App management for devices, analytics, customizable web portals, transport extensions for MQTT, XMPP
and much more. WSO2 IoTS contains sample device agent implementations for well-known development boards, such as Arduino UNO, Raspberry Pi,
Android, iOS, Windows and Virtual agents that demonstrate various capabilities. Furthermore, WSO2 IoTS is released under
and much more. Entgra IoTS contains sample device agent implementations for well-known development boards, such as Arduino UNO, Raspberry Pi,
Android and Virtual agents that demonstrate various capabilities. Furthermore, Entgra IoTS Community Edition is released under
the Apache Software License Version 2.0, one of the most business-friendly licenses available today.
Key Features
==================================
See the online WSO2 IoT documentation for more information on product features:
https://docs.wso2.com/display/IoTS@product.doc.version@/About+this+Release
See the online Entgra IoT documentation for more information on product features:
https://entgra-documentation.gitlab.io/v@product.doc.version@
Installation & Running
@ -45,7 +45,7 @@ System Requirements
2. The portal app requires full Javascript enablement on the Web browser
WSO2 IoT distribution directory
Entgra IoT distribution directory
=============================================
- bin
@ -62,7 +62,7 @@ WSO2 IoT distribution directory
in standalone mode
- repository
The repository where services and modules deployed in WSO2 IoT.
The repository where services and modules deployed in Entgra IoT.
are stored.
- conf
@ -77,7 +77,7 @@ WSO2 IoT distribution directory
- samples
Contains some sample services and client applications that demonstrate
the functionality and capabilities of WSO2 IoT.
the functionality and capabilities of Entgra IoT.
- tmp
Used for storing temporary files, and is pointed to by the
@ -85,13 +85,13 @@ WSO2 IoT distribution directory
- LICENSE.txt
Apache License 2.0 and the relevant other licenses under which
WSO2 IoT is distributed.
Entgra IoT is distributed.
- README.txt
This document.
- release-notes.html
Release information for WSO2 IoT @product.version@
Release information for Entgra IoT @product.version@
- patches
Used to add patches related for all runtimes.
@ -107,28 +107,28 @@ WSO2 IoT distribution directory
-webapp-mode
-wso2/components
-Entgra/components
Contains profiles for all runtimes and the plugins folder
-wso2/lib
-Entgra/lib
Contains jars that are required/shared by all runtimes.
-wso2/analytics
-Entgra/analytics
Contains analytics runtime related files/folders.
-wso2/analytics/conf
-Entgra/analytics/conf
Analytics runtime specific configuration files.
-wso2/analytics/repository
-Entgra/analytics/repository
Where deployments of Analytics runtime is stored.
-wso2/broker
-Entgra/broker
Contains broker runtime related files/folders.
-wso2/broker/conf
-Entgra/broker/conf
Broker runtime specific configuration files.
-wso2/broker/repository
-Entgra/broker/repository
Where deployments of broker runtime is stored.
@ -154,9 +154,9 @@ This script automates the following configurations that you would normally need
cipher-tool.properties, cipher-text.properties and secret-conf.properties files
can be found in the <IoT_HOME>/conf/security directory.
2. Start the server by running the wso2server script, which is in the <IoT_HOME>/bin directory.
2. Start the server by running the iotserver script, which is in the <IoT_HOME>/bin directory.
> wso2server.sh (in UNIX)
> iotserver.sh (in UNIX)
When running the default mode, it asks you to enter the master password
(By default, the master password is the password of the Carbon keystore and private key)
@ -171,8 +171,8 @@ https://docs.wso2.com/display/ADMIN44x/Carbon+Secure+Vault+Implementation
Training
--------
WSO2 Inc. offers a variety of professional Training Programs for WSO2 products.
For additional support on training information please goto http://wso2.com/training/
Entgra (Pvt) Ltd. offers a variety of professional Training Programs for Entgra products.
For additional support on training information please goto https://entgra.io/contact
Support
@ -180,7 +180,7 @@ Support
We are committed to ensuring that your enterprise middleware deployment is completely supported from evaluation to production. Our unique approach ensures that all support leverages our open development methodology and is provided by the very same engineers who build the technology.
For additional support information please refer to http://wso2.com/support/
For additional support information please refer to https://entgra.io/contact
---------------------------------------------------------------------------
(c) Copyright 2017 WSO2 Inc.
(c) Copyright 2020 Entgra (Pvt) Ltd.

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2020, Entgra (pvt) Ltd. (http://entgra.io)
~
~ All Rights Reserved.
~
~ Unauthorized copying of this file, via any medium is strictly prohibited.
~ Proprietary and confidential.
-->
<api context="/sync" name="sync-api" xmlns="http://ws.apache.org/ns/synapse">
<resource faultSequence="fault" methods="GET" url-mapping="/time">
<inSequence>
<payloadFactory>
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<text xmlns="http://ws.apache.org/commons/ns/payload">$1</text>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg expression="get-property('SYSTEM_TIME')"/>
</args>
</payloadFactory>
<property name="messageType" value="text/plain" scope="axis2"/>
<respond/>
</inSequence>
<outSequence>
</outSequence>
</resource>
</api>

View File

@ -337,6 +337,11 @@ do
-Diot.apimstore.https.port="9443" \
-Dmqtt.broker.https.port="9446" \
-Denable-api-scopes-sharing="true" \
-Dagent-bundle="org.wso2.carbon.emm.mdmagent" \
-Diot.reporting.event.host="" \
-Diot.reporting.webapp.host="" \
-Diot.remotesession.server.host="localhost" \
-Diot.remotesession.server.https.port="9443" \
org.wso2.carbon.bootstrap.Bootstrap $*
status=$?
done

View File

@ -23,7 +23,7 @@ set DISTRIBUTION=entgra-iot-@product.version@
REM get the desired profile
echo This tool will erase all the files which are not required for the selected profile
echo and provide you a light weight package for the target profile.
echo WSO2 IoT Server Supports following profiles.
echo Entgra IoT Server Supports following profiles.
echo 1.IoT Device Backend Profile
echo 2.IoT Device Manager Profile
echo 3.IoT Key Manager Profile

View File

@ -16,7 +16,7 @@
# specific language governing permissions and limitations
# under the License.
#-------------------------------------------------------------------------
# Profile creator tool for EI
# Profile creator tool for IoTS
#-------------------------------------------------------------------------
@ -28,7 +28,7 @@ BINDIR=$(pwd)
#get the desired profile
echo "This tool will erase all the files which are not required for the selected profile "
echo "and also creates a distribution of this profile in the same folder <IOT_HOME> resides."
echo "WSO2 IoT Server Supports following profiles."
echo "Entgra IoT Server Supports following profiles."
echo " 1.IoT Device Backend Profile"
echo " 2.IoT Device Manager Profile"
echo " 3.IoT Key Manager Profile"

View File

@ -75,16 +75,17 @@ placeHolderSoGenPropsComeHere=
wrapper.java.command = ${java_home}\\bin\\java
wrapper.java.classpath.1 = ${java_home}\\lib\\tools.jar
wrapper.java.classpath.2 = ${carbon_home}\\bin\\*.jar
wrapper.java.classpath.3 = ${carbon_home}\\wso2\\components\\plugins\\commons-lang_2.6.0.wso2v1.jar
wrapper.app.parameter.1 = org.wso2.carbon.bootstrap.Bootstrap
wrapper.app.parameter.2 = RUN
wrapper.java.additional.1 = -Xbootclasspath\/a:${carbon_home}\\lib\\xboot\\*.jar
wrapper.java.additional.1 = -Xbootclasspath\/a:${carbon_home}\\wso2\\lib\\xboot\\*.jar
wrapper.java.additional.2 = -Xms256m
wrapper.java.additional.3 = -Xmx1024m
wrapper.java.additional.4 = -XX:MaxPermSize=512m
wrapper.java.additional.5 = -XX:+HeapDumpOnOutOfMemoryError
wrapper.java.additional.6 = -XX:HeapDumpPath=${carbon_home}\\repository\\logs\\heap-dump.hprof
wrapper.java.additional.7 = -Dcom.sun.management.jmxremote
wrapper.java.additional.8 = -Djava.endorsed.dirs=${carbon_home}\\wso2\\lib\\endorsed;${java_home}\\jre\\lib\\endorsed;${java_home}\\wso2\\lib\\endorsed
wrapper.java.additional.8 = -Djava.endorsed.dirs=${carbon_home}\\wso2\\lib\\endorsed;${java_home}\\jre\\lib\\endorsed
wrapper.java.additional.9 = -Dcarbon.registry.root=\/
wrapper.java.additional.10 = -Dcarbon.home=${carbon_home}
wrapper.java.additional.11 = -Dwso2.server.standalone=true

View File

@ -1,245 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/**
* Validation messages
*/
.required {
color: #e74c3c;
}
.required-error {
background: #a94442;
border: 1px solid #a94442;
padding: 6px 12px;
color: #fff;
}
/**
* Theme overrides
*/
.breadcrumb li .fw-home {
float: left;
padding-top: 2px;
margin-right: 5px;
}
/**
* Auth menu
*/
.auth .hidden-xs {
line-height: 38px;
}
.auth-xs {
color: #fff;
}
.auth-xs ul {
list-style: none;
padding: 0;
margin: 0;
line-height: 28px;
background-color: #2a80b9;
}
.auth-xs li {
color: #ccc;
}
.auth-xs li a {
display: block;
color: #fff;
}
.auth-xs li a:hover {
background-color: #499dd5;
}
ul.dropdown-menu.more-actions-button {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
width: 40px;
background: #F9F9F9;
border-bottom: 1px solid #EFEFEF;
min-width: 45px;
}
ul.dropdown-menu.more-actions-button > li {
height: 40px;
width: 40px;
border: 1px;
}
ul.dropdown-menu.more-actions-button > li > button {
border-bottom: 1px solid #e4e4e4;
border-top: 1px solid darkred;
}
.btn-group.open .dropdown-toggle {
-webkit-box-shadow: none;
box-shadow: none;
border: 0px;
}
.btn-custom {
border-width: 1px;
}
.cloud-menu .popover {
border-radius: 0px;
width: 24em;
left: -21.1em !important;
max-width: 32em;
background-color: #006690
}
.cloud-menu .popover-title,.navbar-header .popover-title {
background-color: #006690;
font-size: 16px;
border-bottom: none;
font-weight: 400;
}
.cloud-menu .popover.bottom>.arrow{
margin-left:-2px;
}
.cloud-menu .popover.bottom>.arrow:after,.navbar-header .popover.bottom>.arrow:after{
border-bottom-color: #006690;
}
.cloud-block {
float: left;
width: 8.2em;
height: 8.2em;
background-color: #fff;
margin: 0.5em 0em 0.5em 0.5em;
text-align: center;
vertical-align: middle;
}
.cloud-name {
font-size:14px;
margin-top: .5em;
font-weight: 400;
}
.cloud-menu-popover {
position: relative;
float: right;
padding: 0px 8px;
background-color: transparent;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
color: #fff;
cursor: pointer;
}
#cloud-menu-popover-xs {
color: #fff;
line-height:24px;
border: none;
margin-right: 15px!important;
}
.navbar-toggle{
border:none;
border-radius: 0px;
}
.navbar-header .popover {
border-radius: 0px;
width: 21em;
max-width:32em;
background-color: #006690;
}
.navbar-header .popover .popover-content{
padding:0px;
}
.cloud-menu .popover-content {
padding: 0px;
}
.cloud-actions {
background-color: #005578;
float: left;
position: absolute;
width: 100%;
left: 0px;
overflow:hidden;
}
.cloud-actions h3 {
font-size: 16px;
font-weight: 400;
padding-left: 14px;
margin-top: 10px;
}
.cloud-block-invert {
color: #fff;
float: left;
width: 8.2em;
height: 8.2em;
background-color: #1f1f1f;
margin: 0.5em 0em 0.5em 0.5em;
text-align: center;
cursor: pointer;
}
.cloud-block-default {
color: #006690;
background-color: #fff;
cursor: pointer;
}
.cloud-actions a:hover {
color: #d7d5d5;
background-color: #3d3d3d;
text-decoration: none
}
.cloud-apps a {
text-decoration: none;
color: #006690 !important;
cursor: pointer
}
.cloud-apps a:hover {
text-decoration: none;
color: #006690;
background-color: #c5c5c5;
}
.cloud-apps .cloud-actions a {
color: #fff
}
.add-padding-top-3x {
padding-top: 15px !important;
}
.nav li a{
color: #fff;
}
.cloud-menu-content li a{
color:inherit;
}
html{
height: 100%;
}
body{
height: calc(100% - 50px);
}

View File

@ -1,329 +0,0 @@
<%
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
%>
<%
var query = request.getQueryString();
var dest = encodeURIComponent(originalURI + (query ? '?' + query : ''));
var configs = require('/configs/portal.js').config();
var isCloud = configs.isCloud;
%>
<header class="header header-default">
<div class="container-fluid">
<div class="pull-left brand float-remove-xs text-center-xs">
<a href="<%=tenantedUrlPrefix%>./dashboards">
<img src="<%=urlPrefix%>libs/theme-wso2_1.0/images/logo-inverse.svg" alt="WSO2" title="WSO2" class="logo">
<% if (isCloud) { %>
<h1>Cloud</h1>
<% } else { %>
<h1><%=i18n.localize("dashboard.server.label")%></h1>
<% } %>
</a>
</div>
<% if (isCloud) { %>
<div class="pull-right auth float-remove-xs text-center-xs">
<% if (user) { %>
<ul class="nav navbar-right float-remove-xs text-center-xs">
<li class="visible-inline-block">
<a href="#" target="_self" title="
<%=user.domain%>
">
<span class="icon fw-stack fw-lg">
<i class="fw fw-organization fw-stack-1x" title=" {{@user.domain}}"></i>
</span>
<span class="hidden-xs">
<%=user.domain%>
</span>
</a>
</li>
<li class="visible-inline-block">
<a href="#" target="_blank" class="dropdown" data-toggle="dropdown" title="Account">
<span class="icon fw-stack fw-lg" style="color: red">
<i class="fw fw-resource fw-stack-1x" title="Account"></i>
</span>
<span class="hidden-xs" style="color: red">
Trial 14 days to upgrade
</span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu dropdown-menu-right float-remove-xs position-static-xs text-center-xs remove-margin-xs slideInDown"
role="menu">
<li>
<a title="Upgrade Now"
href="https://cloudmgt.clouddev.wso2.com/cloudmgt/site/pages/payment-plans.jag?cloud-type=device_cloud"
target="_self">
<i class="fw fw-export" title="Upgrade Now"></i> Upgrade Now
</a>
</li>
<li>
<a title="Monetization"
href="https://cloudmgt.clouddev.wso2.com/cloudmgt/site/pages/monetization-dashboard.jag"
target="_self">
<i class="fa fa-money fa-lg" title="Monetization"></i> Monetization
</a>
</li>
<li>
<a title="Request Extension"
href="https://cloudmgt.clouddev.wso2.com/cloudmgt/site/pages/contact-us.jag?cloud-type=device_cloud&amp;request-extension=true"
target="_blank">
<i class="fw fw-mail" title="Request Extension"></i> Request Extension
</a>
</li>
</ul>
</li>
<li class="visible-inline-block">
<a href="#" target="null" class="dropdown" data-toggle="dropdown" title="App Management">
<span class="icon fw-stack fw-lg">
<i class="fw fw-settings fw-stack-1x" title="App Management"></i>
</span>
<span class="hidden-xs">
App Management
</span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu dropdown-menu-right float-remove-xs position-static-xs text-center-xs remove-margin-xs slideInDown"
role="menu">
<li class="visible-inline-block">
<a title="Mobile App Publisher" href="https://devicemgt.clouddev.wso2.com/publisher"
target="_self">
<i class="fw fw-user" title="Mobilr App Publisher"></i> App Publisher
</a>
</li>
<li class="visible-inline-block">
<a title="App Store " href="https://devicemgt.clouddev.wso2.com/store"
target="_self">
<i class="fw fw-store" title="App Store"></i> App Store
</a>
</li>
</ul>
</li>
<li class="visible-inline-block">
<a href="https://cloudmgt.clouddev.wso2.com/cloudmgt/site/pages/contact-us.jag" target="_self"
title="Support">
<span class="icon fw-stack fw-lg" style="color: #ff8c27;">
<i class="fw fw-mail fw-stack-1x" title="Support"></i>
</span>
<span class="hidden-xs" style="color: #ff8c27;">
Support
</span>
</a>
</li>
<li class="visible-inline-block">
<a href="#" target="null" class="dropdown" data-toggle="dropdown" title="Documentation">
<span class="icon fw-stack fw-lg">
<i class="fw fw-document fw-stack-1x" title="Documentation"></i>
</span>
<span class="hidden-xs">
Documentation
</span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu dropdown-menu-right float-remove-xs position-static-xs text-center-xs remove-margin-xs slideInDown"
role="menu">
<li>
<a title="API Cloud"
href="https://docs.wso2.com/display/APICloud/WSO2+API+Cloud+Documentation"
target="_blank">
<i class="fw fw-api" title="API Cloud"></i> API Cloud
</a>
</li>
<li>
<a title="App Cloud"
href="https://docs.wso2.com/display/AppCloud/WSO2+App+Cloud+Documentation"
target="_blank">
<i class="fw fw-application" title="App Cloud"></i> App Cloud
</a>
</li>
<li>
<a title="App Cloud"
href="https://docs.wso2.com/display/AppCloud/WSO2+Device+Cloud+Documentation"
target="_blank">
<i class="fw fw-application" title="App Cloud"></i> Device Cloud
</a>
</li>
<li>
<a title="API Cloud Walkthrough"
href="https://api.clouddev.wso2.com/publisher?interactiveTutorial=true"
target="_self">
<i class="fw fw-document" title="API Cloud Walkthrough"></i> API Cloud Walkthrough
</a>
</li>
</ul>
</li>
<li class="visible-inline-block">
<a href="#" class="dropdown" data-toggle="dropdown" title="user">
<span class="icon fw-stack fw-lg">
<i class="fw fw-circle-outline fw-stack-2x" title="User"></i>
<i class="fw fw-user fw-stack-1x" title="User"></i>
</span>
<span class="hidden-xs">
<%=user.username%></span><span class="caret"></span>
</a>
<ul class="dropdown-menu dropdown-menu-right float-remove-xs position-static-xs text-center-xs remove-margin-xs slideInDown"
role="menu">
<li>
<a title="Profile"
href="https://cloudmgt.clouddev.wso2.com/cloudmgt/site/pages/user-profile.jag"
target="_self">
<i class="fw fw-user" title="Profile"></i> Profile
</a>
</li>
<li>
<a title="Change Password"
href="https://cloudmgt.clouddev.wso2.com/cloudmgt/site/pages/change-password.jag"
target="_self">
<i class="fw fw-lock" title="Change Password"></i> Change Password
</a>
</li>
<li>
<a title="Logout" href="https://api.clouddev.wso2.com/publisher/site/pages/logout.jag"
target="_self">
<i class="fw fw-sign-out" title="Logout"></i> Logout
</a>
</li>
</ul>
</li>
<li class="visible-inline-block cloud-menu">
<a href="#" id="cloud-menu-popover">
<span class="icon fw-stack fw-lg">
<i class="fw fw-tiles fw-stack-1x" data-toggle="popover" data-placement="bottom"
data-original-title="" title=""></i>
</span>
<span class="hidden-xs">
</span>
</a>
</li>
</ul>
</div>
<% } else { %>
<a href="<%=urlPrefix%>login?destination=<%=dest%>" class="dropdown" data-toggle="dropdown">
<%= i18n.localize("login.label")%>
</a>
<% } %>
</div>
<div class="cloud-menu-content hide">
<div id="popover-head" class="hide">Navigate to Cloud</div>
<div id="popover-content" class="hide">
<div class="cloud-apps">
<a href="https://api.cloud.wso2.com/publisher" target="_self" class="cloud-block add-padding-top-3x">
<i class="fw fw-api fw-3x"></i>
<div class="cloud-name">API Cloud</div>
</a>
<a href="https://apps.cloud.wso2.com/appmgt" target="_self" class="cloud-block add-padding-top-3x">
<i class="fw fw-application fw-3x"></i>
<div class="cloud-name">App Cloud</div>
</a>
<a href="https://devicemgt.cloud.wso2.com/devicemgt" target="_self" class="cloud-block add-padding-top-3x">
<i class="fw fw-mobile fw-3x"></i>
<div class="cloud-name">Device Cloud</div>
</a>
<div class="clearfix"></div><!-- to make seperate -->
</div>
<div class="cloud-actions">
<h3>Manage your cloud</h3>
<a href="https://cloudmgt.cloud.wso2.com/cloudmgt/site/pages/organization.jag" target="_self" class="cloud-block-invert add-padding-top-3x">
<i class="fw fw-organization fw-3x"></i>
<div class="cloud-name">Organization</div>
</a>
<a href="https://cloudmgt.cloud.wso2.com/cloudmgt/site/pages/user.jag" target="_self" class="cloud-block-invert add-padding-top-3x">
<i class="fa fa-users fa-3x"></i>
<div class="cloud-name">Members</div>
</a>
</div>
</div>
</div>
<% } else { %>
<div class="pull-right auth float-remove-xs text-center-xs">
<% if (user) { %>
<span class="hidden-xs">
<a href="#" class="dropdown" data-toggle="dropdown">
<span class="add-margin-left-2x add-margin-right-1x"><%=user.username%></span>
<span class="fw fw-user add-margin-right-1x"></span>
<span class="caret add-margin-right-2x"></span>
</a>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li class="dropdown-header visible-xs"><%=user.username%> <span class="caret"></span></li>
<li><a href="<%=urlPrefix%>logout?destination=<%=dest%>"><%= i18n.localize("logout.label")%></a></li>
</ul>
</span>
<div class="visible-xs auth-xs">
<a href="#" class="collapsed" data-toggle="collapse" data-target="#auth-menu-items" aria-expanded="false">
<span class="icon fw-stack fw">
<i class="fw fw-user fw-stack-1x"></i>
</span>
<span class="caret"></span>
</a>
<div id="auth-menu-items" class="collapse">
<ul >
<li><%=user.username%></li>
<li><a href="<%=urlPrefix%>logout?destination=<%=dest%>"><%= i18n.localize("logout.label")%></a></li>
</ul>
</div>
</div>
<% } else { %>
<a href="<%=urlPrefix%>login?destination=<%=dest%>" class="dropdown" data-toggle="dropdown">
<%= i18n.localize("login.label")%>
</a>
<% } %>
</div>
<% } %>
</div>
</header>

View File

@ -1,204 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
$(function () {
var dashboardsApi = ues.utils.tenantPrefix() + 'apis/dashboards';
var dashboards = [];
var isStillLoading = false;
var nextStart = 0;
var hasMore = true;
/**
* Page count.
* @const
*/
var PAGE_COUNT = 10;
// Pre-compiling handlebar templates
var dashboardsListHbs = Handlebars.compile($("#ues-dashboards-list-hbs").html());
var dashboardThumbnailHbs = Handlebars.compile($("#ues-dashboard-thumbnail-hbs").html());
var dashboardConfirmHbs = Handlebars.compile($("#ues-dashboard-confirm-hbs").html());
var dashboardsEmptyHbs = Handlebars.compile($("#ues-dashboards-empty-hbs").html());
Handlebars.registerPartial('ues-dashboard-thumbnail-hbs', dashboardThumbnailHbs);
/**
* Find the dashboard using dashboard id.
* @param id
* @return {object}
* @private
* */
var findDashboard = function (id) {
var i;
var dashboard;
var length = dashboards.length;
for (i = 0; i < length; i++) {
dashboard = dashboards[i];
if (dashboard.id === id) {
return dashboard;
}
}
};
/**
* Delete the selected dashboard
* @param el:-selected dashboard element
* @private
* */
var deleteDashboard = function (el) {
var button = Ladda.create(el[0]);
button.start();
var id = el.closest('.ues-dashboard').data('id');
$.ajax({
url: dashboardsApi + '/' + id,
method: 'DELETE',
async : false,
success: function () {
button.stop();
location.reload();
},
error: function () {
button.stop();
}
});
};
/**
* Load the list of dashboards available.
* @private
* */
var loadDashboards = function () {
isStillLoading = true;
if (!hasMore) {
isStillLoading = false;
$('.ues-dashboard').each(function (i, obj) {
if ($(this).find('.ues-dashboard-share').length) {
$(this).addClass("shared");
}
});
return;
}
ues.store.assets('dashboard', {
start: nextStart,
count: PAGE_COUNT
}, function (err, data) {
var dashboardsEl = $('#ues-portal').find('.ues-dashboards');
hasMore = data.length;
if (!hasMore && nextStart === 0) {
dashboardsEl.append(dashboardsEmptyHbs());
return;
}
nextStart += PAGE_COUNT;
dashboards = dashboards.concat(data);
dashboardsEl.append(dashboardsListHbs(data));
var win = $(window);
var doc = $(document);
isStillLoading = false;
if (doc.height() > win.height()) {
return;
}
loadDashboards();
$(".disable").on('click', function (event) {
event.preventDefault();
});
});
};
/**
* Initialize the UI functionality such as binding events.
* @private
* */
var initUI = function () {
var portal = $('#ues-portal');
portal.on('click', '.ues-dashboards .ues-dashboard-trash-handle', function (e) {
e.preventDefault();
var thiz = $(this);
var dashboardEl = thiz.closest('.ues-dashboard');
var id = dashboardEl.data('id');
var dashboard = findDashboard(id);
dashboardEl.html(dashboardConfirmHbs(dashboard));
});
portal.on('click', '.ues-dashboards .ues-dashboard-trash-confirm', function (e) {
e.preventDefault();
deleteDashboard($(this));
});
portal.on('click', '.ues-dashboards .ues-dashboard-trash-cancel', function (e) {
e.preventDefault();
var thiz = $(this);
var dashboardEl = thiz.closest('.ues-dashboard');
var id = dashboardEl.data('id');
var dashboard = findDashboard(id);
dashboardEl.html(dashboardThumbnailHbs(dashboard));
});
portal.on('click', '.ues-view:not(.disable)', function(e) {
e.preventDefault();
window.open($(this).attr('href'), '_blank');
});
$('#filter-dashboards a').on('click', function () {
$('#filter').html($(this).text());
var filter = $(this).data('filter');
$('.ues-dashboard-container').each(function (i, obj) {
if (filter === "All") {
$(this).show();
} else {
if ($(this).find('.ues-dashboard-share').length) {
filter === "Shared" ? $(this).show() : $(this).hide();
} else {
filter === "Shared" ? $(this).hide() : $(this).show();
}
}
});
});
$(window).scroll(function () {
var win = $(window);
var doc = $(document);
if (win.scrollTop() + win.height() < doc.height() - 100) {
return;
}
if (!isStillLoading) {
loadDashboards();
}
});
};
$(document).ready(function () {
if($('#cloud-menu-popover').length) {
$('#cloud-menu-popover i.fw-tiles').popover({
html: true,
trigger:'click',
title: function() {
return $("#popover-head").html();
},
content: function() {
return $("#popover-content").html();
}
});
}
});
initUI();
loadDashboards();
});

View File

@ -58,8 +58,8 @@
<parameter name="ModulesDirectory">axis2modules</parameter>
<!-- User agent and the server details to be used in the http communication -->
<parameter name="userAgent" locked="true">WSO2 IoT 1.0.0</parameter>
<parameter name="server" locked="true">WSO2 IoT 1.O.0</parameter>
<parameter name="userAgent" locked="true">Entgra IoT 1.0.0</parameter>
<parameter name="server" locked="true">Entgra IoT 1.O.0</parameter>
<!-- During a fault, stacktrace can be sent with the fault message. The following flag -->
<!-- will control that behaviour -->

View File

@ -134,9 +134,9 @@
<OAuth2UserInfoEPUrl>${carbon.protocol}://${carbon.host}:${carbon.management.port}/oauth2/userinfo</OAuth2UserInfoEPUrl>
<OIDCCheckSessionEPUrl>${carbon.protocol}://${carbon.host}:${carbon.management.port}/oidc/checksession</OIDCCheckSessionEPUrl>
<OIDCLogoutEPUrl>${carbon.protocol}://${carbon.host}:${carbon.management.port}/oidc/logout</OIDCLogoutEPUrl>
<OAuth2ConsentPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/authenticationendpoint/oauth2_authz.do</OAuth2ConsentPage>
<OAuth2ConsentPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/devicemgt/consent.do</OAuth2ConsentPage>
<OAuth2ErrorPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/authenticationendpoint/oauth2_error.do</OAuth2ErrorPage>
<OIDCConsentPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/authenticationendpoint/oauth2_consent.do</OIDCConsentPage>
<OIDCConsentPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/devicemgt/consent.do</OIDCConsentPage>
<OIDCLogoutConsentPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/authenticationendpoint/oauth2_logout_consent.do</OIDCLogoutConsentPage>
<OIDCLogoutPage>${carbon.protocol}://${carbon.host}:${carbon.management.port}/authenticationendpoint/oauth2_logout.do</OIDCLogoutPage>
<OIDCWebFingerEPUrl>${carbon.protocol}://${carbon.host}:${carbon.management.port}/.well-known/webfinger</OIDCWebFingerEPUrl>
@ -151,7 +151,7 @@
<!-- Default validity period for user access tokens in seconds -->
<UserAccessTokenDefaultValidityPeriod>3600</UserAccessTokenDefaultValidityPeriod>
<!-- Validity period for refresh token -->
<RefreshTokenValidityPeriod>15552000</RefreshTokenValidityPeriod>
<RefreshTokenValidityPeriod>1555200000</RefreshTokenValidityPeriod>
<!-- Timestamp skew in seconds -->
<TimestampSkew>300</TimestampSkew>
<!-- Enable OAuth caching -->

View File

@ -1,60 +0,0 @@
<!--
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<ServiceProvider>
<ApplicationID>9</ApplicationID>
<ApplicationName>portal</ApplicationName>
<Description>Carbon Dashboards Portal</Description>
<InboundAuthenticationConfig>
<InboundAuthenticationRequestConfigs>
<InboundAuthenticationRequestConfig>
<InboundAuthKey>portal</InboundAuthKey>
<InboundAuthType>samlsso</InboundAuthType>
<Properties>
</Properties>
</InboundAuthenticationRequestConfig>
</InboundAuthenticationRequestConfigs>
</InboundAuthenticationConfig>
<LocalAndOutBoundAuthenticationConfig>
<AuthenticationSteps>
<AuthenticationStep>
<StepOrder>1</StepOrder>
<LocalAuthenticatorConfigs>
<LocalAuthenticatorConfig>
<Name>BasicAuthenticator</Name>
<DisplayName>basicauth</DisplayName>
<IsEnabled>true</IsEnabled>
</LocalAuthenticatorConfig>
</LocalAuthenticatorConfigs>
<SubjectStep>true</SubjectStep>
<AttributeStep>true</AttributeStep>
</AuthenticationStep>
</AuthenticationSteps>
<UseUserstoreDomainInUsername>true</UseUserstoreDomainInUsername>
<UseTenantDomainInUsername>true</UseTenantDomainInUsername>
</LocalAndOutBoundAuthenticationConfig>
<RequestPathAuthenticatorConfigs>
</RequestPathAuthenticatorConfigs>
<InboundProvisioningConfig>
</InboundProvisioningConfig>
<OutboundProvisioningConfig>
</OutboundProvisioningConfig>
<ClaimConfig>
<AlwaysSendMappedLocalSubjectId>true</AlwaysSendMappedLocalSubjectId>
</ClaimConfig>
<PermissionAndRoleConfig>
</PermissionAndRoleConfig>
</ServiceProvider>

View File

@ -84,37 +84,5 @@
<Audience>carbonServer</Audience>
</AudiencesList>
</ServiceProvider>
<ServiceProvider>
<Issuer>portal</Issuer>
<AssertionConsumerServiceURLs>
<AssertionConsumerServiceURL>https://localhost:9443/portal/acs</AssertionConsumerServiceURL>
</AssertionConsumerServiceURLs>
<DefaultAssertionConsumerServiceURL>https://localhost:9443/portal/acs</DefaultAssertionConsumerServiceURL>
<SignResponse>true</SignResponse>
<EnableAudienceRestriction>true</EnableAudienceRestriction>
<EnableRecipients>true</EnableRecipients>
<AudiencesList>
<Audience>https://localhost:9443/oauth2/token</Audience>
</AudiencesList>
<RecipientList>
<Recipient>https://localhost:9443/oauth2/token</Recipient>
</RecipientList>
</ServiceProvider>
<ServiceProvider>
<Issuer>analyticsportal</Issuer>
<AssertionConsumerServiceURLs>
<AssertionConsumerServiceURL>https://localhost:9445/portal/acs</AssertionConsumerServiceURL>
</AssertionConsumerServiceURLs>
<DefaultAssertionConsumerServiceURL>https://localhost:9445/portal/acs</DefaultAssertionConsumerServiceURL>
<SignResponse>true</SignResponse>
<EnableAudienceRestriction>true</EnableAudienceRestriction>
<EnableRecipients>true</EnableRecipients>
<AudiencesList>
<Audience>https://localhost:9443/oauth2/token</Audience>
</AudiencesList>
<RecipientList>
<Recipient>https://localhost:9443/oauth2/token</Recipient>
</RecipientList>
</ServiceProvider>
</ServiceProviders>
</SSOIdentityProviderConfig>

View File

@ -29,7 +29,7 @@
port="9763"
redirectPort="9443"
bindOnInit="false"
maxHttpHeaderSize="8192"
maxHttpHeaderSize="16384"
acceptorThreadCount="2"
maxThreads="250"
minSpareThreads="50"
@ -54,7 +54,7 @@
port="9443"
bindOnInit="false"
sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
maxHttpHeaderSize="8192"
maxHttpHeaderSize="16384"
acceptorThreadCount="2"
maxThreads="250"
minSpareThreads="50"

View File

@ -1,86 +0,0 @@
{
"welcomeFiles":["site/pages/list-apis.jag", "index.html"],
"logLevel" : "info",
"errorPages":
{
"401":"/site/pages/error-pages/401.html",
"403":"/site/pages/error-pages/403.html",
"404":"/site/pages/error-pages/404.html",
"500":"/site/pages/error-pages/500.html"
}
,
"securityConstraints":[
{
"securityConstraint":{
"webResourceCollection":{
"name":"site",
"urlPatterns":["/site/conf/site.json"],
"methods":["GET", "POST", "PUT", "DELETE", "PATCH"]
},
"authRoles":["admin"]
}
}
],
"urlMappings":[
{
"url":"/apis/info",
"path":"/site/pages/item-info.jag"
},
{
"url":"/apis/widget",
"path":"/site/pages/widget.jag"
},
{
"url":"/apis/list",
"path":"/site/pages/list-apis.jag"
},
{
"url":"/forum/api/topic/*",
"path":"/site/blocks/forum/controller/topics.jag"
},
{
"url":"/forum/api/reply/*",
"path":"/site/blocks/forum/controller/reply.jag"
},
{
"url":"/forum/*",
"path":"/site/pages/forum.jag"
},
{
"url":"/api-docs/*",
"path":"/site/blocks/api-doc/ajax/get.jag"
}
],
"filters":[
{
"name":"HttpHeaderSecurityFilter",
"class":"org.apache.catalina.filters.HttpHeaderSecurityFilter",
"params" : [{"name" : "hstsEnabled", "value" : "false"}]
},
{
"name": "ContentTypeBasedCachePreventionFilter",
"class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
"params" : [
{"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
{"name" : "filterAction", "value" : "enforce"},
{"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
]
}
],
"filterMappings":[
{
"name":"HttpHeaderSecurityFilter",
"url":"*"
},
{
"name":"ContentTypeBasedCachePreventionFilter",
"url":"*"
}
]
}

View File

@ -1,56 +0,0 @@
{
"theme" : {
"base" : "wso2"
},
"context" : "/api-store",
"showPublicStoreURL":true,
"showThemesMenu":false,
"tagWiseMode" :"false",
"tagGroupKey" :"-group",
"ssoConfiguration" : {
"enabled" : "true",
"issuer" : "API_STORE",
"identityProviderURL" : "https://localhost:9443/samlsso",
"keyStorePassword" : "",
"identityAlias" : "",
"responseSigningEnabled":"true",
"assertionSigningEnabled":"true",
"keyStoreName" :"",
"passive" : "true",
"signRequests" : "true",
"assertionEncryptionEnabled" : "false"
},
"oidcConfiguration" : {
"enabled" : "false",
"issuer" : "API_STORE",
"identityProviderURI" : "http://localhost:8080/openid-connect-server-webapp/",
"authorizationEndpointURI" : "http://localhost:8080/openid-connect-server-webapp/authorize",
"tokenEndpointURI" : "http://localhost:8080/openid-connect-server-webapp/token",
"userInfoURI" : "http://localhost:8080/openid-connect-server-webapp/userinfo",
"jwksURI" : "http://localhost:8080/openid-connect-server-webapp/jwk",
"clientConfiguration" : {
"clientId" : "client_am_store",
"clientSecret" : "secret",
"responseType" : "code",
"authorizationType" : "authorization_code",
"scope" : "phone email address openid profile",
"redirectURI" : "https://localhost:9443/api-store/jagg/jaggery_oidc_acs.jag",
"clientAlgorithm" : "RS256"
}
},
"mutualAuthConfiguration" : {
"enabled" : "false"
},
"forum" : {
"topicsPerPage" : "5",
"repliesPerPage" : "5",
"resourceIdentifier" : "common"
},
"reverseProxy" : {
"enabled" : false,
"host" : "sample.proxydomain.com",
"context":""
},
"mapExistingAuthApps" : false
}

View File

@ -1,96 +0,0 @@
{
"isCloud" : false,
"store": {
"types": ["fs"]
},
"gadgetGeneration" :{
"isCreateGadgetEnable": false,
"ignoreProviders": ["rt"]
},
"authentication": {
"activeMethod": "sso",
"methods": {
"sso": {
"attributes": {
"issuer": "portal",
"identityProviderURL": "%https.host%/samlsso",
"responseSigningEnabled": true,
"validateAssertionValidityPeriod": true,
"validateAudienceRestriction": true,
"assertionSigningEnabled": true,
"acs": "%https.host%/portal/acs",
"identityAlias": "wso2carbon",
"defaultNameIDPolicy": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
"useTenantKey": false,
"isPassive": false
}
},
"basic": {
"attributes": {}
}
}
},
"authorization": {
"activeMethod": "oauth",
"methods": {
"oauth": {
"attributes": {
"apimgt-gateway": true,
"oauthProvider": {
"appRegistration": {
"appType": "webapp",
"clientName": "portal",
"owner": "admin",
"password":"admin",
"dynamicClientAppRegistrationServiceURL": "https://localhost:9443/dynamic-client-web/register",
"apiManagerClientAppRegistrationServiceURL": "%https.host%/api-application-registration/register/tenants",
"grantType": "password refresh_token urn:ietf:params:oauth:grant-type:saml2-bearer urn:ietf:params:oauth:grant-type:jwt-bearer",
"tokenScope": "admin",
"callbackUrl": "%https.host%/portal",
"saasApp":true,
"samlGrantTypeName":"urn:ietf:params:oauth:grant-type:saml2-bearer"
},
"tokenServiceURL": "https://localhost:9443/oauth2/token"
},
"adminUser":"admin@carbon.super",
"adminUserTenantId":"-1234",
"adminRole":"admin",
"scopes" : [
"device:view"
]
}
}
}
},
"designers": [
"Internal/everyone"
],
"tenantPrefix": "/t",
"shareStore": false,
"theme": "basic",
"cacheTimeoutSeconds": "5",
"cacheSizeBytes": "1073741824",
"defaultDashboardRedirect": false,
"isCreateGadgetEnable": true,
"isSecureVaultEnabled" : false,
"assets": {
"gadget": {
"fileSizeLimit": 5
},
"layout": {
"fileSizeLimit": 1
}
},
"oauth": {
"username": "admin",
"password": "admin"
},
"host": {
"hostname": "localhost",
"port": "",
"protocol": ""
},
"queryParameters" : {
"passBetweenPages" : ["shared"]
}
}

View File

@ -1,195 +0,0 @@
{
"initScripts": [
"js/dashboard-deployer.js"
],
"welcomeFiles": [
"routers/tenant.jag"
],
"errorPages": {
"500": "/controllers/error-pages/error500.html",
"404": "/controllers/error-pages/error404.html",
"401": "/controllers/error-pages/error401.html",
"405": "/controllers/error-pages/error405.html",
"403": "/controllers/error-pages/error403.html",
"400": "/controllers/error-pages/error400.html"
},
"urlMappings": [
{
"url": "/login-controller",
"path": "/routers/tenant.jag"
},
{
"url": "/login",
"path": "/routers/tenant.jag"
},
{
"url": "/logout",
"path": "/routers/tenant.jag"
},
{
"url": "/t/*",
"path": "/routers/tenant.jag"
},
{
"url": "/apis/*",
"path": "/routers/tenant.jag"
},
{
"url": "/dashboards/*",
"path": "/routers/tenant.jag"
},
{
"url": "/gadget/*",
"path": "/routers/tenant.jag"
},
{
"url": "/layout/*",
"path": "/routers/tenant.jag"
},
{
"url": "/assets/*",
"path": "/routers/tenant.jag"
},
{
"url": "/create-dashboard",
"path": "/routers/tenant.jag"
},
{
"url": "/dashboard-settings/*",
"path": "/routers/tenant.jag"
},
{
"url": "/select-layout",
"path": "/routers/tenant.jag"
},
{
"url": "/create-gadget",
"path": "/routers/tenant.jag"
},
{
"url": "/upload-gadget",
"path": "/routers/tenant.jag"
},
{
"url": "/upload-layout",
"path": "/routers/tenant.jag"
},
{
"url": "/geojson/world/*",
"path": "/templates/geojson/world.json"
},
{
"url": "/geojson/europe/*",
"path": "/templates/geojson/europe.json"
},
{
"url": "/geojson/usa/*",
"path": "/templates/geojson/usa.json"
},
{
"url": "/geojson/countryInfo/*",
"path": "/templates/geojson/countryInfo.json"
},
{
"url": "/geojson/usaInfo/*",
"path": "/templates/geojson/usaInfo.json"
},
{
"url": "/acs",
"path": "/controllers/acs.jag"
},
{
"url": "/banners/*",
"path": "/routers/tenant.jag"
},
{
"url": "/gadgets/*",
"path": "/routers/tenant.jag"
},
{
"url": "/configs/designer.json",
"path": "/controllers/error-pages/error404.html"
}
],
"listeners": [
{
"class": "org.owasp.csrfguard.CsrfGuardServletContextListener"
},
{
"class": "org.owasp.csrfguard.CsrfGuardHttpSessionListener"
}
],
"servlets": [
{
"name": "JavaScriptServlet",
"class": "org.owasp.csrfguard.servlet.JavaScriptServlet"
}
],
"servletMappings": [
{
"name": "JavaScriptServlet",
"url": "/csrf.js"
}
],
"contextParams": [
{
"name": "Owasp.CsrfGuard.Config",
"value": "repository/conf/security/Owasp.CsrfGuard.dashboard.properties"
}
],
"filters": [
{
"name": "ContentTypeBasedCachePreventionFilter",
"class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
"params" : [
{"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
{"name" : "filterAction", "value" : "enforce"},
{"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
]
},
{
"name": "HttpHeaderSecurityFilter",
"class": "org.apache.catalina.filters.HttpHeaderSecurityFilter",
"params": [
{
"name": "hstsEnabled",
"value": "false"
},
{
"name": "antiClickJackingOption",
"value": "SAMEORIGIN"
}
]
},
{
"name": "TenantStoresFilter",
"class": "org.wso2.carbon.dashboard.store.filter.TenantStoreFilter"
},
{
"name" : "CSRFGuard",
"class" : "org.owasp.csrfguard.CsrfGuardFilter"
}
],
"filterMappings": [
{
"name": "HttpHeaderSecurityFilter",
"url": "*"
},
{
"name": "TenantStoresFilter",
"url": "/store/*"
},
{
"name": "TenantStoresFilter",
"url": "/temp/*"
},
{
"name" : "CSRFGuard",
"url" : "/*"
},
{
"name":"ContentTypeBasedCachePreventionFilter",
"url":"*"
}
]
}

View File

@ -1,598 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var utils = function () {
var log = new Log("/modules/oauth/token-handler-utils.js");
var configs = require('/configs/portal.js').config();
var constants = require("/modules/constants.js");
var carbon = require("carbon");
//noinspection JSUnresolvedVariable
var Base64 = Packages.org.apache.commons.codec.binary.Base64;
//noinspection JSUnresolvedVariable
var String = Packages.java.lang.String;
var publicMethods = {};
var privateMethods = {};
publicMethods["encode"] = function (payload) {
return String(Base64.encodeBase64(String(payload).getBytes()));
};
publicMethods["decode"] = function (payload) {
return String(Base64.decodeBase64(String(payload).getBytes()));
};
/**
* Check whether this application is oauth enable or not
* @returns boolean if oauth enable
*/
publicMethods["checkOAuthEnabled"] = function () {
if (constants.AUTHORIZATION_TYPE_OAUTH === configs["authorization"]["activeMethod"]) {
return true;
}
return false;
};
/**
* Set access token into xml http request header
* @param xhr xml http request
* @returns {*} xhr which has access token it's header
*/
publicMethods["setAccessToken"] = function (xhr, callback) {
var accessToken;
if (publicMethods.checkOAuthEnabled()) {
try {
accessToken = parse(session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL))["accessToken"];
xhr.setRequestHeader(constants.AUTHORIZATION_HEADER, constants.BEARER_PREFIX + accessToken);
} catch (exception) {
log.error("Access token hasn't been set yet, " + exception);
} finally {
callback(xhr);
}
}
callback(xhr);
};
/**
* Get access token of current logged user
* @param callBack response with access token
*/
publicMethods["getAccessToken"] = function (callBack) {
var accessToken = null;
if (publicMethods.checkOAuthEnabled()) {
try {
accessToken = parse(session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL))["accessToken"];
} catch (exception) {
log.error("Access token hasn't been set yet, " + exception);
} finally {
callBack(accessToken);
}
}
callBack(accessToken);
};
/**
* Create error message which adhere to xml http response object
* @param statusCode response status code
* @param status response status
* @param responseText response message
* @returns {{statusCode: *, status: *, responseText: *}}
*/
publicMethods["createXHRObject"] = function (statusCode, status, responseText) {
return {"statusCode": statusCode, "status": status, "responseText": responseText};
};
/**
* check whether user already logged to system before invoking any apis
* @param callBack
*/
publicMethods["isUserAuthorized"] = function (callBack) {
if (session.get("Loged") !== constants.LOGIN_MESSAGE) {
callBack(false);
} else {
callBack(true);
}
};
/**
* Get identity provider uir
* @returns {*}
*/
publicMethods["getIdPServerURL"] = function () {
return configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["tokenServiceURL"];
};
/**
* Get an Access token pair based on client secret
* @param encodedClientKeys {{clientId:"", clientSecret:""}}
* @param scope eg: PRODUCTION
* @param idPServer identity provider url
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenWithClientSecretType"] = function (encodedClientKeys, scope, idPServer) {
var xhr = new XMLHttpRequest();
var tokenEndpoint = idPServer;
xhr.open(constants.HTTP_POST, tokenEndpoint, false);
xhr.setRequestHeader(constants.CONTENT_TYPE_IDENTIFIER, constants.APPLICATION_X_WWW_FOR_URLENCODED);
xhr.setRequestHeader(constants.AUTHORIZATION_HEADER, constants.BASIC_PREFIX + encodedClientKeys);
xhr.send("grant_type=client_credentials&scope=" + scope);
var tokenPair = {};
if (xhr.status == constants.HTTP_ACCEPTED) {
var data = parse(xhr.responseText);
tokenPair.refreshToken = data.refresh_token;
tokenPair.accessToken = data.access_token;
} else if (xhr.status == constants.HTTP_USER_NOT_AUTHENTICATED) {
log.error("Error in obtaining token with client secret grant type, You are not authenticated yet");
return null;
} else {
log.error("Error in obtaining token with client secret grant type, This might be a problem with client meta " +
"data which required for client secret grant type");
return null;
}
return tokenPair;
};
/**
* This will create client id and client secret for a given application
* @param properties "callbackUrl": "",
* "clientName": "",
* "owner": "",
* "applicationType": "",
* "grantType": "",
* "saasApp" :"",
* "dynamicClientRegistrationEndPoint" : ""
*
* @returns {{clientId:*, clientSecret:*}}
*/
publicMethods["getDynamicClientAppCredentials"] = function (username) {
// setting up dynamic client application properties
var dcAppProperties = {
"applicationType": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["appType"],
"clientName": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["clientName"],
"owner": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["owner"],
"tokenScope": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["tokenScope"],
"grantType": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["grantType"],
"callbackUrl": configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["callbackUrl"],
"saasApp" : configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["saasApp"]
};
var tenantDomain = carbon.server.tenantDomain({username: username});
if (!tenantDomain) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client application credentials. Unable to obtain a valid tenant domain for provided username "+
username +"- getDynamicClientAppCredentials(x)");
return null;
} else {
var cachedTenantBasedClientAppCredentials = privateMethods.
getCachedTenantBasedClientAppCredentials(tenantDomain);
if (cachedTenantBasedClientAppCredentials) {
return cachedTenantBasedClientAppCredentials;
} else {
// calling dynamic client app registration service endpoint
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]
["dynamicClientAppRegistrationServiceURL"];
var requestPayload = dcAppProperties;
var token = publicMethods.encode(configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["appRegistration"]["owner"] + ":" + configs["authorization"]["methods"]["oauth"]["attributes"]
["oauthProvider"]["appRegistration"]["password"]);
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Basic "+ token);
xhr.send(stringify(requestPayload));
var dynamicClientAppCredentials = {};
if (xhr["status"] == 201 || xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var clientId = responsePayload["client_id"];
var clientSecret = responsePayload["client_secret"];
if(typeof clientId == "undefined"){
clientId = responsePayload["clientId"];
}
if(typeof clientSecret == "undefined"){
clientSecret = responsePayload["clientSecret"];
}
dynamicClientAppCredentials["clientId"] = clientId;
dynamicClientAppCredentials["clientSecret"] = clientSecret;
privateMethods.
setCachedTenantBasedClientAppCredentials(tenantDomain, dynamicClientAppCredentials);
} else if (xhr["status"] == 400) {
log.error("{/modules/oauth/token-handler-utils.js - getDynamicClientAppCredentials()} " +
"Bad request. Invalid data provided as dynamic client application properties.");
dynamicClientAppCredentials = null;
} else {
log.error("{/modules/oauth/token-handler-utils.js - getDynamicClientAppCredentials()} " +
"Error in retrieving dynamic client credentials.");
dynamicClientAppCredentials = null;
}
// returning dynamic client credentials
return dynamicClientAppCredentials;
}
}
};
/**
* If gateway is enable, apiManagerClientAppRegistrationServiceURL is used to create oauth application
* @param username username of current logged user
* @returns {{clientId:*, clientSecret:*}}
*/
publicMethods["getTenantBasedClientAppCredentials"] = function (username) {
if (!username) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client app credentials. No username " +
"as input - getTenantBasedClientAppCredentials(x)");
return null;
} else {
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var tenantDomain = carbon.server.tenantDomain({username: username});
if (!tenantDomain) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client application credentials. Unable to obtain a valid tenant domain for provided " +
"username - getTenantBasedClientAppCredentials(x, y)");
return null;
} else {
var cachedTenantBasedClientAppCredentials = privateMethods.
getCachedTenantBasedClientAppCredentials(tenantDomain);
if (cachedTenantBasedClientAppCredentials) {
return cachedTenantBasedClientAppCredentials;
} else {
var adminUsername = configs["authorization"]["methods"]["oauth"]["attributes"]["adminUser"];
var adminUserTenantId = configs["authorization"]["methods"]["oauth"]["attributes"]
["adminUserTenantId"];
//claims required for jwtAuthenticator.
var claims = {"http://wso2.org/claims/enduserTenantId": adminUserTenantId,
"http://wso2.org/claims/enduser": adminUsername};
var jwtToken = publicMethods.getJwtToken(adminUsername, claims);
// register a tenant based client app at API Manager
var applicationName = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["appRegistration"]["clientName"] + "_" + tenantDomain;
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["appRegistration"]["apiManagerClientAppRegistrationServiceURL"] +
"?tenantDomain=" + tenantDomain + "&applicationName=" + applicationName;
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-JWT-Assertion", "" + jwtToken);
xhr.send();
if ((xhr["status"] == 201 || xhr["status"] == 200) && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tenantBasedClientAppCredentials = {};
var clientId = responsePayload["client_id"];
var clientSecret = responsePayload["client_secret"];
if(typeof clientId == "undefined"){
clientId = responsePayload["clientId"];
}
if(typeof clientSecret == "undefined"){
clientSecret = responsePayload["clientSecret"];
}
tenantBasedClientAppCredentials["clientId"] = clientId;
tenantBasedClientAppCredentials["clientSecret"] = clientSecret;
privateMethods.
setCachedTenantBasedClientAppCredentials(tenantDomain, tenantBasedClientAppCredentials);
return tenantBasedClientAppCredentials;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
"based client application credentials from API " +
"Manager - getTenantBasedClientAppCredentials(x, y)");
return null;
}
}
}
}
};
/**
* Caching oauth application credentials
* @param tenantDomain tenant domain where application is been created
* @param clientAppCredentials {{clientId:*, clientSecret:*}}
*/
privateMethods["setCachedTenantBasedClientAppCredentials"] = function (tenantDomain, clientAppCredentials) {
var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS_PORTAL_APP"]);
if (!cachedTenantBasedClientAppCredentialsMap) {
cachedTenantBasedClientAppCredentialsMap = {};
cachedTenantBasedClientAppCredentialsMap[tenantDomain] = clientAppCredentials;
application.put(constants["CACHED_CREDENTIALS_PORTAL_APP"], cachedTenantBasedClientAppCredentialsMap);
} else if (!cachedTenantBasedClientAppCredentialsMap[tenantDomain]) {
cachedTenantBasedClientAppCredentialsMap[tenantDomain] = clientAppCredentials;
}
};
/**
* Get oauth application credentials from cache
* @param tenantDomain tenant domain where application is been created
* @returns {{clientId:*, clientSecret:*}}
*/
privateMethods["getCachedTenantBasedClientAppCredentials"] = function (tenantDomain) {
var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS_PORTAL_APP"]);
if (!cachedTenantBasedClientAppCredentialsMap ||
!cachedTenantBasedClientAppCredentialsMap[tenantDomain]) {
return null;
} else {
return cachedTenantBasedClientAppCredentialsMap[tenantDomain];
}
};
/**
* Get access token and refresh token using password grant type
* @param username username of the logged user
* @param password password of the logged user
* @param encodedClientAppCredentials {{clientId:*, clientSecret:*}}
* @param scopes scopes list
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenPairAndScopesByPasswordGrantType"] = function (username, password
, encodedClientAppCredentials, scopes) {
if (!username || !password || !encodedClientAppCredentials || !scopes) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token by password " +
"grant type. No username, password, encoded client app credentials or scopes are " +
"found - getTokenPairAndScopesByPasswordGrantType(a, b, c, d)");
return null;
} else {
// calling oauth provider token service endpoint
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["tokenServiceURL"];
var requestPayload = "grant_type=password&username=" +
username + "&password=" + password + "&scope=" + scopes;
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic " + encodedClientAppCredentials);
xhr.send(requestPayload);
if (xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tokenData = {};
tokenData["accessToken"] = responsePayload["access_token"];
tokenData["refreshToken"] = responsePayload["refresh_token"];
tokenData["scopes"] = responsePayload["scope"];
return tokenData;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token " +
"by password grant type - getTokenPairAndScopesByPasswordGrantType(a, b, c, d)");
return null;
}
}
};
/**
* Get access token and refresh token using SAML grant type
* @param assertion
* @param encodedClientAppCredentials
* @param scopes
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenPairAndScopesByJWTGrantType"] = function (username, encodedClientAppCredentials, scopes) {
if (!username || !encodedClientAppCredentials || !scopes) {
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving access token by jwt " +
"grant type. No assertion, encoded client app credentials or scopes are " +
"found - getTokenPairAndScopesByJWTGrantType(x, y, z)");
return null;
} else {
var JWTClientManagerServicePackagePath =
"org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService";
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var JWTClientManagerService = carbon.server.osgiService(JWTClientManagerServicePackagePath);
//noinspection JSUnresolvedFunction
var jwtClient = JWTClientManagerService.getJWTClient();
// returning access token by JWT grant type
var tokenInfo = jwtClient.getAccessToken(encodedClientAppCredentials,
username, scopes);
var tokenData = {};
tokenData["accessToken"] = tokenInfo.getAccessToken();
tokenData["refreshToken"] = tokenInfo.getRefreshToken();
tokenData["scopes"] = tokenInfo.getScopes();
return tokenData;
}
};
/**
* Get access token and refresh token using SAML grant type
* @param assertion
* @param encodedClientAppCredentials
* @param scopes
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getTokenPairAndScopesBySAMLGrantType"] = function (assertion, encodedClientAppCredentials, scopes) {
if (!assertion || !encodedClientAppCredentials || !scopes) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token by saml " +
"grant type. No assertion, encoded client app credentials or scopes are " +
"found - getTokenPairAndScopesBySAMLGrantType(x, y, z)");
return null;
} else {
var assertionXML = publicMethods.decode(assertion);
/*
TODO: make assertion extraction with proper parsing.
Since Jaggery XML parser seem to add formatting which causes signature verification to fail.
*/
var assertionStartMarker = "<saml2:Assertion";
var assertionEndMarker = "<\/saml2:Assertion>";
var assertionStartIndex = assertionXML.indexOf(assertionStartMarker);
var assertionEndIndex = assertionXML.indexOf(assertionEndMarker);
var extractedAssertion;
if (assertionStartIndex == -1 || assertionEndIndex == -1) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token by saml grant " +
"type. Issue in assertion format - getTokenPairAndScopesBySAMLGrantType(x, y, z)");
return null;
} else {
extractedAssertion = assertionXML.
substring(assertionStartIndex, assertionEndIndex) + assertionEndMarker;
var encodedAssertion = publicMethods.encode(extractedAssertion);
// calling oauth provider token service endpoint
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["tokenServiceURL"];
var requestPayload = "grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer&" +
"assertion=" + encodeURIComponent(encodedAssertion) + "&scope=" + scopes;
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic " + encodedClientAppCredentials);
xhr.send(requestPayload);
if (xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tokenData = {};
tokenData["accessToken"] = responsePayload["access_token"];
tokenData["refreshToken"] = responsePayload["refresh_token"];
tokenData["scopes"] = responsePayload["scope"];
return tokenData;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving access token " +
"by password grant type - getTokenPairAndScopesBySAMLGrantType(x, y, z)");
return null;
}
}
}
};
/**
* If access token is expired, try to refresh it using existing refresh token
* @param callback
*/
publicMethods["refreshAccessToken"] = function (callback) {
try {
if (publicMethods.checkOAuthEnabled()) {
var currentTokenPair = parse(session.get(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"]));
// currentTokenPair includes current access token as well as current refresh token
var encodedClientAppCredentials
= session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!currentTokenPair || !encodedClientAppCredentials) {
callback(false);
throw new Error("{/modules/oauth/token-handlers.js} Error in refreshing tokens. Either the " +
"token pair, encoded client app credentials or both input are not found under " +
"session context - refreshTokenPair()");
} else {
var newTokenPair = publicMethods.
getNewTokenPairByRefreshToken(currentTokenPair["refreshToken"], encodedClientAppCredentials);
if (!newTokenPair) {
log.error("{/app/modules/oauth/token-handlers.js} Error in refreshing token pair. " +
"Unable to update session context with new access token pair - refreshTokenPair()");
callback(false);
} else {
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(newTokenPair));
callback(true);
}
}
} else {
log.error("You have not enable dynamic client yet");
callback(false);
}
} catch (exception) {
callback(false);
throw "Error while refreshing existing access token, " + exception;
}
};
/**
* Get access token and refresh token using refresh token grant type
* @param refreshToken refresh token
* @param encodedClientAppCredentials {{clientId:*, clientSecret:*}}
* @param scopes
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getNewTokenPairByRefreshToken"] = function (refreshToken, encodedClientAppCredentials, scopes) {
if (!refreshToken || !encodedClientAppCredentials) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new access token " +
"by current refresh token. No refresh token or encoded client app credentials are " +
"found - getNewTokenPairByRefreshToken(x, y, z)");
return null;
} else {
var requestURL = configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]
["tokenServiceURL"];
var requestPayload = "grant_type=refresh_token&refresh_token=" + refreshToken;
if (scopes) {
requestPayload = requestPayload + "&scope=" + scopes;
}
var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Authorization", "Basic " + encodedClientAppCredentials);
xhr.send(requestPayload);
if (xhr["status"] == 200 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]);
var tokenPair = {};
tokenPair["accessToken"] = responsePayload["access_token"];
tokenPair["refreshToken"] = responsePayload["refresh_token"];
return tokenPair;
} else {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new access token by " +
"current refresh token - getNewTokenPairByRefreshToken(x, y, z)");
return null;
}
}
};
/**
* Get access token using JWT grant type
* @param clientAppCredentials {{clientId:*, clientSecret:*}}
* @returns {{accessToken: *, refreshToken: *}}
*/
publicMethods["getAccessTokenByJWTGrantType"] = function (clientAppCredentials) {
if (!clientAppCredentials) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new access token " +
"by current refresh token. No client app credentials are found " +
"as input - getAccessTokenByJWTGrantType(x)");
return null;
} else {
var JWTClientManagerServicePackagePath =
"org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService";
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var JWTClientManagerService = carbon.server.osgiService(JWTClientManagerServicePackagePath);
//noinspection JSUnresolvedFunction
var jwtClient = JWTClientManagerService.getJWTClient();
// returning access token by JWT grant type
return jwtClient.getAccessToken(clientAppCredentials["clientId"], clientAppCredentials["clientSecret"],
configs["authorization"]["methods"]["oauth"]["attributes"]["oauthProvider"]["appRegistration"]["owner"],
null)["accessToken"];
}
};
/**
* Get jwt token
* @param username username of logged user
* @param claims claims which are required
* @returns {"jwtToken"}
*/
publicMethods["getJwtToken"] = function (username, claims) {
if (!username) {
log.error("{/modules/oauth/token-handler-utils.js} Error in retrieving new jwt token");
return null;
} else {
var JWTClientManagerServicePackagePath =
"org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService";
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
var JWTClientManagerService = carbon.server.osgiService(JWTClientManagerServicePackagePath);
//noinspection JSUnresolvedFunction
var jwtClient = JWTClientManagerService.getJWTClient();
// returning access token by JWT grant type
if (claims) {
return jwtClient.getJwtToken(username, claims);
} else {
return jwtClient.getJwtToken(username);
}
}
};
return publicMethods;
}();

View File

@ -1,192 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* -----------------------------------------------------
* Following module includes handlers
* at Jaggery Layer for handling OAuth tokens.
* -----------------------------------------------------
*/
var handlers = function () {
var log = new Log("/modules/oauth/token-handlers.js");
var tokenUtil = require("/modules/oauth/token-handler-utils.js")["utils"];
var constants = require("/modules/constants.js");
var configs = require('/configs/portal.js').config();
var publicMethods = {};
var privateMethods = {};
/**
* Get an AccessToken pair based on username and password
* @param username username of the logged user
* @param password password of the logged user
*/
publicMethods["setupTokenPairByPasswordGrantType"] = function (username, password) {
if (!username || !password) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up access token pair by " +
"password grant type. Either username of logged in user, password or both are missing " +
"as input - setupTokenPairByPasswordGrantType(x, y)");
} else {
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
var encodedClientAppCredentials =
session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!encodedClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up access token pair by " +
"password grant type. Encoded client credentials are " +
"missing - setupTokenPairByPasswordGrantType(x, y)");
} else {
var tokenData;
// tokenPair will include current access token as well as current refresh token
var arrayOfScopes = configs["authorization"]["methods"]["oauth"]["attributes"]["scopes"];
var stringOfScopes = "";
arrayOfScopes.forEach(function (entry) {
stringOfScopes += entry + " ";
});
tokenData = tokenUtil.
getTokenPairAndScopesByPasswordGrantType(username,
encodeURIComponent(password), encodedClientAppCredentials, stringOfScopes);
if (!tokenData) {
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up " +
"token pair by password grant type. Error in token " +
"retrieval - setupTokenPairByPasswordGrantType(x, y)");
} else {
var tokenPair = {};
tokenPair["accessToken"] = tokenData["accessToken"];
tokenPair["refreshToken"] = tokenData["refreshToken"];
// setting up token pair into session context as a string
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(tokenPair));
var scopes = tokenData.scopes.split(" ");
// adding allowed scopes to the session
session.put(constants["ALLOWED_SCOPES"], scopes);
}
}
}
};
/**
* Get an AccessToken pair based on SAML assertion
* @param samlToken SAML assertion
* @param username {{clientId:"", clientSecret:""}}
*/
publicMethods["setupTokenPairBySamlGrantType"] = function (username, samlToken) {
if (!username || !samlToken) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up access token pair by " +
"saml grant type. Either username of logged in user, samlToken or both are missing " +
"as input - setupTokenPairBySamlGrantType(x, y)");
} else {
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
var encodedClientAppCredentials =
session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!encodedClientAppCredentials) {
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair " +
"by saml grant type. Encoded client credentials are " +
"missing - setupTokenPairBySamlGrantType(x, y)");
} else {
var tokenData;
// accessTokenPair will include current access token as well as current refresh token
tokenData = tokenUtil.
getTokenPairAndScopesByJWTGrantType(username, encodedClientAppCredentials, "PRODUCTION");
if (!tokenData) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up token " +
"pair by saml grant type. Error in token " +
"retrieval - setupTokenPairBySamlGrantType(x, y)");
} else {
var tokenPair = {};
tokenPair["accessToken"] = tokenData["accessToken"];
tokenPair["refreshToken"] = tokenData["refreshToken"];
// setting up access token pair into session context as a string
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(tokenPair));
var scopes = tokenData.scopes.split(" ");
// adding allowed scopes to the session
session.put(constants["ALLOWED_SCOPES"], scopes);
}
}
}
};
/**
* Set access token and refresh token using refresh token grant type
*/
publicMethods["refreshTokenPair"] = function () {
var currentTokenPair = parse(session.get(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"]));
// currentTokenPair includes current access token as well as current refresh token
var encodedClientAppCredentials
= session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"]);
if (!currentTokenPair || !encodedClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Error in refreshing tokens. Either the " +
"token pair, encoded client app credentials or both input are not found under " +
"session context - refreshTokenPair()");
} else {
var newTokenPair = tokenUtil.
getNewTokenPairByRefreshToken(currentTokenPair["refreshToken"], encodedClientAppCredentials);
if (!newTokenPair) {
log.error("{/app/modules/oauth/token-handlers.js} Error in refreshing token pair. " +
"Unable to update session context with new access token pair - refreshTokenPair()");
} else {
session.put(constants["ACCESS_TOKEN_PAIR_IDENTIFIER_FOR_PORTAL"], stringify(newTokenPair));
}
}
};
/**
* If gateway is enable, apiManagerClientAppRegistrationServiceURL is used to create an oauth application or
* else DCR endpoint is used to create an oauth application
* @param username username of current logged user
*/
privateMethods["setUpEncodedTenantBasedClientAppCredentials"] = function (username) {
if (!username) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up encoded tenant based " +
"client credentials to session context. No username of logged in user is found as " +
"input - setUpEncodedTenantBasedClientAppCredentials(x)");
} else {
if (configs["authorization"]["methods"]["oauth"]["attributes"]["apimgt-gateway"]) {
var tenantBasedClientAppCredentials = tokenUtil.getTenantBasedClientAppCredentials(username);
if (!tenantBasedClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up encoded tenant " +
"based client credentials to session context as the server is unable " +
"to obtain such credentials - setUpEncodedTenantBasedClientAppCredentials(x)");
} else {
var encodedTenantBasedClientAppCredentials =
tokenUtil.encode(tenantBasedClientAppCredentials["clientId"] + ":" +
tenantBasedClientAppCredentials["clientSecret"]);
// setting up encoded tenant based client credentials to session context.
session.put(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"],
encodedTenantBasedClientAppCredentials);
}
} else {
var dynamicClientAppCredentials = tokenUtil.getDynamicClientAppCredentials(username);
if (!dynamicClientAppCredentials) {
throw new Error("{/modules/oauth/token-handlers.js} Could not set up encoded tenant based " +
"client credentials to session context as the server is unable to obtain " +
"dynamic client credentials - setUpEncodedTenantBasedClientAppCredentials(x)");
}
var encodedTenantBasedClientAppCredentials =
tokenUtil.encode(dynamicClientAppCredentials["clientId"] + ":" +
dynamicClientAppCredentials["clientSecret"]);
// setting up encoded tenant based client credentials to session context.
session.put(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS_PORTAL_APP"],
encodedTenantBasedClientAppCredentials);
}
}
};
return publicMethods;
}();

View File

@ -1,239 +0,0 @@
body.dashboard {
background: #fff;
}
.dropdown-menu {
border: 1px solid #ccc;
}
.dashboard .btn-default.active,
.dashboard .btn-default.active:focus {
background-color: #29313E;
color: #fff;
}
.dashboard .btn-default.active:hover {
background-color: #53627B;
color: #fff;
}
.dashboard .page-header {
background: #29313e;
min-height: 50px;
padding: 0;
color: #ebeced;
}
.dashboard .page-header .page-title > h1 {
padding: 15px 15px 0 15px;
font-weight: 100;
text-transform: uppercase;
font-size: 18px;
}
.dashboard .page-header .page-title > h1 > .icon {
font-size: 24px;
margin-top: -5px;
margin-right: 5px;
}
.dashboard .page-header .navbar-header {
margin-right: 15px;
margin-left: 15px;
float: none;
}
@media (min-width: 768px) {
.dashboard .page-header .navbar-collapse.collapse {
display: none !important;
}
.page-header .container-fluid {
padding: 0 15px;
}
.navbar-nav > li > a {
padding: 10px 0;
}
}
.nav > li > a > .icon {
margin-right: 8px;
}
.nav > li > a > .badge {
position: absolute;
top: 5px;
right: 5px;
background: #ff124a;
}
.dashboard .page-header .auth {
margin-bottom: 0;
padding: 6px 0;
}
.dashboard .page-content {
overflow: inherit;
}
.dashboard .footer {
background: #0d1219;
}
.dashboard .gadget-wrapper {
border: 1px dashed #e4e4e4;
}
.dashboard .gadget .gadget-heading {
background: transparent;
border-bottom: none;
color: #29313e;
}
.gadget .gadget-heading > .gadget-title {
font-size: 20px;
}
.gadget .gadget-heading > .gadget-actions button {
border: none;
}
.sidebar-wrapper hr {
border-top-color: #ebeced;
}
.sidebar-toggle-button {
float: left;
height: 50px;
line-height: 50px;
font-size: 18px;
background: #438cad;
color: #ffffff;
margin-left: -15px;
}
.sidebar-toggle-button > .icon {
line-height: 48px;
}
.sidebar-nav {
background: #29313e;
color: #e3e5e6;
}
.nav.pages {
text-transform: uppercase;
}
.nav.pages > li {
line-height: 20px;
}
.nav > li {
text-indent: 0;
line-height: 10px;
}
.nav > li > a {
border-radius: 0;
color: #e3e5e6;
background: transparent;
}
.collapse-nav-sub > li > a {
padding: 4px 10px;
font-size: 21px;
}
.collapse-nav-sub > li > a > .icon {
margin: 0;
}
.page-header .fw-inverse {
color: #29313e;
}
.nav li:hover > a,
.nav li.open > a,
.nav li.open > a:focus,
.nav li.open > a:hover {
background: #1a2332;
}
.nav > li > a:focus {
background: transparent;
}
.nav.pages > li.active a {
background: #121822;
border-left: 5px solid #438cad;
}
.navbar-collapse {
padding: 15px;
background: #1A2331;
}
.navbar-collapse li:hover > a {
background: #29313E;
}
.sidebar-nav .user {
text-align: center;
margin: 20px auto;
}
.sidebar-nav .user > .user-image {
margin-bottom: 10px;
}
.sidebar-nav .user > .user-image > .default .icon {
font-size: 25px;
}
.sidebar-nav .user > .user-image > .default .icon .fw-inverse,
.sidebar-nav .user > .user-image > .default .icon .fa-inverse {
color: #29313e;
}
.widget .gadget-wrapper {
border: none;
}
.widget .ues-component-heading {
display: none !important;
height: 0;
}
.widget .ues-component {
height: auto;
}
.widget.form-control-widget {
height: 35px !important;
}
.dropdown-menu.arrow.arrow-top-right:before {
right: 20px;
}
.dropdown-menu.arrow:before,
.dropdown-menu.arrow.arrow-top-left:before {
top: -10px;
border-right: 10px solid transparent;
border-bottom: 10px solid #e4e4e4;
border-left: 10px solid transparent;
}
.dropdown-menu.alerts {
min-width: 400px;
max-width: 100%;
line-height: 1.2;
}
ul.sidebar-messages > li:first-child {
margin-top: 0;
}
ul.sidebar-messages > li:last-child {
margin-bottom: 0;
}

View File

@ -1,12 +0,0 @@
var vizgSettings = {
colorScale: colorbrewer.RdYlBu[4].reverse(),
colors: {
green:"#5FCE9B",
blue:"#438CAD",
red:"#E87352",
yellow:"#EECA5A",
purple:"#B6688F",
grey:"434343",
brown:"#C59787"
}
}

View File

@ -1,303 +0,0 @@
// This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/).
// JavaScript specs as packaged in the D3 library (d3js.org). Please see license at http://colorbrewer.org/export/LICENSE.txt
var colorbrewer = {YlGn: {
3: ["#f7fcb9","#addd8e","#31a354"],
4: ["#ffffcc","#c2e699","#78c679","#238443"],
5: ["#ffffcc","#c2e699","#78c679","#31a354","#006837"],
6: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#31a354","#006837"],
7: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
8: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
9: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"]
},YlGnBu: {
3: ["#edf8b1","#7fcdbb","#2c7fb8"],
4: ["#ffffcc","#a1dab4","#41b6c4","#225ea8"],
5: ["#ffffcc","#a1dab4","#41b6c4","#2c7fb8","#253494"],
6: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#2c7fb8","#253494"],
7: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
8: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
9: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]
},GnBu: {
3: ["#e0f3db","#a8ddb5","#43a2ca"],
4: ["#f0f9e8","#bae4bc","#7bccc4","#2b8cbe"],
5: ["#f0f9e8","#bae4bc","#7bccc4","#43a2ca","#0868ac"],
6: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#43a2ca","#0868ac"],
7: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
8: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
9: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]
},BuGn: {
3: ["#e5f5f9","#99d8c9","#2ca25f"],
4: ["#edf8fb","#b2e2e2","#66c2a4","#238b45"],
5: ["#edf8fb","#b2e2e2","#66c2a4","#2ca25f","#006d2c"],
6: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#2ca25f","#006d2c"],
7: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
8: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
9: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"]
},PuBuGn: {
3: ["#ece2f0","#a6bddb","#1c9099"],
4: ["#f6eff7","#bdc9e1","#67a9cf","#02818a"],
5: ["#f6eff7","#bdc9e1","#67a9cf","#1c9099","#016c59"],
6: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#1c9099","#016c59"],
7: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
8: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
9: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"]
},PuBu: {
3: ["#ece7f2","#a6bddb","#2b8cbe"],
4: ["#f1eef6","#bdc9e1","#74a9cf","#0570b0"],
5: ["#f1eef6","#bdc9e1","#74a9cf","#2b8cbe","#045a8d"],
6: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#2b8cbe","#045a8d"],
7: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
8: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
9: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"]
},BuPu: {
3: ["#e0ecf4","#9ebcda","#8856a7"],
4: ["#edf8fb","#b3cde3","#8c96c6","#88419d"],
5: ["#edf8fb","#b3cde3","#8c96c6","#8856a7","#810f7c"],
6: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8856a7","#810f7c"],
7: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
8: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
9: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"]
},RdPu: {
3: ["#fde0dd","#fa9fb5","#c51b8a"],
4: ["#feebe2","#fbb4b9","#f768a1","#ae017e"],
5: ["#feebe2","#fbb4b9","#f768a1","#c51b8a","#7a0177"],
6: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#c51b8a","#7a0177"],
7: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
8: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
9: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"]
},PuRd: {
3: ["#e7e1ef","#c994c7","#dd1c77"],
4: ["#f1eef6","#d7b5d8","#df65b0","#ce1256"],
5: ["#f1eef6","#d7b5d8","#df65b0","#dd1c77","#980043"],
6: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#dd1c77","#980043"],
7: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
8: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
9: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"]
},OrRd: {
3: ["#fee8c8","#fdbb84","#e34a33"],
4: ["#fef0d9","#fdcc8a","#fc8d59","#d7301f"],
5: ["#fef0d9","#fdcc8a","#fc8d59","#e34a33","#b30000"],
6: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#e34a33","#b30000"],
7: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
8: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
9: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"]
},YlOrRd: {
3: ["#ffeda0","#feb24c","#f03b20"],
4: ["#ffffb2","#fecc5c","#fd8d3c","#e31a1c"],
5: ["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
6: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#f03b20","#bd0026"],
7: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
8: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
9: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]
},YlOrBr: {
3: ["#fff7bc","#fec44f","#d95f0e"],
4: ["#ffffd4","#fed98e","#fe9929","#cc4c02"],
5: ["#ffffd4","#fed98e","#fe9929","#d95f0e","#993404"],
6: ["#ffffd4","#fee391","#fec44f","#fe9929","#d95f0e","#993404"],
7: ["#ffffd4","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
8: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
9: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"]
},Purples: {
3: ["#efedf5","#bcbddc","#756bb1"],
4: ["#f2f0f7","#cbc9e2","#9e9ac8","#6a51a3"],
5: ["#f2f0f7","#cbc9e2","#9e9ac8","#756bb1","#54278f"],
6: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#756bb1","#54278f"],
7: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
8: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
9: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]
},Blues: {
3: ["#deebf7","#9ecae1","#3182bd"],
4: ["#eff3ff","#bdd7e7","#6baed6","#2171b5"],
5: ["#eff3ff","#bdd7e7","#6baed6","#3182bd","#08519c"],
6: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#3182bd","#08519c"],
7: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
8: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
9: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]
},Greens: {
3: ["#e5f5e0","#a1d99b","#31a354"],
4: ["#edf8e9","#bae4b3","#74c476","#238b45"],
5: ["#edf8e9","#bae4b3","#74c476","#31a354","#006d2c"],
6: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#31a354","#006d2c"],
7: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
8: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
9: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]
},Oranges: {
3: ["#fee6ce","#fdae6b","#e6550d"],
4: ["#feedde","#fdbe85","#fd8d3c","#d94701"],
5: ["#feedde","#fdbe85","#fd8d3c","#e6550d","#a63603"],
6: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#e6550d","#a63603"],
7: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
8: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
9: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]
},Reds: {
3: ["#fee0d2","#fc9272","#de2d26"],
4: ["#fee5d9","#fcae91","#fb6a4a","#cb181d"],
5: ["#fee5d9","#fcae91","#fb6a4a","#de2d26","#a50f15"],
6: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#de2d26","#a50f15"],
7: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
8: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
9: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]
},Greys: {
3: ["#f0f0f0","#bdbdbd","#636363"],
4: ["#f7f7f7","#cccccc","#969696","#525252"],
5: ["#f7f7f7","#cccccc","#969696","#636363","#252525"],
6: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#636363","#252525"],
7: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
8: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
9: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]
},PuOr: {
3: ["#f1a340","#f7f7f7","#998ec3"],
4: ["#e66101","#fdb863","#b2abd2","#5e3c99"],
5: ["#e66101","#fdb863","#f7f7f7","#b2abd2","#5e3c99"],
6: ["#b35806","#f1a340","#fee0b6","#d8daeb","#998ec3","#542788"],
7: ["#b35806","#f1a340","#fee0b6","#f7f7f7","#d8daeb","#998ec3","#542788"],
8: ["#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788"],
9: ["#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788"],
10: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],
11: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"]
},BrBG: {
3: ["#d8b365","#f5f5f5","#5ab4ac"],
4: ["#a6611a","#dfc27d","#80cdc1","#018571"],
5: ["#a6611a","#dfc27d","#f5f5f5","#80cdc1","#018571"],
6: ["#8c510a","#d8b365","#f6e8c3","#c7eae5","#5ab4ac","#01665e"],
7: ["#8c510a","#d8b365","#f6e8c3","#f5f5f5","#c7eae5","#5ab4ac","#01665e"],
8: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e"],
9: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"],
10: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],
11: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]
},PRGn: {
3: ["#af8dc3","#f7f7f7","#7fbf7b"],
4: ["#7b3294","#c2a5cf","#a6dba0","#008837"],
5: ["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],
6: ["#762a83","#af8dc3","#e7d4e8","#d9f0d3","#7fbf7b","#1b7837"],
7: ["#762a83","#af8dc3","#e7d4e8","#f7f7f7","#d9f0d3","#7fbf7b","#1b7837"],
8: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
9: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
10: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],
11: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]
},PiYG: {
3: ["#e9a3c9","#f7f7f7","#a1d76a"],
4: ["#d01c8b","#f1b6da","#b8e186","#4dac26"],
5: ["#d01c8b","#f1b6da","#f7f7f7","#b8e186","#4dac26"],
6: ["#c51b7d","#e9a3c9","#fde0ef","#e6f5d0","#a1d76a","#4d9221"],
7: ["#c51b7d","#e9a3c9","#fde0ef","#f7f7f7","#e6f5d0","#a1d76a","#4d9221"],
8: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
9: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
10: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],
11: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]
},RdBu: {
3: ["#ef8a62","#f7f7f7","#67a9cf"],
4: ["#ca0020","#f4a582","#92c5de","#0571b0"],
5: ["#ca0020","#f4a582","#f7f7f7","#92c5de","#0571b0"],
6: ["#b2182b","#ef8a62","#fddbc7","#d1e5f0","#67a9cf","#2166ac"],
7: ["#b2182b","#ef8a62","#fddbc7","#f7f7f7","#d1e5f0","#67a9cf","#2166ac"],
8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],
11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]
},RdGy: {
3: ["#ef8a62","#ffffff","#999999"],
4: ["#ca0020","#f4a582","#bababa","#404040"],
5: ["#ca0020","#f4a582","#ffffff","#bababa","#404040"],
6: ["#b2182b","#ef8a62","#fddbc7","#e0e0e0","#999999","#4d4d4d"],
7: ["#b2182b","#ef8a62","#fddbc7","#ffffff","#e0e0e0","#999999","#4d4d4d"],
8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d"],
9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d"],
10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],
11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"]
},RdYlBu: {
3: ["#fc8d59","#ffffbf","#91bfdb"],
4: ["#d7191c","#fdae61","#abd9e9","#2c7bb6"],
5: ["#d7191c","#fdae61","#ffffbf","#abd9e9","#2c7bb6"],
6: ["#d73027","#fc8d59","#fee090","#e0f3f8","#91bfdb","#4575b4"],
7: ["#d73027","#fc8d59","#fee090","#ffffbf","#e0f3f8","#91bfdb","#4575b4"],
8: ["#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4"],
9: ["#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4"],
10: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],
11: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]
},Spectral: {
3: ["#fc8d59","#ffffbf","#99d594"],
4: ["#d7191c","#fdae61","#abdda4","#2b83ba"],
5: ["#d7191c","#fdae61","#ffffbf","#abdda4","#2b83ba"],
6: ["#d53e4f","#fc8d59","#fee08b","#e6f598","#99d594","#3288bd"],
7: ["#d53e4f","#fc8d59","#fee08b","#ffffbf","#e6f598","#99d594","#3288bd"],
8: ["#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd"],
9: ["#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd"],
10: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],
11: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]
},RdYlGn: {
3: ["#fc8d59","#ffffbf","#91cf60"],
4: ["#d7191c","#fdae61","#a6d96a","#1a9641"],
5: ["#d7191c","#fdae61","#ffffbf","#a6d96a","#1a9641"],
6: ["#d73027","#fc8d59","#fee08b","#d9ef8b","#91cf60","#1a9850"],
7: ["#d73027","#fc8d59","#fee08b","#ffffbf","#d9ef8b","#91cf60","#1a9850"],
8: ["#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
9: ["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
10: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],
11: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]
},Accent: {
3: ["#7fc97f","#beaed4","#fdc086"],
4: ["#7fc97f","#beaed4","#fdc086","#ffff99"],
5: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0"],
6: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"],
7: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17"],
8: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"]
},Dark2: {
3: ["#1b9e77","#d95f02","#7570b3"],
4: ["#1b9e77","#d95f02","#7570b3","#e7298a"],
5: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e"],
6: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02"],
7: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],
8: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"]
},Paired: {
3: ["#a6cee3","#1f78b4","#b2df8a"],
4: ["#a6cee3","#1f78b4","#b2df8a","#33a02c"],
5: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99"],
6: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c"],
7: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f"],
8: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],
9: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6"],
10: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a"],
11: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99"],
12: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"]
},Pastel1: {
3: ["#fbb4ae","#b3cde3","#ccebc5"],
4: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4"],
5: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6"],
6: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc"],
7: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd"],
8: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],
9: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]
},Pastel2: {
3: ["#b3e2cd","#fdcdac","#cbd5e8"],
4: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4"],
5: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9"],
6: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae"],
7: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],
8: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"]
},Set1: {
3: ["#e41a1c","#377eb8","#4daf4a"],
4: ["#e41a1c","#377eb8","#4daf4a","#984ea3"],
5: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"],
6: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33"],
7: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628"],
8: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],
9: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"]
},Set2: {
3: ["#66c2a5","#fc8d62","#8da0cb"],
4: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3"],
5: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854"],
6: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"],
7: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494"],
8: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"]
},Set3: {
3: ["#8dd3c7","#ffffb3","#bebada"],
4: ["#8dd3c7","#ffffb3","#bebada","#fb8072"],
5: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3"],
6: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462"],
7: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69"],
8: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"],
9: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9"],
10: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],
11: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5"],
12: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]
}};

View File

@ -1,447 +0,0 @@
<!--
~ Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<%
// i18n
var i18n = require("i18n");
i18n.init(request, utils.getLocaleResourcePath());
// If the pageId is null, render the landing page
pageId = pageId || dashboard.landing;
var usr = require('/modules/user.js'),
user = usr.current(),
isAnonView = request.getParameter('isAnonView');
// Get the anon view
if (!user) {
if (isAnonView) {
response.sendRedirect(request.getRequestURL());
}
isAnonView = true;
} else {
isAnonView = JSON.parse(isAnonView);
if((user.domain != urlDomain && urlDomain) ||
(dashboard.isanon && !utils.allowed(user.roles, dashboard.permissions.editors) && !utils.allowed(user.roles, dashboard.permissions.viewers))) {
isAnonView = true;
}
}
// Get the current page
var pages = dashboard.pages,
page;
pages.forEach(function(p) {
if (p.id == pageId) {
page = p;
}
});
%>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><%= i18n.localize("dashboard.server.label")%></title>
<!-- Favicon -->
<link rel="shortcut icon" href="<%=urlPrefix%>libs/theme-wso2_1.0/images/favicon.png" />
<!-- Bootstrap CSS -->
<link href="<%=urlPrefix%>libs/bootstrap_3.3.5/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<!-- Font WSO2 CSS -->
<link href="<%=urlPrefix%>libs/font-wso2_1.0.0/css/font-wso2.min.css" rel="stylesheet" type="text/css" />
<!-- Jquery Nanoscroller CSS -->
<link href="<%=urlPrefix%>libs/nanoscroller_0.8.7/nanoscroller.css" rel="stylesheet" type="text/css" />
<!-- Theme WSO2 CSS -->
<link href="<%=urlPrefix%>libs/theme-wso2_1.0/css/theme-wso2.css" rel="stylesheet" type="text/css" />
<!-- Custom CSS -->
<link href="<%=urlPrefix%>css/custom.css" rel="stylesheet" type="text/css" />
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="<%=urlPrefix%>libs/html5shiv_3.7.2/html5shiv.min.js"></script>
<script src="<%=urlPrefix%>libs/respond_1.4.2/respond.min.js"></script>
<![endif]-->
<!-- JQuery UI -->
<link rel="stylesheet" type="text/css" href="<%=urlPrefix%>libs/jquery-ui-1.11.4/jquery-ui.min.css" />
<link rel="stylesheet" href="<%=urlPrefix%>css/dashboard.css" />
<!-- Common CSS -->
<link rel="stylesheet" type="text/css" href="<%=urlPrefix%>css/common.css" />
<!-- Custom theme overrides -->
<link rel="stylesheet" href="<%=urlPrefix%><%=utils.dashboardStyles(dashboard.theme)%>">
</head>
<body class="dashboard lang_<%=request.getLocale()%>">
<!-- .left-sidebar -->
<div class="sidebar-wrapper sidebar-nav toggled hidden-xs" id="left-sidebar" data-side="left" data-width="260" style="width:260px">
<div class="nano">
<div class="nano-content">
<div class="user">
<div class="user-image">
<span class="default">
<span class="icon fw fw-stack">
<i class="fw fw-circle fw-stack-2x"></i>
<i class="fw fw-user fw-stack-1x fw-inverse"></i>
</span>
</span>
</div>
<div class="user-name"><%= user ? user.username : "anon" %></div>
</div>
<ul class="nav nav-pills nav-stacked pages">
<% if (pages.length > 1) {
// render links
pages.forEach(function (p) {
if (isAnonView || !user) {
if (p.isanon) {
// Anonymous viewing. So render only anonymous pages links.
renderPageLink(p);
}
} else {
renderPageLink(p);
}
});
}
function renderPageLink(p) {
var queryString = isAnonView ? '?isAnonView=true' : '';
%>
<li class="<%= (p.id === pageId) ? 'active': '' %>"><a href="<%=dbRoot%><%=p.id%><%=queryString%>"><%=encodeHtml(p.title)%></a></li>
<% } %>
</ul>
<hr>
<ul class="nav nav-pills nav-stacked">
<% if (user) { %>
<% if (!isAnonView && (urlDomain == user.domain || (user.domain == superDomain && (!urlDomain || urlDomain == superDomain)))) { %>
<% if (user.isEditor) { %>
<li><a href="<%=dbRoot%>?editor=true"><i class="icon fw fw-settings ues-copy" title="<%= i18n.localize("edit.button")%>"></i>Dashboard Settings</a></li>
<% } else { %>
<li><a href="<%=dbRoot%>?custom=true"><i class="icon fw fw-settings ues-copy" title="<%= i18n.localize("personalize")%>"></i>Customize Dashboard</a></li>
<% } %>
<% } %>
<li><a href="<%=urlPrefix%>logout?destination=<%=dest%>"><i class="icon fw fw-sign-out"></i><%= i18n.localize("logout.label")%></a></li>
<% } else { %>
<li><a href="<%=urlPrefix%>login-controller?destination=<%=dest%>"><i class="icon fw fw-sign-in"></i><%= i18n.localize("login.label")%></a></li>
<% } %>
</ul>
</div>
</div>
</div>
<!-- #page-content-wrapper -->
<div class="page-content-wrapper remove-padding-xs" style="padding-left:260px;">
<div class="nano">
<div class="nano-content">
<div class="page-header">
<div class="container-fluid">
<div class="navbar-header">
<a class="sidebar-toggle-button hidden-xs" data-toggle="sidebar" data-target="#left-sidebar" data-container=".page-content-wrapper" data-container-divide="true" aria-expanded="true" rel="sub-nav">
<span class="icon fw-stack">
<i class="fw fw-menu fw-stack-1x toggle-icon-left"></i>
</span>
</a>
<a class="sidebar-toggle-button visible-xs" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="icon fw-stack">
<i class="fw fw-menu fw-stack-1x toggle-icon-up"></i>
</span>
</a>
<div class="page-title pull-left text-center-xs">
<h1 class="text-center-xs"><i class="icon fw fw-wso2-logo"></i><%=encodeHtml(dashboard.title)%></h1>
</div>
<div class="pull-right auth visible-xs">
<span class="add-padding-left-3x"><%= user ? user.username : "anon" %></span>
<span class="icon fw-stack fw-lg">
<i class="fw fw-circle fw-stack-2x"></i>
<i class="fw fw-user fw-stack-1x fw-inverse"></i>
</span>
</div>
<ul class="nav collapse-nav-sub pull-right hidden">
<li class="visible-inline-block">
<a data-toggle="dropdown">
<span class="icon fw-stack">
<i class="fw fw-notification fw-stack-1x"></i>
</span>
<span class="badge">4</span>
</a>
<div class="dropdown-menu dropdown-menu-right arrow alerts arrow-top-right dark add-margin-top-2x" role="menu">
<ul class="sidebar-messages">
<li class="message message-success">
<h4><i class="icon fw fw-success"></i>Minor Information Message</h4>
<p>Alerts don't have default classes, only base and modifier classes.</p>
</li>
<li class="message message-info">
<h4><i class="icon fw fw-info"></i>Minor Information Message</h4>
<p>Alerts don't have default classes, only base and modifier classes.</p>
</li>
<li class="message message-warning">
<h4><i class="icon fw fw-warning"></i>Major Information Message</h4>
<p>Alerts don't have default classes, only base and modifier classes.</p>
</li>
<li class="message message-danger">
<h4><i class="icon fw fw-error"></i>Critical Information Message</h4>
<p>Alerts don't have default classes, only base and modifier classes.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div id="navbar" class="navbar-collapse collapse" aria-expanded="false">
<ul class="nav navbar-nav pages">
<% if (pages.length > 1) {
// render links
pages.forEach(function (p) {
if (isAnonView || !user) {
if (p.isanon) {
// Anonymous viewing. So render only anonymous pages links.
renderPageLink(p);
}
} else {
renderPageLink(p);
}
});
}
function renderPageLink(p) {
var queryString = isAnonView ? '?isAnonView=true' : '';
%>
<li class="<%= (p.id === pageId) ? 'active': '' %>"><a href="<%=dbRoot%><%=p.id%><%=queryString%>"><%=encodeHtml(p.title)%></a></li>
<% } %>
</ul>
<hr>
<ul class="nav nav-pills nav-stacked">
<% if (user) { %>
<% if (!isAnonView && (urlDomain == user.domain || (user.domain == superDomain && (!urlDomain || urlDomain == superDomain)))) { %>
<% if (user.isEditor) { %>
<li><a href="<%=dbRoot%>?editor=true"><i class="icon fw fw-settings ues-copy" title="<%= i18n.localize("edit.button")%>"></i>Dashboard Settings</a></li>
<% } else { %>
<li><a href="<%=dbRoot%>?custom=true"><i class="icon fw fw-settings ues-copy" title="<%= i18n.localize("personalize")%>"></i>Customize Dashboard</a></li>
<% } %>
<% } %>
<li><a href="<%=urlPrefix%>logout?destination=<%=dest%>"><i class="icon fw fw-sign-out"></i><%= i18n.localize("logout.label")%></a></li>
<% } else { %>
<li><a href="<%=urlPrefix%>login-controller?destination=<%=dest%>"><i class="icon fw fw-sign-in"></i><%= i18n.localize("login.label")%></a></li>
<% } %>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
<!-- page content -->
<div class="container-fluid body-wrapper">
<div class="page-content">
<!-- Components grid -->
<div class="ues-components-grid gadgets-grid">
<%=renderEngine.getDashboardContent(pageId || dashboard.landing, isAnonView)%>
</div>
</div>
</div>
</div>
</div>
</div><!-- /#page-content-wrapper -->
<!--Footer -->
<footer class="footer">
<div class="container-fluid">
<p>WSO2 Dashboard Server 2.0.0 | &copy; <script>document.write(new Date().getFullYear());</script> <a href="http://wso2.com/" target="_blank"><i class="icon fw fw-wso2"></i> Inc</a>.</p>
</div>
</footer>
<!-- Jquery/Jquery UI JS -->
<script src="<%=urlPrefix%>libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
<script src="<%=urlPrefix%>libs/jquery-ui-1.11.4/jquery-ui.min.js"></script>
<!-- Bootstrap JS -->
<script src="<%=urlPrefix%>libs/bootstrap_3.3.5/js/bootstrap.min.js"></script>
<!-- Jquery Nanoscroller JS -->
<script src="<%=urlPrefix%>libs/nanoscroller_0.8.7/jquery.nanoscroller.min.js"></script>
<!-- Theme WSO2 JS -->
<script src="<%=urlPrefix%>libs/theme-wso2_1.0/js/theme-wso2.js"></script>
<!-- Handlebars JS -->
<script src="<%=urlPrefix%>libs/handlebars-v4.0.2/handlebars.min.js"></script>
<script src="/shindig/gadgets/js/container:open-views:opensearch:rpc:xmlutil:pubsub-2.js?c=1&debug=1&container=default"></script>
<script src="<%=urlPrefix%>js/ues.js"></script>
<script src="<%=urlPrefix%>js/ues-prefs.js"></script>
<% include('/controllers/includes/common-scripts.jag'); %>
<% include('/controllers/includes/dashboard-scripts.jag'); %>
<script src="<%=urlPrefix%>js/ues-gadgets.js"></script>
<script src="<%=urlPrefix%>js/ues-dashboards.js"></script>
<script src="<%=urlPrefix%>extensions/components/gadget/index.js"></script>
<script src="<%=urlPrefix%>extensions/components/widget/index.js"></script>
<script src="<%=urlPrefix%>extensions/uris/local/index.js"></script>
<script src="<%=urlPrefix%>extensions/uris/store/index.js"></script>
<script src="<%=urlPrefix%>js/gadget-properties.js"></script>
<script src="<%=urlPrefix%>js/ds-handlebar-helpers.js"></script>
<script src="<%=urlPrefix%>js/ues-saml-at.js"></script>
<script src="<%=urlPrefix%>js/dashboard.js"></script>
<% include('/controllers/includes/theme-dashboard-scripts.jag'); %>
<!-- Handlebar templates -->
<!-- Component container -->
<script id="ues-component-box-content-hbs" type="text/x-handlebars-template">
<div class="gadget-wrapper">
<div class="ues-component gadget">
<div class="ues-component-heading gadget-heading">
<h4 class="ues-component-title gadget-title truncate"></h4>
<div class="ues-component-actions gadget-actions">
</div>
</div>
<div class="ues-component-body gadget-body"></div>
</div>
</div>
</script>
<!-- Component toolbar actions -->
<script id="ues-component-actions-hbs" type="text/x-handlebars-template">
<div class="btn-group">
{{#if userPrefsExists}}
<button type="button" class="btn btn-default ues-component-settings-handle" title="<%= i18n.localize("properties.label") %>">
<i class="icon fw fw fw-configarations"></i>
</button>
{{/if}}
<button type="button" class="btn btn-default ues-component-full-handle" title="<%= i18n.localize("maximize.label") %>"
data-maximize-title="<%= i18n.localize("maximize.label") %>" data-minimize-title="<%= i18n.localize("minimize.label") %>">
<i class="icon fw fw-expand"></i>
</button>
</div>
</script>
<!-- Gadget settings -->
<script id="ues-gadget-setting-hbs" type="text/x-handlebars-template">
<div class="ues-sandbox gadget-setting" data-component="{{id}}">
<form>
{{#has options}}
<div class="ues-options">
<h4><%= i18n.localize("options") %></h4>
{{#each options}}
<div class="form-group">
<div class="col-sm-12">
{{#equals type "STRING"}}
<label>{{title}}
<input type="text" class="form-control" name="{{@key}}" placeholder="{{title}}" value="{{value}}">
</label>
{{/equals}}
{{#equals type "BOOL"}}
<label>
<input type="checkbox" name="{{title}}"{{#equals value true}} checked="checked"{{/equals}}> {{title}}
</label>
{{/equals}}
{{#equals type "ENUM"}}
<label>{{title}}
<select id={{title}} name={{title}} class="form-control ues-title-position">
{{#each options}}
<option value={{value}}{{#equals value ../value}} selected="selected"{{/equals}}>{{displayValue}}</option>
{{/each}}
</select>
</label>
{{/equals}}
{{#equals type "LIST"}}
<label>{{title}}
<textarea name="{{@key}}" class="form-control" rows="4" placeholder='<%= i18n.localize("placeholder.item.list")%>'>{{value}}</textarea>
<label><%= i18n.localize("enter.your.list.entries.label")%></label>
</label>
{{/equals}}
{{#equals type "text"}}
<label>{{title}}
<textarea name="{{@key}}" class="form-control" rows="4">{{value}}</textarea>
</label>
{{/equals}}
</div>
</div>
{{/each}}
</div>
{{else}}
<div class="alert alert-info">No properties to configure.</div>
{{/has}}
</form>
</div>
</script>
<!-- Scripts -->
<script>
var nanoScrollerSelector = $(".nano");
nanoScrollerSelector.nanoScroller();
function updateSidebarNav(target) {
$(target).show();
$(target).siblings().hide();
nanoScrollerSelector[0].nanoscroller.reset();
}
if (!ues.global.renderFromExtension) {
ues.dashboards.render($('.ues-components-grid'), ues.global.dashboard, ues.global.page);
}
$(document).ready(function() {
// Show banner
if (ues.global.dashboard.banner.globalBannerExists || ues.global.dashboard.banner.customBannerExists) {
$('.ues-banner-placeholder').css("background-image", "url('<%=tenantedUrlPrefix%>banners/<%=dashboard.id%>')");
} else {
$('.ues-banner-placeholder').hide();
}
// Toggle component box heading
$('.ues-component').hover(function() {
toggleHeading($(this), true);
}, function() {
toggleHeading($(this), false);
});
});
function toggleHeading(source, show) {
if (source.hasClass('ues-no-heading')) {
var heading = source.find('.ues-component-heading');
if (show) {
heading.slideDown();
} else {
heading.slideUp();
}
}
}
</script>
</body>
</html>

View File

@ -1,52 +0,0 @@
<%
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var user = session.get('user');
var streamName;
var streamVersion;
var log = new Log();
var JaggeryWebSocketHelper = Packages.org.wso2.carbon.event.output.adapter.ui.JaggeryWebSocketHelper;
webSocket.onopen = function () {
if (user == null) {
this.close();
}
};
webSocket.ontext = function (data) {
log.info(data);
var dataObj = parse(data);
streamName = dataObj.streamName;
streamVersion = dataObj.streamVersion;
JaggeryWebSocketHelper.subscribeWebSocket(streamName, streamVersion, stringify(dataObj.filterProps),
user.username, session.getId(), user.tenantId, this);
};
webSocket.onclose = function () {
if (user != null && streamName != null && streamVersion != null) { //onclose may get invoked when an invalid user (user==null case) closes the connection. Hence this check is required.
JaggeryWebSocketHelper.unsubscribeWebsocket(streamName, streamVersion, session.getId(), user.tenantId);
}
};
webSocket.onerror = function () {
if (user != null) {
JaggeryWebSocketHelper.unsubscribeWebsocket(streamId.split(":")[0], streamId.split(":")[1], session.getId(), user.tenantId);
}
};
%>

View File

@ -2,7 +2,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WSO2 IoT Server</title>
<title>Entgra IoT Server</title>
<link rel="icon" href="images/favicon.png" type="image/x-icon"/>
<link href="libs/bootstrap_3.3.5/css/bootstrap.min.css" rel="stylesheet">
@ -37,19 +37,19 @@
<div class="container col-xs-12 col-sm-12 col-md-12 col-lg-12 col-centered wr-content wr-login col-centered padding-bottom-100">
<div>
<h2 class="wr-title uppercase blue-bg padding-double white boarder-bottom-blue margin-none">
WSO2 IoT Server - Cookie Policy
Entgra IoT Server - Cookie Policy
</h2>
</div>
<div class="boarder-all ">
<div class="clearfix"></div>
<!-- Customizable content. Due to this nature, i18n is not implemented for this section -->
<div id="cookiePolicy" class="padding-double">
<h4><a href="https://wso2.com/iot/"><strong>About WSO2 IoT Server</strong></a></h4>
<p>WSO2 IoT Server is a complete solution that enables device manufacturers and enterprises to connect and manage their devices, build apps, manage events, secure devices and data, and visualize sensor data in a scalable manner.
<h4><a href="https://wso2.com/iot/"><strong>About Entgra IoT Server</strong></a></h4>
<p>Entgra IoT Server is a complete solution that enables device manufacturers and enterprises to connect and manage their devices, build apps, manage events, secure devices and data, and visualize sensor data in a scalable manner.
<p>It also offers a complete and secure enterprise mobility management (EMM/MDM) solution that aims to address mobile computing challenges faced by enterprises today. Supporting iOS, Android, and Windows devices, it helps organizations deal with both corporate owned, personally enabled (COPE) and employee-owned devices with the bring your own device (BYOD) concept.</p>
<p>WSO2 IoT Server comes with advanced analytics, enabling users to analyze speed, proximity, and geo-fencing information of devices including details of those in motion and stationary state.</p>
<p>Entgra IoT Server comes with advanced analytics, enabling users to analyze speed, proximity, and geo-fencing information of devices including details of those in motion and stationary state.</p>
<div class="margin-bottom-double"></div>
<h2 id="cookie-policy"><strong>Cookie Policy</strong></h2>
<p>IoT Server uses cookies to provide you with the best user experience, and to securely identify you. You might not be able to access some of the services if you disable cookies.</p>
@ -170,7 +170,7 @@
<!-- footer -->
<footer class="footer">
<div class="container-fluid">
<p>WSO2 IoT Server | &copy;
<p>Entgra IoT Server | &copy;
<script>document.write(new Date().getFullYear());</script>
<a href="http://wso2.com/" target="_blank"><i class="icon fw fw-wso2"></i> Inc</a>. All rights reserved
</p>

View File

@ -2,7 +2,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WSO2 IoT Server</title>
<title>Entgra IoT Server</title>
<link rel="icon" href="images/favicon.png" type="image/x-icon"/>
<link href="libs/bootstrap_3.3.5/css/bootstrap.min.css" rel="stylesheet">
@ -57,7 +57,7 @@
<!-- footer -->
<footer class="footer">
<div class="container-fluid">
<p>WSO2 IoT Server | &copy;
<p>Entgra IoT Server | &copy;
<script>document.write(new Date().getFullYear());</script>
<a href="http://wso2.com/" target="_blank"><i class="icon fw fw-wso2"></i> Inc</a>. All rights reserved
</p>

View File

@ -1,125 +0,0 @@
{
"displayName": "EMM Web Agent",
"logLevel": "error",
"initScripts": ["/app/modules/init.js"],
"urlMappings": [
{
"url": "/enrollment",
"path": "/lib/pages.jag"
},
{
"url": "/enrollment/windows/login",
"path": "/app/modules/enrollments/windows/agent-controller.jag"
},
{
"url": "/enrollment/windows/enroll",
"path": "/app/modules/enrollments/windows/agent-enroll.jag"
},
{
"url": "/enrollment/ios/download-certificate",
"path": "/app/modules/enrollments/ios/certificate.jag"
},
{
"url": "/enrollment/ios/download-agent",
"path": "/app/modules/enrollments/ios/agent.jag"
},
{
"url": "/enrollment/ios/login",
"path": "/app/modules/enrollments/ios/agent-controller.jag"
},
{
"url": "/enrollment/ios/enroll",
"path": "/app/modules/enrollments/ios/agent-enroll.jag"
},
{
"url": "/enrollment/ios/check",
"path": "/app/modules/enrollments/ios/agent-check.jag"
},
{
"url": "/api/invoker/*",
"path": "/api/invoker-api.jag"
},
{
"url": "/uuf/login",
"path": "/lib/modules/auth/login.jag"
},
{
"url": "/uuf/logout",
"path": "/lib/modules/auth/logout.jag"
},
{
"url": "/uuf/sso/acs",
"path": "/lib/modules/auth/acs.jag"
},
{
"url": "/public/*",
"path": "/lib/static-files.jag"
},
{
"url": "/unit/*",
"path": "/lib/units.jag"
},
{
"url": "/*",
"path": "/lib/pages.jag"
}
],
"securityConstraints": [
{
"securityConstraint": {
"webResourceCollection": {
"name": "WINDOWS-WEB-AGENT",
"urlPatterns": [
"/*"
]
},
"userDataConstraint": {
"transportGuarantee": "CONFIDENTIAL"
}
}
},
{
"securityConstraint": {
"webResourceCollection": {
"name": "WINDOWS-WEB-AGENT-http",
"urlPatterns": [
"/public/*",
"/enrollments/windows/*",
"/enrollment/windows/*"
]
},
"userDataConstraint": {
"transportGuarantee": "NONE"
}
}
}
],
"filters": [
{
"name": "ContentTypeBasedCachePreventionFilter",
"class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
"params" : [
{"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
{"name" : "filterAction", "value" : "enforce"},
{"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
]
},
{
"name":"HttpHeaderSecurityFilter",
"class":"org.apache.catalina.filters.HttpHeaderSecurityFilter",
"params" : [{"name" : "hstsEnabled", "value" : "false"}]
}
],
"filterMappings": [
{
"name":"HttpHeaderSecurityFilter",
"url":"*"
},
{
"name":"ContentTypeBasedCachePreventionFilter",
"url":"*"
}
]
}

View File

@ -8,37 +8,20 @@
<a href='https://opensource.org/licenses/Apache-2.0'><img src='https://img.shields.io/badge/License-Apache%202.0-blue.svg'></a><br/>
<h1>Release Note - Entgra IoT Server Version 3.8.0</h1>
<h1>Release Note - Entgra IoT Server Version 4.1.0</h1>
<h2>We are pleased to announce Entgra IoT Server 3.8.0.</h2>
<h2>We are pleased to announce Entgra IoT Server 4.1.0.</h2>
<p>Entgra IoT Server is the successor of WSO2 IoT server and includes capability to manage mobile devices(MDM), manage applications(MAM) and IoT devices in a single environment. It provides best of breed technologies for device manufacturers to develop connected smart products as well as anyone looking for a well established EMM solution to manage devices in their organisations. Entgra IoTs 3.8.0 pays special focus to Kiosk devices and many other EMM improvements.
<p>Entgra IoT Server is the successor of Entgra IoT server and includes capability to manage mobile devices(MDM), manage applications(MAM) and IoT devices in a single environment. It provides best of breed technologies for device manufacturers to develop connected smart products as well as anyone looking for a well established EMM solution to manage devices in their organisations. Entgra IoTs 3.8.0 pays special focus to Kiosk devices and many other EMM improvements.
</p>
<h4>What's new in Entgra IoTS 3.8.0</h4>
<ul>
<li>Windows PC support added to the platform</li>
<li>MacOS support added to the platform</li>
<li>Windows PC Install Apps API level support</li>
<li>MacOS App install API level support</li>
<li>Fully rewritten App manager for performance</li>
<li>Defining policy type(General/corrective)</li>
<li>Corrective policy for policy violations</li>
<li>Sim change status reporting</li>
<li>Display extensive device information</li>
<li>Schedule webclip/enterprise/public app uninstall</li>
<li>Adding custom apps for IoT devices</li>
<li>Enable/Disable lock task mode</li>
</ul>
<h4>Documentation</h4>
Documentations: <a href='https://entgra-documentation.gitlab.io/v3.8.0/'> Entgra IoT Server Documentation</a>
Documentations: <a href='https://entgra-documentation.gitlab.io/v4.1.0/'> Entgra IoT Server Documentation</a>
<h4>Known Issues</h4>
The known set of issues this version can be found <a href='https://gitlab.com/entgra/product-iots/issues?scope=all&utf8=✓&state=opened&milestone_title=IoT%203.8.0-GA'> here.</a>
The known set of issues this version can be found <a href='https://gitlab.com/entgra/product-iots/issues?scope=all&utf8=✓&state=opened'> here.</a>
<h3>Engaging with Community</h3>
@ -46,7 +29,7 @@ The known set of issues this version can be found <a href='https://gitlab.com/en
<p>Join our mailing list and correspondence with the developers directly.</p>
<p>Developer list: <a href="mailto:dev@entgra.org">dev@entgra.org</a></p>
<p>Developer list: <a href="mailto:dev@entgra.org">dev@entgra.io</a></p>
<h4>Reporting Issues</h4>
@ -55,9 +38,9 @@ The known set of issues this version can be found <a href='https://gitlab.com/en
<h4>Discussion Forums</h4>
<p>We encourage you to use stackoverflow for
<a href="http://stackoverflow.com/questions/tagged/wso2iots%20or%20wso2emm%20or%20entgraiot%20or%20wso2-emm">IoT
<a href="http://stackoverflow.com/questions/tagged/entgra-iots%20or%20wso2emm%20or%20entgraiot%20or%20wso2-emm">IoT
</a> and <a
href="http://stackoverflow.com/questions/tagged/wso2iots%20or%20wso2emm%20or%20entgraemm%20or%20wso2-emm">EMM</a> to engage with developers as well as other users.</p>
href="http://stackoverflow.com/questions/tagged/entgra-iots%20or%20wso2emm%20or%20entgraemm%20or%20wso2-emm">EMM</a> to engage with developers as well as other users.</p>
<p>For more information about Entgra IoT Server, please see <a href="https://www.entgra.io/">https://www.entgra.io</a></p>

View File

@ -8,7 +8,7 @@ INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server')
CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
ID INTEGER NOT NULL,
CONSUMER_KEY VARCHAR (255) NOT NULL,
CONSUMER_SECRET VARCHAR (512),
CONSUMER_SECRET VARCHAR (2048),
USERNAME VARCHAR (255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -18,6 +18,10 @@ CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID))
/
@ -30,6 +34,13 @@ REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
= (NEXTVAL FOR IDN_OAUTH_CONSUMER_APPS_SEQUENCE);
END
/
CREATE TABLE IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID, SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)
/
CREATE TABLE IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR (512) NOT NULL,
REQUEST_TOKEN_SECRET VARCHAR (512),
@ -55,8 +66,8 @@ CREATE TABLE IDN_OAUTH1A_ACCESS_TOKEN (
/
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255) NOT NULL,
ACCESS_TOKEN VARCHAR (255) NOT NULL,
REFRESH_TOKEN VARCHAR (255),
ACCESS_TOKEN VARCHAR (2048) NOT NULL,
REFRESH_TOKEN VARCHAR (2048),
CONSUMER_KEY_ID INTEGER NOT NULL,
AUTHZ_USER VARCHAR (100) NOT NULL,
TENANT_ID INTEGER NOT NULL,
@ -71,6 +82,8 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR (25) DEFAULT 'ACTIVE' NOT NULL,
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE' NOT NULL,
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR (512),
REFRESH_TOKEN_HASH VARCHAR (512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TENANT_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -83,12 +96,15 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED)
/
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH)
/
CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255) NOT NULL,
AUTHORIZATION_CODE VARCHAR (512) NOT NULL,
AUTHORIZATION_CODE VARCHAR (2048) NOT NULL,
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR (1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100) NOT NULL,
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR (50) NOT NULL,
@ -99,10 +115,14 @@ CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR(255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR (512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE)
/
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH, CONSUMER_KEY_ID)
/
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255) NOT NULL,
TOKEN_SCOPE VARCHAR (60) NOT NULL,
@ -112,11 +132,10 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
/
CREATE TABLE IDN_OAUTH2_SCOPE (
SCOPE_ID INTEGER NOT NULL,
SCOPE_KEY VARCHAR (100) NOT NULL,
NAME VARCHAR (255) NULL,
DESCRIPTION VARCHAR (512) NULL,
TENANT_ID INTEGER DEFAULT 0 NOT NULL,
ROLES VARCHAR (500) NULL,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID))
/
CREATE SEQUENCE IDN_OAUTH2_SCOPE_SEQUENCE START WITH 1 INCREMENT BY 1 NOCACHE
@ -131,14 +150,18 @@ BEGIN ATOMIC
END
/
CREATE TABLE IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE)
/
CREATE TABLE IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR (255) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
)/
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE)
/
CREATE TABLE IDN_SCIM_GROUP (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
@ -210,7 +233,7 @@ CREATE TABLE IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234 NOT NULL,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY))
/
CREATE TABLE IDN_IDENTITY_META_DATA (
@ -256,6 +279,7 @@ CREATE TABLE SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -304,6 +328,7 @@ CREATE TABLE SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -359,6 +384,7 @@ CREATE TABLE SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID))
/
@ -424,6 +450,7 @@ CREATE TABLE SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID))
/
CREATE SEQUENCE SP_PROV_CONNECTOR_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
@ -439,6 +466,26 @@ CREATE TRIGGER SP_PROV_CONNECTOR_TRIG NO CASCADE
/
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
/
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID))
/
CREATE SEQUENCE SP_AUTH_SCRIPT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER SP_AUTH_SCRIPT_TRIG NO CASCADE
BEFORE INSERT
ON SP_AUTH_SCRIPT
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR SP_AUTH_SCRIPT_SEQ);
END
/
CREATE TABLE IDP (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
@ -474,9 +521,6 @@ CREATE TRIGGER IDP_TRIG NO CASCADE
SET (NEW.ID) = (NEXTVAL FOR IDP_SEQ);
END
/
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost')/
CREATE TABLE IDP_ROLE (
ID INTEGER NOT NULL,
IDP_ID INTEGER NOT NULL,
@ -583,10 +627,6 @@ CREATE TRIGGER IDP_AUTHENTICATOR_TRIG NO CASCADE
END
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso')/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties')/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests')/
CREATE TABLE IDP_METADATA (
ID INTEGER NOT NULL,
IDP_ID INTEGER NOT NULL,
@ -610,10 +650,6 @@ CREATE TRIGGER IDP_METADATA_TRIG NO CASCADE
SET (NEW.ID) = (NEXTVAL FOR IDP_METADATA_SEQ);
END
/
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout')/
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout')/
CREATE TABLE IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
@ -637,9 +673,6 @@ CREATE TRIGGER IDP_AUTHENTICATOR_PROP_TRIG NO CASCADE
END
/
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0')/
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0')/
CREATE TABLE IDP_PROVISIONING_CONFIG (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
@ -647,6 +680,7 @@ CREATE TABLE IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE)
@ -790,7 +824,7 @@ CREATE TABLE WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (PROFILE_NAME, TENANT_ID))
@ -863,9 +897,484 @@ CREATE TABLE WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE)
/
CREATE TABLE IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1 NOT NULL,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REMAINING_SETS VARCHAR(2500),
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE))
/
CREATE TABLE IDN_PASSWORD_HISTORY_DATA (
ID INTEGER NOT NULL,
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1 NOT NULL,
SALT_VALUE VARCHAR(255) NOT NULL,
HASH VARCHAR(255) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
)
/
CREATE SEQUENCE IDN_PASSWORD_HISTORY_DATA_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_PASSWORD_HISTORY_DATA NO CASCADE
BEFORE INSERT
ON IDN_PASSWORD_HISTORY_DATA
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_PASSWORD_HISTORY_DATA_SEQ);
END
/
CREATE TABLE IDN_CLAIM_DIALECT (
ID INTEGER NOT NULL,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_DIALECT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_CLAIM_DIALECT_TRIG NO CASCADE
BEFORE INSERT
ON IDN_CLAIM_DIALECT
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_CLAIM_DIALECT_SEQ);
END
/
CREATE TABLE IDN_CLAIM (
ID INTEGER NOT NULL,
DIALECT_ID INTEGER NOT NULL,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_CLAIM_TRIG NO CASCADE
BEFORE INSERT
ON IDN_CLAIM
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_CLAIM_SEQ);
END
/
CREATE TABLE IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER NOT NULL,
LOCAL_CLAIM_ID INTEGER NOT NULL,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_CLAIM_MAPPED_ATTR_TRIG NO CASCADE
BEFORE INSERT
ON IDN_CLAIM_MAPPED_ATTRIBUTE
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ);
END
/
CREATE TABLE IDN_CLAIM_PROPERTY (
ID INTEGER NOT NULL,
LOCAL_CLAIM_ID INTEGER NOT NULL,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_PROPERTY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_CLAIM_PROPERTY_TRIG NO CASCADE
BEFORE INSERT
ON IDN_CLAIM_PROPERTY
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_CLAIM_PROPERTY_SEQ);
END
/
CREATE TABLE IDN_CLAIM_MAPPING (
ID INTEGER NOT NULL,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_MAPPING_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_CLAIM_MAPPING_TRIG NO CASCADE
BEFORE INSERT
ON IDN_CLAIM_MAPPING
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_CLAIM_MAPPING_SEQ);
END
/
CREATE TABLE IDN_SAML2_ASSERTION_STORE (
ID INTEGER NOT NULL,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID))
/
CREATE SEQUENCE IDN_SAML2_ASSERTION_STORE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_SAML2_ASSERTION_STORE_TRIG NO CASCADE
BEFORE INSERT
ON IDN_SAML2_ASSERTION_STORE
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_SAML2_ASSERTION_STORE_SEQ);
END
/
CREATE TABLE IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME TIMESTAMP NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (JWT_ID))
/
CREATE TABLE IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_PROPERTY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_OIDC_PROPERTY_TRIG NO CASCADE
BEFORE INSERT
ON IDN_OIDC_PROPERTY
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_OIDC_PROPERTY_SEQ);
END
/
CREATE TABLE IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER NOT NULL,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQUEST_OBJECT_REF_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_OIDC_REQUEST_OBJECT_REF_TRIG NO CASCADE
BEFORE INSERT
ON IDN_OIDC_REQ_OBJECT_REFERENCE
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_OIDC_REQUEST_OBJECT_REF_SEQ);
END
/
CREATE TABLE IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER NOT NULL,
REQ_OBJECT_ID INTEGER ,
CLAIM_ATTRIBUTE VARCHAR(255),
ESSENTIAL CHAR(1) NOT NULL DEFAULT '0',
VALUE VARCHAR(255),
IS_USERINFO CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE(ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJECT_CLAIMS_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_OIDC_REQ_OBJECT_CLAIMS_TRIG NO CASCADE
BEFORE INSERT
ON IDN_OIDC_REQ_OBJECT_CLAIMS
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_OIDC_REQ_OBJECT_CLAIMS_SEQ);
END
/
CREATE TABLE IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER NOT NULL,
REQ_OBJECT_CLAIMS_ID INTEGER,
CLAIM_VALUES VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJECT_CLAIM_VALUES_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_OIDC_REQ_OBJECT_CLAIM_VALUES_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJ_CLAIM_VALUES
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID) = (NEXTVAL FOR IDN_OIDC_REQ_OBJECT_CLAIM_VALUES_SEQ);
END
/
CREATE TABLE IDN_CERTIFICATE (
ID INTEGER NOT NULL,
NAME VARCHAR(100) NOT NULL,
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER NOT NULL,
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID))
/
CREATE SEQUENCE IDN_CERTIFICATE_SEQUENCE START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER IDN_CERTIFICATE_TRIGGER NO CASCADE BEFORE INSERT ON IDN_CERTIFICATE
REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID)
= (NEXTVAL FOR IDN_CERTIFICATE_SEQUENCE);
END
/
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER NOT NULL ,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1234 NOT NULL,
CONSTRAINT PII_CATEGORY_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PII_CATEGORY_SEQ
START WITH 1
INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER CM_PII_CATEGORY_TRIGGER NO CASCADE BEFORE INSERT ON CM_PII_CATEGORY
REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID)
= (NEXTVAL FOR CM_PII_CATEGORY_SEQ);
END
/
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT -1234,
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
)
/
CREATE TABLE CM_PURPOSE (
ID INTEGER NOT NULL,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT -1234 NOT NULL,
CONSTRAINT PURPOSE_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PURPOSE_SEQ
START WITH 1
INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER CM_PURPOSE_TRIGGER NO CASCADE BEFORE INSERT ON CM_PURPOSE
REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID)
= (NEXTVAL FOR CM_PURPOSE_SEQ);
END
/
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER NOT NULL,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT -1234 NOT NULL,
CONSTRAINT PURPOSE_CATEGORY_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PURPOSE_CATEGORY_SEQ
START WITH 1
INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER CM_PURPOSE_CATEGORY_TRIGGER NO CASCADE BEFORE INSERT ON CM_PURPOSE_CATEGORY
REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID)
= (NEXTVAL FOR CM_PURPOSE_CATEGORY_SEQ);
END
/
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER NOT NULL,
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT -1234 NOT NULL,
CONSTRAINT RECEIPT_SP_ASSOC_CONSTRAINT UNIQUE (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_RECEIPT_SP_ASSOC_SEQ
START WITH 1
INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER CM_RECEIPT_SP_ASSOC_TRIGGER NO CASCADE BEFORE INSERT ON CM_RECEIPT_SP_ASSOC
REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID)
= (NEXTVAL FOR CM_RECEIPT_SP_ASSOC_SEQ);
END
/
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER NOT NULL,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
CONSTRAINT SP_PURPOSE_ASSOC UNIQUE (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_SP_PURPOSE_ASSOC_SEQ
START WITH 1
INCREMENT BY 1 NOCACHE
/
CREATE TRIGGER CM_SP_PURPOSE_ASSOC_TRIGGER NO CASCADE BEFORE INSERT ON CM_SP_PURPOSE_ASSOC
REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET (NEW.ID)
= (NEXTVAL FOR CM_SP_PURPOSE_ASSOC_SEQ);
END
/
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT SP_PUS_PS_CAT_ASSOC UNIQUE (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
)
/
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT PURPOSE_PII_CAT_ASSOC UNIQUE (PURPOSE_ID, CM_PII_CATEGORY_ID)
)
/
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
CONSTRAINT SP_PURPOSE_PII_CATEGORY_ASSOC UNIQUE (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
)
/
CREATE SEQUENCE CM_SP_PURPOSE_PII_CAT_ASSOC_SEQ
START WITH 1
INCREMENT BY 1 NOCACHE
/
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
CONSTRAINT CONSENT_RECEIPT_PROPERTY UNIQUE (CONSENT_RECEIPT_ID, NAME)
)
/
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
/
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID)
/
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID)
/
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID)
/
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
/
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234')/
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234')/
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables --
CREATE TABLE AM_SUBSCRIBER (
@ -949,7 +1458,7 @@ CREATE TABLE AM_SUBSCRIPTION (
CREATE TABLE AM_SUBSCRIPTION_KEY_MAPPING (
SUBSCRIPTION_ID INTEGER NOT NULL,
ACCESS_TOKEN VARCHAR(255) NOT NULL,
ACCESS_TOKEN VARCHAR(512) NOT NULL,
KEY_TYPE VARCHAR(512) NOT NULL,
FOREIGN KEY(SUBSCRIPTION_ID) REFERENCES AM_SUBSCRIPTION(SUBSCRIPTION_ID) ON DELETE RESTRICT,
PRIMARY KEY(SUBSCRIPTION_ID,ACCESS_TOKEN)
@ -1045,7 +1554,7 @@ CREATE TABLE AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INT NOT NULL,
TOKEN_TYPE VARCHAR(30) NOT NULL,
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -1275,7 +1784,7 @@ CREATE TABLE AM_THROTTLE_TIER_PERMISSIONS (
CREATE TABLE AM_BLOCK_CONDITIONS (
CONDITION_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
TYPE varchar(45) DEFAULT NULL,
VALUE varchar(45) DEFAULT NULL,
VALUE varchar(512) DEFAULT NULL,
ENABLED varchar(45) DEFAULT NULL,
DOMAIN varchar(45) DEFAULT NULL,
UUID VARCHAR(256) NOT NULL,
@ -1283,12 +1792,42 @@ CREATE TABLE AM_BLOCK_CONDITIONS (
UNIQUE (UUID)
) /
CREATE TABLE AM_CERTIFICATE_METADATA (
TENANT_ID INT NOT NULL,
ALIAS VARCHAR(45) NOT NULL,
END_POINT VARCHAR(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (ALIAS),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (END_POINT)
) /
CREATE TABLE AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INT NOT NULL,
GROUP_ID VARCHAR(512) NOT NULL,
TENANT VARCHAR(255) NOT NULL,
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE
) /
CREATE TABLE AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN varchar(255) NOT NULL,
FILE_NAME varchar(255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED SMALLINT NOT NULL DEFAULT 0,
FILE_CONTENT BLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
) /
CREATE TABLE AM_API_LC_PUBLISH_EVENTS (
ID INTEGER NOT NULL,
TENANT_DOMAIN VARCHAR(500) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME TIMESTAMP(0) NOT NULL,
PRIMARY KEY (ID)
) /
-- End of API-MGT Tables --
-- Performance indexes start--
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME)/
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN)/
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE)/
create index IDX_AAI_CTX on AM_API (CONTEXT)/
create index IDX_AAKM_CK on AM_APPLICATION_KEY_MAPPING (CONSUMER_KEY)/
@ -1300,5 +1839,3 @@ create index IDX_APS_QT on AM_POLICY_SUBSCRIPTION (QUOTA_TYPE)/
create index IDX_AS_AITIAI on AM_SUBSCRIPTION (API_ID,TIER_ID,APPLICATION_ID)/
create index IDX_APA_QT on AM_POLICY_APPLICATION (QUOTA_TYPE)/
create index IDX_AA_AT_CB on AM_APPLICATION (APPLICATION_TIER,CREATED_BY)/
-- Performance indexes end--

View File

@ -9,7 +9,7 @@ INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server');
CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY VARCHAR (255),
CONSUMER_SECRET VARCHAR (512),
CONSUMER_SECRET VARCHAR (2048),
USERNAME VARCHAR (255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -19,10 +19,21 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID)
);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR (512),
REQUEST_TOKEN_SECRET VARCHAR (512),
@ -50,8 +61,8 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_ACCESS_TOKEN (
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR (255),
REFRESH_TOKEN VARCHAR (255),
ACCESS_TOKEN VARCHAR (2048),
REFRESH_TOKEN VARCHAR (2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
@ -66,6 +77,8 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR (25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR (512),
REFRESH_TOKEN_HASH VARCHAR (512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TENANT_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -76,12 +89,14 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED);
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR (512),
AUTHORIZATION_CODE VARCHAR (2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR (1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
@ -92,10 +107,13 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR (255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR (512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
);
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH, CONSUMER_KEY_ID);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255),
TOKEN_SCOPE VARCHAR (60),
@ -106,17 +124,22 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE (
SCOPE_ID INTEGER NOT NULL AUTO_INCREMENT,
SCOPE_KEY VARCHAR(100) NOT NULL,
NAME VARCHAR(255) NULL,
DESCRIPTION VARCHAR(512) NULL,
TENANT_ID INTEGER NOT NULL DEFAULT 0,
ROLES VARCHAR (500) NULL,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID)
);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR(255) NOT NULL,
SCOPE_ID INTEGER (11) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
@ -174,7 +197,7 @@ CREATE TABLE IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY)
);
@ -220,6 +243,7 @@ CREATE TABLE IF NOT EXISTS SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -243,6 +267,7 @@ CREATE TABLE IF NOT EXISTS SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -276,6 +301,7 @@ CREATE TABLE IF NOT EXISTS SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID));
@ -308,10 +334,20 @@ CREATE TABLE IF NOT EXISTS SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID));
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE;
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER AUTO_INCREMENT NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID));
CREATE TABLE IF NOT EXISTS IDP (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -336,8 +372,6 @@ CREATE TABLE IF NOT EXISTS IDP (
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, NAME));
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost');
CREATE TABLE IF NOT EXISTS IDP_ROLE (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -388,10 +422,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR (
UNIQUE (TENANT_ID, IDP_ID, NAME),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests');
CREATE TABLE IF NOT EXISTS IDP_METADATA (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -403,9 +433,6 @@ CREATE TABLE IF NOT EXISTS IDP_METADATA (
CONSTRAINT IDP_METADATA_CONSTRAINT UNIQUE (IDP_ID, NAME),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout');
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout');
CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -417,9 +444,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
UNIQUE (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY),
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE);
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0');
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0');
CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -427,6 +451,7 @@ CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
@ -514,7 +539,7 @@ CREATE TABLE IF NOT EXISTS WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (PROFILE_NAME, TENANT_ID)
@ -573,6 +598,277 @@ CREATE TABLE IF NOT EXISTS WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (WORKFLOW_ID) REFERENCES WF_WORKFLOW(ID)ON DELETE CASCADE,
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REMAINING_SETS VARCHAR(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
);
CREATE TABLE IF NOT EXISTS IDN_PASSWORD_HISTORY_DATA (
ID INTEGER NOT NULL AUTO_INCREMENT,
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR(255),
HASH VARCHAR(255) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH),
);
CREATE TABLE IF NOT EXISTS IDN_CLAIM_DIALECT (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID)
);
CREATE TABLE IF NOT EXISTS IDN_CLAIM (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID)
);
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID)
);
CREATE TABLE IF NOT EXISTS IDN_CLAIM_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID)
);
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPING (
ID INTEGER NOT NULL AUTO_INCREMENT,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID),
);
CREATE TABLE IF NOT EXISTS IDN_SAML2_ASSERTION_STORE (
ID INTEGER NOT NULL AUTO_INCREMENT,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID)
);
CREATE TABLE IF NOT EXISTS IDN_OIDC_JTI (
JWT_ID VARCHAR(255),
EXP_TIME TIMESTAMP NOT NULL ,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (JWT_ID)
);
CREATE TABLE IF NOT EXISTS IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_ID INTEGER,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) NOT NULL DEFAULT '0',
VALUE VARCHAR(255) ,
IS_USERINFO CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE (ID) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_CLAIMS_ID INTEGER ,
CLAIM_VALUES VARCHAR(255) ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS IDN_CERTIFICATE (
ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID)
);
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT '-1234',
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
);
CREATE TABLE CM_PURPOSE (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER AUTO_INCREMENT,
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
);
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER AUTO_INCREMENT,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
UNIQUE KEY (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
);
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
);
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (PURPOSE_ID, CM_PII_CATEGORY_ID)
);
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
);
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
UNIQUE KEY (CONSENT_RECEIPT_ID, NAME)
);
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID);
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234');
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234');
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables --
CREATE TABLE IF NOT EXISTS AM_SUBSCRIBER (
@ -753,7 +1049,7 @@ CREATE TABLE IF NOT EXISTS AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INT,
TOKEN_TYPE VARCHAR(30),
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -978,7 +1274,7 @@ CREATE TABLE IF NOT EXISTS AM_THROTTLE_TIER_PERMISSIONS (
CREATE TABLE `AM_BLOCK_CONDITIONS` (
`CONDITION_ID` int(11) NOT NULL AUTO_INCREMENT,
`TYPE` varchar(45) DEFAULT NULL,
`VALUE` varchar(45) DEFAULT NULL,
`VALUE` varchar(512) DEFAULT NULL,
`ENABLED` varchar(45) DEFAULT NULL,
`DOMAIN` varchar(45) DEFAULT NULL,
`UUID` VARCHAR(256),
@ -986,4 +1282,37 @@ CREATE TABLE `AM_BLOCK_CONDITIONS` (
UNIQUE (UUID)
);
CREATE TABLE IF NOT EXISTS `AM_CERTIFICATE_METADATA` (
`TENANT_ID` INT(11) NOT NULL,
`ALIAS` VARCHAR(45) NOT NULL,
`END_POINT` VARCHAR(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (`ALIAS`),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (`END_POINT`),
);
CREATE TABLE IF NOT EXISTS AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR(512) NOT NULL,
TENANT VARCHAR(255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN varchar(255) NOT NULL,
FILE_NAME varchar(255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED tinyint(1) DEFAULT 0,
FILE_CONTENT MEDIUMBLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
);
CREATE TABLE IF NOT EXISTS AM_API_LC_PUBLISH_EVENTS (
ID INTEGER(11) NOT NULL AUTO_INCREMENT,
TENANT_DOMAIN VARCHAR(500) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL,
PRIMARY KEY (ID)
);
-- End of API-MGT Tables --

View File

@ -11,7 +11,7 @@ IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[I
CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
ID INTEGER IDENTITY,
CONSUMER_KEY VARCHAR(255),
CONSUMER_SECRET VARCHAR(512),
CONSUMER_SECRET VARCHAR(2048),
USERNAME VARCHAR(255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -21,10 +21,22 @@ CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR(1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_SCOPE_VALIDATORS]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH1A_REQUEST_TOKEN]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR(512),
@ -55,8 +67,8 @@ CREATE TABLE IDN_OAUTH1A_ACCESS_TOKEN (
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_ACCESS_TOKEN]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR(255),
REFRESH_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(2048),
REFRESH_TOKEN VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
@ -71,6 +83,8 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR(512),
REFRESH_TOKEN_HASH VARCHAR(512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TENANT_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -81,16 +95,18 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED);
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH);
IF EXISTS (SELECT NAME FROM SYSINDEXES WHERE NAME = 'IDX_AT_CK_AU')
DROP INDEX IDN_OAUTH2_ACCESS_TOKEN.IDX_AT_CK_AU
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_AUTHORIZATION_CODE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR(512),
AUTHORIZATION_CODE VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR(1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
@ -101,10 +117,13 @@ CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR (255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR(512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
);
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH,CONSUMER_KEY_ID);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_ACCESS_TOKEN_SCOPE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255),
@ -117,21 +136,27 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_SCOPE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_SCOPE (
SCOPE_ID INTEGER IDENTITY,
SCOPE_KEY VARCHAR(100) NOT NULL,
NAME VARCHAR(255) NULL,
DESCRIPTION VARCHAR(512) NULL,
TENANT_ID INTEGER NOT NULL DEFAULT 0,
ROLES VARCHAR (500) NULL,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_SCOPE_BINDING]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OAUTH2_RESOURCE_SCOPE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR(255) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_SCIM_GROUP]') AND TYPE IN (N'U'))
@ -192,7 +217,7 @@ CREATE TABLE IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY)
);
@ -243,11 +268,14 @@ CREATE TABLE SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
PRIMARY KEY (ID),
CONSTRAINT APPLICATION_NAME_CONSTRAINT UNIQUE(APP_NAME, TENANT_ID));
CONSTRAINT APPLICATION_NAME_CONSTRAINT UNIQUE(APP_NAME, TENANT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_METADATA]') AND TYPE IN (N'U'))
CREATE TABLE SP_METADATA (
@ -259,7 +287,8 @@ CREATE TABLE SP_METADATA (
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (ID),
CONSTRAINT SP_METADATA_CONSTRAINT UNIQUE (SP_ID, NAME),
FOREIGN KEY (SP_ID) REFERENCES SP_APP(ID) ON DELETE CASCADE);
FOREIGN KEY (SP_ID) REFERENCES SP_APP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_INBOUND_AUTH]') AND TYPE IN (N'U'))
CREATE TABLE SP_INBOUND_AUTH (
@ -267,11 +296,14 @@ CREATE TABLE SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT APPLICATION_ID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE);
CONSTRAINT APPLICATION_ID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_AUTH_STEP]') AND TYPE IN (N'U'))
CREATE TABLE SP_AUTH_STEP (
@ -282,7 +314,9 @@ CREATE TABLE SP_AUTH_STEP (
IS_SUBJECT_STEP CHAR(1) DEFAULT '0',
IS_ATTRIBUTE_STEP CHAR(1) DEFAULT '0',
PRIMARY KEY (ID),
CONSTRAINT APPLICATION_ID_CONSTRAINT_STEP FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE);
CONSTRAINT APPLICATION_ID_CONSTRAINT_STEP FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_FEDERATED_IDP]') AND TYPE IN (N'U'))
CREATE TABLE SP_FEDERATED_IDP (
@ -290,7 +324,9 @@ CREATE TABLE SP_FEDERATED_IDP (
TENANT_ID INTEGER NOT NULL,
AUTHENTICATOR_ID INTEGER NOT NULL,
PRIMARY KEY (ID, AUTHENTICATOR_ID),
CONSTRAINT STEP_ID_CONSTRAINT FOREIGN KEY (ID) REFERENCES SP_AUTH_STEP (ID) ON DELETE CASCADE);
CONSTRAINT STEP_ID_CONSTRAINT FOREIGN KEY (ID) REFERENCES SP_AUTH_STEP (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_CLAIM_MAPPING]') AND TYPE IN (N'U'))
CREATE TABLE SP_CLAIM_MAPPING (
@ -300,9 +336,12 @@ CREATE TABLE SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID),
CONSTRAINT CLAIMID_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE);
CONSTRAINT CLAIMID_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_ROLE_MAPPING]') AND TYPE IN (N'U'))
CREATE TABLE SP_ROLE_MAPPING (
@ -312,7 +351,9 @@ CREATE TABLE SP_ROLE_MAPPING (
SP_ROLE VARCHAR (255) NOT NULL ,
APP_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT ROLEID_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE);
CONSTRAINT ROLEID_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_REQ_PATH_AUTHENTICATOR]') AND TYPE IN (N'U'))
CREATE TABLE SP_REQ_PATH_AUTHENTICATOR (
@ -321,7 +362,9 @@ CREATE TABLE SP_REQ_PATH_AUTHENTICATOR (
AUTHENTICATOR_NAME VARCHAR (255) NOT NULL ,
APP_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT REQ_AUTH_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE);
CONSTRAINT REQ_AUTH_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_PROVISIONING_CONNECTOR]') AND TYPE IN (N'U'))
CREATE TABLE SP_PROVISIONING_CONNECTOR (
@ -332,8 +375,21 @@ CREATE TABLE SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE);
CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
);
IF NOT EXISTS(SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[SP_AUTH_SCRIPT]') AND TYPE IN (N'U'))
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER IDENTITY NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT VARBINARY(MAX) DEFAULT NULL,
IS_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP]') AND TYPE IN (N'U'))
CREATE TABLE IDP (
@ -358,9 +414,8 @@ CREATE TABLE IDP (
IS_LOCAL_CLAIM_DIALECT CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
DISPLAY_NAME VARCHAR(255),
UNIQUE (TENANT_ID, NAME));
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost');
UNIQUE (TENANT_ID, NAME)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_ROLE]') AND TYPE IN (N'U'))
CREATE TABLE IDP_ROLE (
@ -370,7 +425,8 @@ CREATE TABLE IDP_ROLE (
ROLE VARCHAR(254),
PRIMARY KEY (ID),
UNIQUE (IDP_ID, ROLE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_ROLE_MAPPING]') AND TYPE IN (N'U'))
CREATE TABLE IDP_ROLE_MAPPING (
@ -381,7 +437,8 @@ CREATE TABLE IDP_ROLE_MAPPING (
LOCAL_ROLE VARCHAR(253),
PRIMARY KEY (ID),
UNIQUE (IDP_ROLE_ID, TENANT_ID, USER_STORE_ID, LOCAL_ROLE),
FOREIGN KEY (IDP_ROLE_ID) REFERENCES IDP_ROLE(ID) ON DELETE CASCADE);
FOREIGN KEY (IDP_ROLE_ID) REFERENCES IDP_ROLE(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_CLAIM]') AND TYPE IN (N'U'))
CREATE TABLE IDP_CLAIM (
@ -391,7 +448,8 @@ CREATE TABLE IDP_CLAIM (
CLAIM VARCHAR(254),
PRIMARY KEY (ID),
UNIQUE (IDP_ID, CLAIM),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_CLAIM_MAPPING]') AND TYPE IN (N'U'))
CREATE TABLE IDP_CLAIM_MAPPING (
@ -403,7 +461,8 @@ CREATE TABLE IDP_CLAIM_MAPPING (
IS_REQUESTED VARCHAR(128) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (IDP_CLAIM_ID, TENANT_ID, LOCAL_CLAIM),
FOREIGN KEY (IDP_CLAIM_ID) REFERENCES IDP_CLAIM(ID) ON DELETE CASCADE);
FOREIGN KEY (IDP_CLAIM_ID) REFERENCES IDP_CLAIM(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_AUTHENTICATOR]') AND TYPE IN (N'U'))
CREATE TABLE IDP_AUTHENTICATOR (
@ -415,11 +474,8 @@ CREATE TABLE IDP_AUTHENTICATOR (
DISPLAY_NAME VARCHAR(255),
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, NAME),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests');
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_METADATA]') AND TYPE IN (N'U'))
CREATE TABLE IDP_METADATA (
@ -431,10 +487,8 @@ CREATE TABLE IDP_METADATA (
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (ID),
CONSTRAINT IDP_METADATA_CONSTRAINT UNIQUE (IDP_ID, NAME),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout');
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout');
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_AUTHENTICATOR_PROPERTY]') AND TYPE IN (N'U'))
CREATE TABLE IDP_AUTHENTICATOR_PROPERTY (
@ -446,10 +500,8 @@ CREATE TABLE IDP_AUTHENTICATOR_PROPERTY (
IS_SECRET CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY),
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE);
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0');
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0');
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_PROVISIONING_CONFIG]') AND TYPE IN (N'U'))
CREATE TABLE IDP_PROVISIONING_CONFIG (
@ -459,9 +511,11 @@ CREATE TABLE IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_PROV_CONFIG_PROPERTY]') AND TYPE IN (N'U'))
CREATE TABLE IDP_PROV_CONFIG_PROPERTY (
@ -475,7 +529,8 @@ CREATE TABLE IDP_PROV_CONFIG_PROPERTY (
IS_SECRET CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, PROVISIONING_CONFIG_ID, PROPERTY_KEY),
FOREIGN KEY (PROVISIONING_CONFIG_ID) REFERENCES IDP_PROVISIONING_CONFIG(ID) ON DELETE CASCADE);
FOREIGN KEY (PROVISIONING_CONFIG_ID) REFERENCES IDP_PROVISIONING_CONFIG(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_PROVISIONING_ENTITY]') AND TYPE IN (N'U'))
CREATE TABLE IDP_PROVISIONING_ENTITY (
@ -490,7 +545,8 @@ CREATE TABLE IDP_PROVISIONING_ENTITY (
PRIMARY KEY (ID),
UNIQUE (ENTITY_TYPE, TENANT_ID, ENTITY_LOCAL_USERSTORE, ENTITY_NAME, PROVISIONING_CONFIG_ID),
UNIQUE (PROVISIONING_CONFIG_ID, ENTITY_TYPE, ENTITY_VALUE),
FOREIGN KEY (PROVISIONING_CONFIG_ID) REFERENCES IDP_PROVISIONING_CONFIG(ID) ON DELETE CASCADE);
FOREIGN KEY (PROVISIONING_CONFIG_ID) REFERENCES IDP_PROVISIONING_CONFIG(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDP_LOCAL_CLAIM]') AND TYPE IN (N'U'))
CREATE TABLE IDP_LOCAL_CLAIM (
@ -502,7 +558,8 @@ CREATE TABLE IDP_LOCAL_CLAIM (
IS_REQUESTED VARCHAR(128) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, CLAIM_URI),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_ASSOCIATED_ID]') AND TYPE IN (N'U'))
CREATE TABLE IDN_ASSOCIATED_ID (
@ -523,7 +580,8 @@ CREATE TABLE IDN_USER_ACCOUNT_ASSOCIATION (
TENANT_ID INTEGER,
DOMAIN_NAME VARCHAR(255) NOT NULL,
USER_NAME VARCHAR(255) NOT NULL,
PRIMARY KEY (TENANT_ID, DOMAIN_NAME, USER_NAME));
PRIMARY KEY (TENANT_ID, DOMAIN_NAME, USER_NAME)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[FIDO_DEVICE_STORE]') AND TYPE IN (N'U'))
CREATE TABLE FIDO_DEVICE_STORE (
@ -533,7 +591,8 @@ CREATE TABLE FIDO_DEVICE_STORE (
TIME_REGISTERED DATETIME,
KEY_HANDLE VARCHAR(200) NOT NULL,
DEVICE_DATA VARCHAR(2048) NOT NULL,
PRIMARY KEY (TENANT_ID, DOMAIN_NAME, USER_NAME, KEY_HANDLE));
PRIMARY KEY (TENANT_ID, DOMAIN_NAME, USER_NAME, KEY_HANDLE)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[WF_REQUEST]') AND TYPE IN (N'U'))
CREATE TABLE WF_REQUEST (
@ -554,7 +613,7 @@ CREATE TABLE WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (PROFILE_NAME, TENANT_ID)
@ -620,6 +679,282 @@ CREATE TABLE WF_WORKFLOW_REQUEST_RELATION(
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_RECOVERY_DATA]') AND TYPE IN (N'U'))
CREATE TABLE IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED DATETIME NOT NULL,
REMAINING_SETS VARCHAR(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_PASSWORD_HISTORY_DATA]') AND TYPE IN (N'U'))
CREATE TABLE IDN_PASSWORD_HISTORY_DATA (
ID INTEGER NOT NULL IDENTITY ,
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR(255),
HASH VARCHAR(255) NOT NULL,
TIME_CREATED DATETIME NOT NULL,
PRIMARY KEY (ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH),
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_CLAIM_DIALECT]') AND TYPE IN (N'U'))
CREATE TABLE IDN_CLAIM_DIALECT (
ID INTEGER NOT NULL IDENTITY,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_CLAIM]') AND TYPE IN (N'U'))
CREATE TABLE IDN_CLAIM (
ID INTEGER NOT NULL IDENTITY,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_CLAIM_MAPPED_ATTRIBUTE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER NOT NULL IDENTITY,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_CLAIM_PROPERTY]') AND TYPE IN (N'U'))
CREATE TABLE IDN_CLAIM_PROPERTY (
ID INTEGER NOT NULL IDENTITY,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_CLAIM_MAPPING]') AND TYPE IN (N'U'))
CREATE TABLE IDN_CLAIM_MAPPING (
ID INTEGER NOT NULL IDENTITY,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE ,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE NO ACTION ,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_SAML2_ASSERTION_STORE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_SAML2_ASSERTION_STORE (
ID INTEGER NOT NULL IDENTITY,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OIDC_JTI]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME DATETIME NOT NULL,
TIME_CREATED DATETIME NOT NULL,
PRIMARY KEY (JWT_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OIDC_PROPERTY]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL IDENTITY,
TENANT_ID INTEGER ,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL ,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OIDC_REQ_OBJECT_REFERENCE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER NOT NULL IDENTITY,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE ,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID),
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OIDC_REQ_OBJECT_CLAIMS]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER NOT NULL IDENTITY,
REQ_OBJECT_ID INTEGER,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) NOT NULL DEFAULT '0' ,
VALUE VARCHAR(255) ,
IS_USERINFO CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE (ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_OIDC_REQ_OBJ_CLAIM_VALUES]') AND TYPE IN (N'U'))
CREATE TABLE IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER NOT NULL IDENTITY,
REQ_OBJECT_CLAIMS_ID INTEGER ,
CLAIM_VALUES VARCHAR(255) ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[IDN_CERTIFICATE]') AND TYPE IN (N'U'))
CREATE TABLE IDN_CERTIFICATE (
ID INTEGER IDENTITY,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM VARBINARY(MAX),
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID)
);
-- Start of CONSENT-MGT Tables --
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_PII_CATEGORY]') AND TYPE IN (N'U'))
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER NOT NULL IDENTITY,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_PII_CATEGORY_CNT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_RECEIPT]') AND TYPE IN (N'U'))
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP DATETIME NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT '-1234',
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_PURPOSE]') AND TYPE IN (N'U'))
CREATE TABLE CM_PURPOSE (
ID INTEGER NOT NULL IDENTITY,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_PURPOSE_CNT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_PURPOSE_CATEGORY]') AND TYPE IN (N'U'))
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER NOT NULL IDENTITY,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_PURPOSE_CATEGORY_CNT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_RECEIPT_SP_ASSOC]') AND TYPE IN (N'U'))
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER NOT NULL IDENTITY,
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_RECEIPT_SP_ASSOC_CNT UNIQUE (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID),
PRIMARY KEY (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_SP_PURPOSE_ASSOC]') AND TYPE IN (N'U'))
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER NOT NULL IDENTITY,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
CONSTRAINT CM_SP_PURPOSE_ASSOC_CNT UNIQUE (RECEIPT_SP_ASSOC, PURPOSE_ID),
FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID),
FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID),
PRIMARY KEY (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_SP_PURPOSE_PURPOSE_CAT_ASSC]') AND TYPE IN (N'U'))
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT CM_SP_PURPOSE_PURPOSE_CAT_ASSC_CNT UNIQUE (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID),
FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID),
FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_PURPOSE_PII_CAT_ASSOC]') AND TYPE IN (N'U'))
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT CM_PURPOSE_PII_CAT_ASSOC_CNT UNIQUE (PURPOSE_ID, CM_PII_CATEGORY_ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_SP_PURPOSE_PII_CAT_ASSOC]') AND TYPE IN (N'U'))
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
CONSTRAINT CM_SP_PURPOSE_PII_CAT_ASSOC_CNT UNIQUE (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID),
FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID),
FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
);
IF NOT EXISTS ( SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[CM_CONSENT_RECEIPT_PROPERTY]') AND TYPE IN (N'U'))
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
CONSTRAINT CM_CONSENT_RECEIPT_PROPERTY_CNT UNIQUE (CONSENT_RECEIPT_ID, NAME),
FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
);
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234');
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234');
-- End of CONSENT-MGT Tables --
-- Start of API-Mgt Tables --
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AM_SUBSCRIBER]') AND TYPE IN (N'U'))
@ -716,7 +1051,7 @@ IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[A
CREATE TABLE AM_SUBSCRIPTION_KEY_MAPPING (
SUBSCRIPTION_ID INTEGER,
ACCESS_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(512),
KEY_TYPE VARCHAR(512) NOT NULL,
FOREIGN KEY(SUBSCRIPTION_ID) REFERENCES AM_SUBSCRIPTION(SUBSCRIPTION_ID) ON UPDATE CASCADE,
PRIMARY KEY(SUBSCRIPTION_ID,ACCESS_TOKEN)
@ -742,7 +1077,7 @@ CREATE TABLE AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INTEGER,
TOKEN_TYPE VARCHAR(30),
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -1072,7 +1407,7 @@ IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[A
CREATE TABLE AM_BLOCK_CONDITIONS (
CONDITION_ID INTEGER IDENTITY(1,1),
TYPE varchar(45) DEFAULT NULL,
VALUE varchar(45) DEFAULT NULL,
VALUE varchar(512) DEFAULT NULL,
ENABLED varchar(45) DEFAULT NULL,
DOMAIN varchar(45) DEFAULT NULL,
UUID VARCHAR(256),
@ -1080,13 +1415,49 @@ CREATE TABLE AM_BLOCK_CONDITIONS (
UNIQUE (UUID)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AM_CERTIFICATE_METADATA]') AND TYPE IN (N'U'))
CREATE TABLE AM_CERTIFICATE_METADATA (
TENANT_ID INTEGER NOT NULL,
ALIAS VARCHAR(45) NOT NULL,
END_POINT VARCHAR(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (ALIAS),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (END_POINT)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AM_APPLICATION_GROUP_MAPPING]') AND TYPE IN (N'U'))
CREATE TABLE AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR(512),
TENANT VARCHAR(255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE ON UPDATE CASCADE
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AM_USAGE_UPLOADED_FILES]') AND TYPE IN (N'U'))
CREATE TABLE AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN VARCHAR(255) NOT NULL,
FILE_NAME VARCHAR(255) NOT NULL,
FILE_TIMESTAMP DATETIME DEFAULT GETDATE(),
FILE_PROCESSED INTEGER DEFAULT 0,
FILE_CONTENT VARBINARY(MAX) DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
);
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AM_API_LC_PUBLISH_EVENTS]') AND TYPE IN (N'U'))
CREATE TABLE AM_API_LC_PUBLISH_EVENTS (
ID INTEGER NOT NULL IDENTITY,
TENANT_DOMAIN VARCHAR(255) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME DATETIME DEFAULT GETDATE(),
PRIMARY KEY (ID)
);
-- End of API-MGT Tables --
--Permance indexes start--
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME);
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN);
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE);
create index IDX_AAI_CTX on AM_API (CONTEXT);
create index IDX_AAKM_CK on AM_APPLICATION_KEY_MAPPING (CONSUMER_KEY);

View File

@ -10,7 +10,7 @@ INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server');
CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY VARCHAR(255),
CONSUMER_SECRET VARCHAR(512),
CONSUMER_SECRET VARCHAR(2048),
USERNAME VARCHAR(255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -20,10 +20,21 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR(255),
REQUEST_TOKEN_SECRET VARCHAR(512),
@ -51,8 +62,8 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_ACCESS_TOKEN (
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR(255),
REFRESH_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(2048),
REFRESH_TOKEN VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
@ -67,6 +78,8 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR(512),
REFRESH_TOKEN_HASH VARCHAR(512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TENANT_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -77,12 +90,14 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED);
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR(512),
AUTHORIZATION_CODE VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR(1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
@ -93,10 +108,13 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR(255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR(512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH,CONSUMER_KEY_ID);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255),
TOKEN_SCOPE VARCHAR (60),
@ -106,21 +124,26 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE (
SCOPE_ID INT(11) NOT NULL AUTO_INCREMENT,
SCOPE_KEY VARCHAR(100) NOT NULL,
NAME VARCHAR(255) NULL,
DESCRIPTION VARCHAR(512) NULL,
TENANT_ID INT(11) NOT NULL DEFAULT 0,
ROLES VARCHAR (500) NULL,
SCOPE_ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR(255) NOT NULL,
SCOPE_ID INTEGER (11) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_SCIM_GROUP (
@ -175,7 +198,7 @@ CREATE TABLE IF NOT EXISTS IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY)
)ENGINE INNODB;
@ -222,6 +245,7 @@ CREATE TABLE IF NOT EXISTS SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -247,6 +271,7 @@ CREATE TABLE IF NOT EXISTS SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -283,6 +308,7 @@ CREATE TABLE IF NOT EXISTS SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID)
)ENGINE INNODB;
@ -318,11 +344,21 @@ CREATE TABLE IF NOT EXISTS SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
)ENGINE INNODB;
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE;
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER AUTO_INCREMENT NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) DEFAULT '0',
PRIMARY KEY (ID));
CREATE TABLE IF NOT EXISTS IDP (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -348,8 +384,6 @@ CREATE TABLE IF NOT EXISTS IDP (
UNIQUE (TENANT_ID, NAME)
)ENGINE INNODB;
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost');
CREATE TABLE IF NOT EXISTS IDP_ROLE (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -405,10 +439,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR (
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
)ENGINE INNODB;
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests');
CREATE TABLE IF NOT EXISTS IDP_METADATA (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -421,9 +451,6 @@ CREATE TABLE IF NOT EXISTS IDP_METADATA (
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
)ENGINE INNODB;
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout');
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout');
CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -436,9 +463,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE
)ENGINE INNODB;
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0');
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0');
CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -446,6 +470,7 @@ CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
@ -539,7 +564,7 @@ CREATE TABLE IF NOT EXISTS WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
CALLBACK_USERNAME VARCHAR (45),
CALLBACK_PASSWORD VARCHAR (255),
@ -601,8 +626,279 @@ CREATE TABLE IF NOT EXISTS WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REMAINING_SETS VARCHAR(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_PASSWORD_HISTORY_DATA (
ID INTEGER NOT NULL AUTO_INCREMENT,
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR(255),
HASH VARCHAR(255) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_DIALECT (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPING (
ID INTEGER NOT NULL AUTO_INCREMENT,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_SAML2_ASSERTION_STORE (
ID INTEGER NOT NULL AUTO_INCREMENT,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME TIMESTAMP NOT NULL ,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (JWT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_ID INTEGER,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) DEFAULT '0' ,
VALUE VARCHAR(255) ,
IS_USERINFO CHAR(1) DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE (ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_CLAIMS_ID INTEGER ,
CLAIM_VALUES VARCHAR(255) ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CERTIFICATE (
ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID)
)ENGINE INNODB;
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT '-1234',
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
)ENGINE INNODB;
CREATE TABLE CM_PURPOSE (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER AUTO_INCREMENT,
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER AUTO_INCREMENT,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
UNIQUE KEY (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
)ENGINE INNODB;
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (PURPOSE_ID, CM_PII_CATEGORY_ID)
)ENGINE INNODB;
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
)ENGINE INNODB;
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
UNIQUE KEY (CONSENT_RECEIPT_ID, NAME)
)ENGINE INNODB;
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID);
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234');
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234');
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables --
CREATE TABLE IF NOT EXISTS AM_SUBSCRIBER (
SUBSCRIBER_ID INTEGER AUTO_INCREMENT,
@ -686,7 +982,7 @@ CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION (
CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION_KEY_MAPPING (
SUBSCRIPTION_ID INTEGER,
ACCESS_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(512),
KEY_TYPE VARCHAR(255) NOT NULL,
FOREIGN KEY(SUBSCRIPTION_ID) REFERENCES AM_SUBSCRIPTION(SUBSCRIPTION_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
PRIMARY KEY(SUBSCRIPTION_ID,ACCESS_TOKEN)
@ -781,7 +1077,7 @@ CREATE TABLE IF NOT EXISTS AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INT,
TOKEN_TYPE VARCHAR(30),
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -1010,7 +1306,7 @@ ENGINE = InnoDB;
CREATE TABLE `AM_BLOCK_CONDITIONS` (
`CONDITION_ID` int(11) NOT NULL AUTO_INCREMENT,
`TYPE` varchar(45) DEFAULT NULL,
`VALUE` varchar(45) DEFAULT NULL,
`VALUE` varchar(512) DEFAULT NULL,
`ENABLED` varchar(45) DEFAULT NULL,
`DOMAIN` varchar(45) DEFAULT NULL,
`UUID` VARCHAR(254),
@ -1018,17 +1314,47 @@ CREATE TABLE `AM_BLOCK_CONDITIONS` (
UNIQUE (`UUID`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `AM_CERTIFICATE_METADATA` (
`TENANT_ID` INT(11) NOT NULL,
`ALIAS` VARCHAR(45) NOT NULL,
`END_POINT` VARCHAR(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (`ALIAS`),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (`END_POINT`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR(512)NOT NULL,
TENANT VARCHAR(255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN varchar(255) NOT NULL,
FILE_NAME varchar(255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED tinyint(1) DEFAULT FALSE,
FILE_CONTENT MEDIUMBLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS AM_API_LC_PUBLISH_EVENTS (
ID INTEGER(11) NOT NULL AUTO_INCREMENT,
TENANT_DOMAIN VARCHAR(500) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB;
-- End of API-MGT Tables --
-- Performance indexes start--
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME);
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN);
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE);
create index IDX_AAI_CTX on AM_API (CONTEXT);
create index IDX_AAKM_CK on AM_APPLICATION_KEY_MAPPING (CONSUMER_KEY);
create index IDX_AAUM_AI on AM_API_URL_MAPPING (API_ID);
create index IDX_AAUM_TT on AM_API_URL_MAPPING (THROTTLING_TIER);
create index IDX_AATP_DQT on AM_API_THROTTLE_POLICY (DEFAULT_QUOTA_TYPE);
create index IDX_ACG_QT on AM_CONDITION_GROUP (QUOTA_TYPE);
create index IDX_APS_QT on AM_POLICY_SUBSCRIPTION (QUOTA_TYPE);

View File

@ -10,7 +10,7 @@ INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server');
CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY VARCHAR(255),
CONSUMER_SECRET VARCHAR(512),
CONSUMER_SECRET VARCHAR(2048),
USERNAME VARCHAR(255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -20,10 +20,21 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR(255),
REQUEST_TOKEN_SECRET VARCHAR(512),
@ -51,22 +62,24 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_ACCESS_TOKEN (
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR(255),
REFRESH_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(2048),
REFRESH_TOKEN VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
USER_TYPE VARCHAR (25),
GRANT_TYPE VARCHAR (50),
TIME_CREATED TIMESTAMP,
REFRESH_TOKEN_TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REFRESH_TOKEN_TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
VALIDITY_PERIOD BIGINT,
REFRESH_TOKEN_VALIDITY_PERIOD BIGINT,
TOKEN_SCOPE_HASH VARCHAR(32),
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR(512),
REFRESH_TOKEN_HASH VARCHAR(512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TENANT_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -77,12 +90,14 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED);
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR(512),
AUTHORIZATION_CODE VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR(1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
@ -93,10 +108,13 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR(255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR(512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH,CONSUMER_KEY_ID);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255),
TOKEN_SCOPE VARCHAR (60),
@ -106,21 +124,26 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE (
SCOPE_ID INT(11) NOT NULL AUTO_INCREMENT,
SCOPE_KEY VARCHAR(100) NOT NULL,
NAME VARCHAR(255) NULL,
DESCRIPTION VARCHAR(512) NULL,
TENANT_ID INT(11) NOT NULL DEFAULT 0,
ROLES VARCHAR (500) NULL,
SCOPE_ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR(255) NOT NULL,
SCOPE_ID INTEGER (11) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_SCIM_GROUP (
@ -175,7 +198,7 @@ CREATE TABLE IF NOT EXISTS IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY)
)ENGINE INNODB;
@ -222,6 +245,7 @@ CREATE TABLE IF NOT EXISTS SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -247,6 +271,7 @@ CREATE TABLE IF NOT EXISTS SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -283,6 +308,7 @@ CREATE TABLE IF NOT EXISTS SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID)
)ENGINE INNODB;
@ -318,11 +344,21 @@ CREATE TABLE IF NOT EXISTS SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
)ENGINE INNODB;
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE;
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER AUTO_INCREMENT NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID));
CREATE TABLE IF NOT EXISTS IDP (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -348,8 +384,6 @@ CREATE TABLE IF NOT EXISTS IDP (
UNIQUE (TENANT_ID, NAME)
)ENGINE INNODB;
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost');
CREATE TABLE IF NOT EXISTS IDP_ROLE (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -405,10 +439,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR (
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
)ENGINE INNODB;
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests');
CREATE TABLE IF NOT EXISTS IDP_METADATA (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -421,9 +451,6 @@ CREATE TABLE IF NOT EXISTS IDP_METADATA (
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
)ENGINE INNODB;
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout');
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout');
CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -436,9 +463,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE
)ENGINE INNODB;
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0');
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0');
CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -446,6 +470,7 @@ CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
@ -539,7 +564,7 @@ CREATE TABLE IF NOT EXISTS WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
CALLBACK_USERNAME VARCHAR (45),
CALLBACK_PASSWORD VARCHAR (255),
@ -601,8 +626,279 @@ CREATE TABLE IF NOT EXISTS WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REMAINING_SETS VARCHAR(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_PASSWORD_HISTORY_DATA (
ID INTEGER NOT NULL AUTO_INCREMENT,
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR(255),
HASH VARCHAR(255) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_DIALECT (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPING (
ID INTEGER NOT NULL AUTO_INCREMENT,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_SAML2_ASSERTION_STORE (
ID INTEGER NOT NULL AUTO_INCREMENT,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME TIMESTAMP NOT NULL ,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (JWT_ID)
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_ID INTEGER,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) NOT NULL DEFAULT '0' ,
VALUE VARCHAR(255) ,
IS_USERINFO CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE (ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_CLAIMS_ID INTEGER ,
CLAIM_VALUES VARCHAR(255) ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE
)ENGINE INNODB;
CREATE TABLE IF NOT EXISTS IDN_CERTIFICATE (
ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID)
)ENGINE INNODB;
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT '-1234',
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
)ENGINE INNODB;
CREATE TABLE CM_PURPOSE (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER AUTO_INCREMENT,
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER AUTO_INCREMENT,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
UNIQUE KEY (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
)ENGINE INNODB;
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
)ENGINE INNODB;
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (PURPOSE_ID, CM_PII_CATEGORY_ID)
)ENGINE INNODB;
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
)ENGINE INNODB;
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
UNIQUE KEY (CONSENT_RECEIPT_ID, NAME)
)ENGINE INNODB;
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID);
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234');
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234');
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables --
CREATE TABLE IF NOT EXISTS AM_SUBSCRIBER (
SUBSCRIBER_ID INTEGER AUTO_INCREMENT,
@ -686,7 +982,7 @@ CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION (
CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION_KEY_MAPPING (
SUBSCRIPTION_ID INTEGER,
ACCESS_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(512),
KEY_TYPE VARCHAR(512) NOT NULL,
FOREIGN KEY(SUBSCRIPTION_ID) REFERENCES AM_SUBSCRIPTION(SUBSCRIPTION_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
PRIMARY KEY(SUBSCRIPTION_ID,ACCESS_TOKEN)
@ -781,7 +1077,7 @@ CREATE TABLE IF NOT EXISTS AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INT,
TOKEN_TYPE VARCHAR(30),
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -1009,7 +1305,7 @@ ENGINE = InnoDB;
CREATE TABLE `AM_BLOCK_CONDITIONS` (
`CONDITION_ID` int(11) NOT NULL AUTO_INCREMENT,
`TYPE` varchar(45) DEFAULT NULL,
`VALUE` varchar(45) DEFAULT NULL,
`VALUE` varchar(512) DEFAULT NULL,
`ENABLED` varchar(45) DEFAULT NULL,
`DOMAIN` varchar(45) DEFAULT NULL,
`UUID` VARCHAR(256),
@ -1017,12 +1313,43 @@ CREATE TABLE `AM_BLOCK_CONDITIONS` (
UNIQUE (`UUID`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `AM_CERTIFICATE_METADATA` (
`TENANT_ID` INT(11) NOT NULL,
`ALIAS` VARCHAR(45) NOT NULL,
`END_POINT` VARCHAR(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (`ALIAS`),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (`END_POINT`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR(512) NOT NULL,
TENANT VARCHAR(255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN varchar(255) NOT NULL,
FILE_NAME varchar(255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED tinyint(1) DEFAULT FALSE,
FILE_CONTENT MEDIUMBLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS AM_API_LC_PUBLISH_EVENTS (
ID INTEGER(11) NOT NULL AUTO_INCREMENT,
TENANT_DOMAIN VARCHAR(500) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB;
-- End of API-MGT Tables --
-- Performance indexes start--
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME);
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN);
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE);
create index IDX_AAI_CTX on AM_API (CONTEXT);
create index IDX_AAKM_CK on AM_APPLICATION_KEY_MAPPING (CONSUMER_KEY);

View File

@ -19,13 +19,24 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR(255),
REQUEST_TOKEN_SECRET VARCHAR(512),
REQUEST_TOKEN_SECRET VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR(1024),
SCOPE VARCHAR(2048),
@ -50,8 +61,8 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_ACCESS_TOKEN (
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR(255),
REFRESH_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(2048),
REFRESH_TOKEN VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
@ -66,6 +77,8 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR(512),
REFRESH_TOKEN_HASH VARCHAR(512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TENANT_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -76,12 +89,14 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED);
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR(512),
AUTHORIZATION_CODE VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR(1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
@ -92,10 +107,13 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR(255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR(512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH,CONSUMER_KEY_ID);
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255),
TOKEN_SCOPE VARCHAR (60),
@ -105,21 +123,26 @@ CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE (
SCOPE_ID INT(11) NOT NULL AUTO_INCREMENT,
SCOPE_KEY VARCHAR(100) NOT NULL,
NAME VARCHAR(255) NULL,
DESCRIPTION VARCHAR(512) NULL,
TENANT_ID INT(11) NOT NULL DEFAULT 0,
ROLES VARCHAR (500) NULL,
SCOPE_ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR(255) NOT NULL,
SCOPE_ID INTEGER (11) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_SCIM_GROUP (
@ -174,7 +197,7 @@ CREATE TABLE IF NOT EXISTS IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY)
)ENGINE NDB;
@ -221,6 +244,7 @@ CREATE TABLE IF NOT EXISTS SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -246,6 +270,7 @@ CREATE TABLE IF NOT EXISTS SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -282,6 +307,7 @@ CREATE TABLE IF NOT EXISTS SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID)
)ENGINE NDB;
@ -317,11 +343,21 @@ CREATE TABLE IF NOT EXISTS SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
)ENGINE NDB;
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE;
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER AUTO_INCREMENT NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) DEFAULT '0',
PRIMARY KEY (ID));
CREATE TABLE IF NOT EXISTS IDP (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -347,8 +383,6 @@ CREATE TABLE IF NOT EXISTS IDP (
UNIQUE (TENANT_ID, NAME)
)ENGINE NDB;
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost');
CREATE TABLE IF NOT EXISTS IDP_ROLE (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -404,10 +438,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR (
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
)ENGINE NDB;
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests');
CREATE TABLE IF NOT EXISTS IDP_METADATA (
ID INTEGER AUTO_INCREMENT,
IDP_ID INTEGER,
@ -420,9 +450,6 @@ CREATE TABLE IF NOT EXISTS IDP_METADATA (
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
)ENGINE NDB;
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout');
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout');
CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -435,9 +462,6 @@ CREATE TABLE IF NOT EXISTS IDP_AUTHENTICATOR_PROPERTY (
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE
)ENGINE NDB;
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0');
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0');
CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
ID INTEGER AUTO_INCREMENT,
TENANT_ID INTEGER,
@ -445,6 +469,7 @@ CREATE TABLE IF NOT EXISTS IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE
@ -538,7 +563,7 @@ CREATE TABLE IF NOT EXISTS WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
CALLBACK_USERNAME VARCHAR (45),
CALLBACK_PASSWORD VARCHAR (255),
@ -600,7 +625,278 @@ CREATE TABLE IF NOT EXISTS WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE
)ENGINE NDB;
-- End of IDN Tables--
CREATE TABLE IF NOT EXISTS IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REMAINING_SETS VARCHAR(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_PASSWORD_HISTORY_DATA (
ID INTEGER NOT NULL AUTO_INCREMENT,
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR(255),
HASH VARCHAR(255) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_DIALECT (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM (
ID INTEGER NOT NULL AUTO_INCREMENT,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_CLAIM_MAPPING (
ID INTEGER NOT NULL AUTO_INCREMENT,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_SAML2_ASSERTION_STORE (
ID INTEGER NOT NULL AUTO_INCREMENT,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME TIMESTAMP NOT NULL ,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (JWT_ID)
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL AUTO_INCREMENT,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER NOT NULL AUTO_INCREMENT,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_ID INTEGER,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) DEFAULT '0' ,
VALUE VARCHAR(255) ,
ESSENTIAL CHAR(1) DEFAULT '0' ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE (ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER NOT NULL AUTO_INCREMENT,
REQ_OBJECT_CLAIMS_ID INTEGER ,
CLAIM_VALUES VARCHAR(255) ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE
)ENGINE NDB;
CREATE TABLE IF NOT EXISTS IDN_CERTIFICATE (
ID INTEGER NOT NULL AUTO_INCREMENT,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID)
)ENGINE NDB;
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT '-1234',
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
)ENGINE NDB;
CREATE TABLE CM_PURPOSE (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER AUTO_INCREMENT,
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (NAME, TENANT_ID),
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER AUTO_INCREMENT,
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT '-1234',
UNIQUE KEY (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER AUTO_INCREMENT,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
UNIQUE KEY (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
)ENGINE NDB;
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
)ENGINE NDB;
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
UNIQUE KEY (PURPOSE_ID, CM_PII_CATEGORY_ID)
)ENGINE NDB;
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
UNIQUE KEY (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
)ENGINE NDB;
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
UNIQUE KEY (CONSENT_RECEIPT_ID, NAME)
)ENGINE NDB;
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID);
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234');
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234');
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables --
CREATE TABLE IF NOT EXISTS AM_SUBSCRIBER (
@ -685,7 +981,7 @@ CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION (
CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION_KEY_MAPPING (
SUBSCRIPTION_ID INTEGER,
ACCESS_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(512),
KEY_TYPE VARCHAR(255) NOT NULL,
FOREIGN KEY(SUBSCRIPTION_ID) REFERENCES AM_SUBSCRIPTION(SUBSCRIPTION_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
PRIMARY KEY(SUBSCRIPTION_ID,ACCESS_TOKEN)
@ -780,7 +1076,7 @@ CREATE TABLE IF NOT EXISTS AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INT,
TOKEN_TYPE VARCHAR(30),
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -1010,7 +1306,7 @@ ENGINE = NDB;
CREATE TABLE `AM_BLOCK_CONDITIONS` (
`CONDITION_ID` int(11) NOT NULL AUTO_INCREMENT,
`TYPE` varchar(45) DEFAULT NULL,
`VALUE` varchar(45) DEFAULT NULL,
`VALUE` varchar(512) DEFAULT NULL,
`ENABLED` varchar(45) DEFAULT NULL,
`DOMAIN` varchar(45) DEFAULT NULL,
`UUID` VARCHAR(254),
@ -1018,12 +1314,43 @@ CREATE TABLE `AM_BLOCK_CONDITIONS` (
UNIQUE (`UUID`)
) ENGINE = NDB;
CREATE TABLE IF NOT EXISTS `AM_CERTIFICATE_METADATA` (
`TENANT_ID` INT(11) NOT NULL,
`ALIAS` VARCHAR(45) NOT NULL,
`END_POINT` VARCHAR(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (`ALIAS`),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (`END_POINT`)
) ENGINE = NDB;
CREATE TABLE IF NOT EXISTS AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR(512) NOT NULL,
TENANT VARCHAR(255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=NDB;
-- End of API-MGT Tables --
CREATE TABLE IF NOT EXISTS AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN varchar(255) NOT NULL,
FILE_NAME varchar(255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED tinyint(1) DEFAULT FALSE,
FILE_CONTENT MEDIUMBLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
) ENGINE=NDB;
CREATE TABLE IF NOT EXISTS AM_API_LC_PUBLISH_EVENTS (
ID INTEGER(11) NOT NULL AUTO_INCREMENT,
TENANT_DOMAIN VARCHAR(500) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL,
PRIMARY KEY (ID)
) ENGINE=NDB;
-- Performance indexes start--
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME);
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN);
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE);
create index IDX_AAI_CTX on AM_API (CONTEXT);
create index IDX_AAKM_CK on AM_APPLICATION_KEY_MAPPING (CONSUMER_KEY);

View File

@ -6,7 +6,6 @@
--
-- Start of IDN Tables --
CREATE TABLE IDN_BASE_TABLE (
PRODUCT_NAME VARCHAR2 (20),
PRIMARY KEY (PRODUCT_NAME))
@ -16,7 +15,7 @@ INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server')
CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
ID INTEGER,
CONSUMER_KEY VARCHAR2 (255),
CONSUMER_SECRET VARCHAR2 (512),
CONSUMER_SECRET VARCHAR2 (2048),
USERNAME VARCHAR2 (255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -26,9 +25,20 @@ CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME NUMBER(19) DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME NUMBER(19) DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME NUMBER(19) DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID))
/
CREATE TABLE IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)
/
CREATE SEQUENCE IDN_OAUTH_CONSUMER_APPS_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_OAUTH_CONSUMER_APPS_TRIG
@ -65,8 +75,8 @@ CREATE TABLE IDN_OAUTH1A_ACCESS_TOKEN (
/
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR2 (255),
REFRESH_TOKEN VARCHAR2 (255),
ACCESS_TOKEN VARCHAR2 (2048),
REFRESH_TOKEN VARCHAR2 (2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR2 (100),
TENANT_ID INTEGER,
@ -81,6 +91,8 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR2 (25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR2 (512),
REFRESH_TOKEN_HASH VARCHAR2 (512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TOKEN_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -88,14 +100,16 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
/
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED)
/
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH)
/
CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER, TOKEN_STATE, USER_TYPE)
/
CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR2 (512),
AUTHORIZATION_CODE VARCHAR2 (2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR2 (1024),
SCOPE VARCHAR2(2048),
SCOPE VARCHAR2(4096),
AUTHZ_USER VARCHAR2 (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR2 (50),
@ -106,9 +120,12 @@ CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR (255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR2 (512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE)
/
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH,CONSUMER_KEY_ID)
/
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR2 (255),
TOKEN_SCOPE VARCHAR2 (60),
@ -117,12 +134,11 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE)
/
CREATE TABLE IDN_OAUTH2_SCOPE (
SCOPE_ID INTEGER,
SCOPE_KEY VARCHAR2 (100) NOT NULL,
NAME VARCHAR2 (255) NULL,
DESCRIPTION VARCHAR2 (512) NULL,
TENANT_ID INTEGER DEFAULT 0,
ROLES VARCHAR2 (500) NULL,
SCOPE_ID INTEGER NOT NULL,
NAME VARCHAR2(255) NOT NULL,
DISPLAY_NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(512),
TENANT_ID INTEGER DEFAULT -1 NOT NULL,
PRIMARY KEY (SCOPE_ID))
/
CREATE SEQUENCE IDN_OAUTH2_SCOPE_SEQUENCE START WITH 1 INCREMENT BY 1 NOCACHE
@ -136,6 +152,11 @@ CREATE OR REPLACE TRIGGER IDN_OAUTH2_SCOPE_TRIGGER
SELECT IDN_OAUTH2_SCOPE_SEQUENCE.nextval INTO :NEW.SCOPE_ID FROM dual;
END;
/
CREATE TABLE IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR2(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE)
/
CREATE TABLE IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR2 (255) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
@ -214,7 +235,7 @@ CREATE TABLE IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY))
/
CREATE TABLE IDN_IDENTITY_META_DATA (
@ -259,6 +280,7 @@ CREATE TABLE SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -307,6 +329,7 @@ CREATE TABLE SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -345,7 +368,7 @@ CREATE OR REPLACE TRIGGER SP_AUTH_STEP_TRIG
SELECT SP_AUTH_STEP_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
ALTER TABLE SP_AUTH_STEP ADD CONSTRAINT APPLICATION_ID_CONST_STEP FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
ALTER TABLE SP_AUTH_STEP ADD CONSTRAINT APPLICATION_ID_CONSTRAINT_STEP FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
/
CREATE TABLE SP_FEDERATED_IDP (
ID INTEGER NOT NULL,
@ -362,6 +385,7 @@ CREATE TABLE SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID))
/
@ -427,6 +451,7 @@ CREATE TABLE SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) DEFAULT '0',
BLOCKING CHAR(1) DEFAULT '0',
RULE_ENABLED CHAR(1) DEFAULT '0' NOT NULL,
PRIMARY KEY (ID))
/
CREATE SEQUENCE SP_PROV_CONNECTOR_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
@ -440,7 +465,30 @@ CREATE OR REPLACE TRIGGER SP_PROV_CONNECTOR_TRIG
SELECT SP_PROV_CONNECTOR_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONST FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
/
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) DEFAULT '0',
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE SP_AUTH_SCRIPT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER SP_AUTH_SCRIPT_TRIG
BEFORE INSERT
ON SP_AUTH_SCRIPT
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT SP_AUTH_SCRIPT_SEQ.nextval
INTO :NEW.ID
FROM dual;
END;
/
CREATE TABLE IDP (
ID INTEGER,
@ -488,8 +536,6 @@ CREATE TABLE IDP_ROLE (
/
CREATE SEQUENCE IDP_ROLE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost')
/
CREATE OR REPLACE TRIGGER IDP_ROLE_TRIG
BEFORE INSERT
ON IDP_ROLE
@ -584,12 +630,6 @@ CREATE OR REPLACE TRIGGER IDP_AUTHENTICATOR_TRIG
SELECT IDP_AUTHENTICATOR_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso')
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties')
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests')
/
CREATE TABLE IDP_METADATA (
ID INTEGER,
IDP_ID INTEGER,
@ -612,11 +652,6 @@ CREATE OR REPLACE TRIGGER IDP_METADATA_TRIG
SELECT IDP_METADATA_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout')
/
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout')
/
CREATE TABLE IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER,
TENANT_ID INTEGER,
@ -639,10 +674,6 @@ CREATE OR REPLACE TRIGGER IDP_AUTHENTICATOR_PROP_TRIG
SELECT IDP_AUTHENTICATOR_PROP_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0')
/
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0')
/
CREATE TABLE IDP_PROVISIONING_CONFIG (
ID INTEGER,
TENANT_ID INTEGER,
@ -650,6 +681,7 @@ CREATE TABLE IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE)
@ -795,7 +827,7 @@ CREATE TABLE WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR2(255),
HOST_URL_WORKER VARCHAR2(255),
USERNAME VARCHAR2(45),
PASSWORD VARCHAR2(255),
PASSWORD VARCHAR2(1023),
CALLBACK_HOST VARCHAR2 (45),
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (PROFILE_NAME, TENANT_ID))
@ -868,8 +900,472 @@ CREATE TABLE WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (WORKFLOW_ID) REFERENCES WF_WORKFLOW(ID)ON DELETE CASCADE,
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE)
/
CREATE TABLE IDN_RECOVERY_DATA (
USER_NAME VARCHAR2(255) NOT NULL,
USER_DOMAIN VARCHAR2(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR2(255) NOT NULL,
SCENARIO VARCHAR2(255) NOT NULL,
STEP VARCHAR2(127) NOT NULL,
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
REMAINING_SETS VARCHAR2(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
)
/
CREATE TABLE IDN_PASSWORD_HISTORY_DATA (
ID INTEGER,
USER_NAME VARCHAR2(255) NOT NULL,
USER_DOMAIN VARCHAR2(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR2(255),
HASH VARCHAR2(255) NOT NULL,
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY(ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
)
/
CREATE SEQUENCE IDN_PASSWORD_HISTORY_DATA_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_PASSWORD_HISTORY_DATA_TRIG
BEFORE INSERT
ON IDN_PASSWORD_HISTORY_DATA
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_PASSWORD_HISTORY_DATA_SEQ.nextval
INTO :NEW.ID
FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_DIALECT (
ID INTEGER,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_DIALECT_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_DIALECT_TRIG
BEFORE INSERT
ON IDN_CLAIM_DIALECT
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_DIALECT_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM (
ID INTEGER,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_TRIG
BEFORE INSERT
ON IDN_CLAIM
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_MAPPED_ATTR_TRIG
BEFORE INSERT
ON IDN_CLAIM_MAPPED_ATTRIBUTE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_PROPERTY (
ID INTEGER,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_PROPERTY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_PROPERTY_TRIG
BEFORE INSERT
ON IDN_CLAIM_PROPERTY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_PROPERTY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_MAPPING (
ID INTEGER,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_MAPPING_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_MAPPING_TRIG
BEFORE INSERT
ON IDN_CLAIM_MAPPING
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_MAPPING_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_SAML2_ASSERTION_STORE (
ID INTEGER,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR2(4000) ,
PRIMARY KEY (ID))
/
CREATE SEQUENCE IDN_SAML2_ASSERTION_STORE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_SAML2_ASSERTION_STORE_TRIG
BEFORE INSERT
ON IDN_SAML2_ASSERTION_STORE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_SAML2_ASSERTION_STORE_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME TIMESTAMP NOT NULL,
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (JWT_ID))
/
CREATE TABLE IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_PROPERTY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_OIDC_PROPERTY_TRIG
BEFORE INSERT
ON IDN_OIDC_PROPERTY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_PROPERTY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJECT_REF_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_OIDC_REQ_OBJ_REF_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJECT_REFERENCE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_REQ_OBJECT_REF_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER,
REQ_OBJECT_ID INTEGER ,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) DEFAULT '0',
VALUE VARCHAR(255),
IS_USERINFO CHAR(1) DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE(ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJ_CLAIMS_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_OIDC_REQ_OBJ_CLAIMS_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJECT_CLAIMS
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_REQ_OBJ_CLAIMS_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER,
REQ_OBJECT_CLAIMS_ID INTEGER,
CLAIM_VALUES VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJ_CLM_VAL_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_OIDC_REQ_OBJ_CLM_VAL_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJ_CLAIM_VALUES
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_REQ_OBJ_CLM_VAL_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CERTIFICATE (
ID INTEGER,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CERTIFICATE_SEQUENCE START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_CERTIFICATE_TRIGGER
BEFORE INSERT
ON IDN_CERTIFICATE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CERTIFICATE_SEQUENCE.nextval INTO :NEW.ID FROM dual;
END;
/
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER,
NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT PII_CATEGORY_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PII_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER CM_PII_CATEGORY_TRIG
BEFORE INSERT
ON CM_PII_CATEGORY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_PII_CATEGORY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR2(255) NOT NULL,
VERSION VARCHAR2(255) NOT NULL,
JURISDICTION VARCHAR2(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR2(255) NOT NULL,
LANGUAGE VARCHAR2(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR2(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT -1234,
POLICY_URL VARCHAR2(255) NOT NULL,
STATE VARCHAR2(255) NOT NULL,
PII_CONTROLLER VARCHAR2(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
)
/
CREATE TABLE CM_PURPOSE (
ID INTEGER,
NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1023),
TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT PURPOSE_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PURPOSE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER CM_PURPOSE_TRIG
BEFORE INSERT
ON CM_PURPOSE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_PURPOSE_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER,
NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1023),
TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT PURPOSE_CATEGORY_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PURPOSE_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER CM_PURPOSE_CATEGORY_TRIG
BEFORE INSERT
ON CM_PURPOSE_CATEGORY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_PURPOSE_CATEGORY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER,
CONSENT_RECEIPT_ID VARCHAR2(255) NOT NULL,
SP_NAME VARCHAR2(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT RECEIPT_SP_ASSOC_CONSTRAINT UNIQUE (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_RECEIPT_SP_ASSOC_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER CM_RECEIPT_SP_ASSOC_TRIG
BEFORE INSERT
ON CM_RECEIPT_SP_ASSOC
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_RECEIPT_SP_ASSOC_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR2(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR2(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR2(255),
CONSTRAINT SP_PURPOSE_ASSOC UNIQUE (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_SP_PURPOSE_ASSOC_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER CM_SP_PURPOSE_ASSOC_TRIG
BEFORE INSERT
ON CM_SP_PURPOSE_ASSOC
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_SP_PURPOSE_ASSOC_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT SP_PUS_PS_CAT_ASSOC UNIQUE (SP_PURPOSE_ASSOC_ID,PURPOSE_CATEGORY_ID)
)
/
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT PURPOSE_PII_CAT_ASSOC UNIQUE (PURPOSE_ID, CM_PII_CATEGORY_ID)
)
/
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
CONSTRAINT SP_PURPOSE_PII_CATEGORY_ASSOC UNIQUE (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
)
/
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR2(255) NOT NULL,
NAME VARCHAR2(255) NOT NULL,
VALUE VARCHAR2(1023) NOT NULL,
CONSTRAINT CONSENT_RECEIPT_PROPERTY UNIQUE (CONSENT_RECEIPT_ID, NAME)
)
/
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
/
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID)
/
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID)
/
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID)
/
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
/
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234')
/
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234')
/
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables--
CREATE TABLE AM_SUBSCRIBER (
SUBSCRIBER_ID INTEGER,
@ -1048,7 +1544,7 @@ CREATE TABLE AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR2(255) NOT NULL,
APP_ID INTEGER,
TOKEN_TYPE VARCHAR2(30),
TOKEN_SCOPE VARCHAR2(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR2(1500) DEFAULT 'default',
INPUTS VARCHAR2(1024),
ALLOWED_DOMAINS VARCHAR2(256),
VALIDITY_PERIOD NUMBER(19),
@ -1594,7 +2090,7 @@ END;
CREATE TABLE AM_BLOCK_CONDITIONS (
CONDITION_ID INTEGER NOT NULL,
TYPE varchar2(45) DEFAULT NULL,
VALUE varchar2(45) DEFAULT NULL,
VALUE varchar2(512) DEFAULT NULL,
ENABLED varchar2(45) DEFAULT NULL,
DOMAIN varchar2(45) DEFAULT NULL,
UUID VARCHAR2(256),
@ -1613,6 +2109,54 @@ BEGIN
END;
/
CREATE TABLE AM_CERTIFICATE_METADATA (
TENANT_ID INTEGER NOT NULL,
ALIAS VARCHAR2(45) NOT NULL,
END_POINT VARCHAR2(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (ALIAS),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (END_POINT)
)
/
CREATE TABLE AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR2(512) NOT NULL,
TENANT VARCHAR2 (255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE
)
/
CREATE TABLE AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN VARCHAR2 (255) NOT NULL,
FILE_NAME VARCHAR2 (255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED INTEGER DEFAULT 0,
FILE_CONTENT BLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP))
/
CREATE TABLE AM_API_LC_PUBLISH_EVENTS (
ID INTEGER,
TENANT_DOMAIN VARCHAR2 (500) NOT NULL,
API_ID VARCHAR2 (500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL,
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE AM_API_LC_PUBLISH_EVENTS_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER AM_API_LC_PUBLISH_EVENTS_TRIG
BEFORE INSERT
ON AM_API_LC_PUBLISH_EVENTS
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT AM_API_LC_PUBLISH_EVENTS_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
-- End of API-MGT Tables --
--permance indexes start--
@ -1644,4 +2188,3 @@ create index IDX_APA_QT on AM_POLICY_APPLICATION (QUOTA_TYPE)
create index IDX_AA_AT_CB on AM_APPLICATION (APPLICATION_TIER,CREATED_BY)
/
-- Performance indexes end--

View File

@ -15,7 +15,7 @@ INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server')
CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
ID INTEGER,
CONSUMER_KEY VARCHAR2 (255),
CONSUMER_SECRET VARCHAR2 (512),
CONSUMER_SECRET VARCHAR2 (2048),
USERNAME VARCHAR2 (255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -25,9 +25,20 @@ CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME NUMBER(19) DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME NUMBER(19) DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME NUMBER(19) DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID))
/
CREATE TABLE IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
)
/
CREATE SEQUENCE IDN_OAUTH_CONSUMER_APPS_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_OAUTH_CONSUMER_APPS_TRIG
@ -64,8 +75,8 @@ CREATE TABLE IDN_OAUTH1A_ACCESS_TOKEN (
/
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR2 (255),
REFRESH_TOKEN VARCHAR2 (255),
ACCESS_TOKEN VARCHAR2 (2048),
REFRESH_TOKEN VARCHAR2 (2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR2 (100),
TENANT_ID INTEGER,
@ -80,6 +91,8 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR2 (25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR2 (512),
REFRESH_TOKEN_HASH VARCHAR2 (512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TOKEN_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -89,12 +102,14 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
/
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED)
/
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH)
/
CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR2 (512),
AUTHORIZATION_CODE VARCHAR2 (2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR2 (1024),
SCOPE VARCHAR2(2048),
SCOPE VARCHAR2(4096),
AUTHZ_USER VARCHAR2 (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR2(50),
@ -105,9 +120,12 @@ CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR (255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR2 (512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE)
/
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH, CONSUMER_KEY_ID)
/
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR2 (255),
TOKEN_SCOPE VARCHAR2 (60),
@ -116,12 +134,11 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE)
/
CREATE TABLE IDN_OAUTH2_SCOPE (
SCOPE_ID INTEGER,
SCOPE_KEY VARCHAR2 (100) NOT NULL,
NAME VARCHAR2 (255) NULL,
DESCRIPTION VARCHAR2 (512) NULL,
TENANT_ID INTEGER DEFAULT 0,
ROLES VARCHAR2 (500) NULL,
SCOPE_ID INTEGER NOT NULL,
NAME VARCHAR2(255) NOT NULL,
DISPLAY_NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(512),
TENANT_ID INTEGER DEFAULT -1 NOT NULL,
PRIMARY KEY (SCOPE_ID))
/
CREATE SEQUENCE IDN_OAUTH2_SCOPE_SEQUENCE START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
@ -135,6 +152,11 @@ CREATE OR REPLACE TRIGGER IDN_OAUTH2_SCOPE_TRIGGER
SELECT IDN_OAUTH2_SCOPE_SEQUENCE.nextval INTO :NEW.SCOPE_ID FROM dual;
END;
/
CREATE TABLE IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR2(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE)
/
CREATE TABLE IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR2 (255) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
@ -213,7 +235,7 @@ CREATE TABLE IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY))
/
CREATE TABLE IDN_IDENTITY_META_DATA (
@ -258,6 +280,7 @@ CREATE TABLE SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -305,6 +328,7 @@ CREATE TABLE SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -360,6 +384,7 @@ CREATE TABLE SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID))
/
@ -425,6 +450,7 @@ CREATE TABLE SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) DEFAULT '0',
BLOCKING CHAR(1) DEFAULT '0',
RULE_ENABLED CHAR(1) DEFAULT '0' NOT NULL,
PRIMARY KEY (ID))
/
CREATE SEQUENCE SP_PROV_CONNECTOR_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
@ -440,6 +466,27 @@ CREATE OR REPLACE TRIGGER SP_PROV_CONNECTOR_TRIG
/
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE
/
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BLOB DEFAULT NULL,
IS_ENABLED CHAR(1) DEFAULT '0',
PRIMARY KEY (ID))
/
CREATE SEQUENCE SP_AUTH_SCRIPT_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER SP_AUTH_SCRIPT_TRIG
BEFORE INSERT
ON SP_AUTH_SCRIPT
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT SP_AUTH_SCRIPT_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDP (
ID INTEGER,
TENANT_ID INTEGER,
@ -476,8 +523,6 @@ CREATE OR REPLACE TRIGGER IDP_TRIG
END;
/
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost')
/
CREATE TABLE IDP_ROLE (
ID INTEGER,
IDP_ID INTEGER,
@ -583,12 +628,6 @@ CREATE OR REPLACE TRIGGER IDP_AUTHENTICATOR_TRIG
SELECT IDP_AUTHENTICATOR_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso')
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties')
/
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests')
/
CREATE TABLE IDP_METADATA (
ID INTEGER,
IDP_ID INTEGER,
@ -611,10 +650,6 @@ CREATE OR REPLACE TRIGGER IDP_METADATA_TRIG
SELECT IDP_METADATA_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout')
/
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout')
/
CREATE TABLE IDP_AUTHENTICATOR_PROPERTY (
ID INTEGER,
@ -638,10 +673,6 @@ CREATE OR REPLACE TRIGGER IDP_AUTHENTICATOR_PROP_TRIG
SELECT IDP_AUTHENTICATOR_PROP_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0')
/
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0')
/
CREATE TABLE IDP_PROVISIONING_CONFIG (
ID INTEGER,
TENANT_ID INTEGER,
@ -649,6 +680,7 @@ CREATE TABLE IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE)
@ -792,7 +824,7 @@ CREATE TABLE WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR2(255),
HOST_URL_WORKER VARCHAR2(255),
USERNAME VARCHAR2(45),
PASSWORD VARCHAR2(255),
PASSWORD VARCHAR2(1023),
CALLBACK_HOST VARCHAR2 (45),
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (PROFILE_NAME, TENANT_ID))
@ -866,8 +898,473 @@ CREATE TABLE WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (WORKFLOW_ID) REFERENCES WF_WORKFLOW(ID)ON DELETE CASCADE,
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE)
/
CREATE TABLE IDN_RECOVERY_DATA (
USER_NAME VARCHAR2(255) NOT NULL,
USER_DOMAIN VARCHAR2(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR2(255) NOT NULL,
SCENARIO VARCHAR2(255) NOT NULL,
STEP VARCHAR2(127) NOT NULL,
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
REMAINING_SETS VARCHAR2(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
)
/
CREATE TABLE IDN_PASSWORD_HISTORY_DATA (
ID INTEGER,
USER_NAME VARCHAR2(255) NOT NULL,
USER_DOMAIN VARCHAR2(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR2(255),
HASH VARCHAR2(255) NOT NULL,
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
)
/
CREATE SEQUENCE IDN_PASSWORD_HISTORY_DATA_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_PASSWORD_HISTORY_DATA_TRIG
BEFORE INSERT
ON IDN_PASSWORD_HISTORY_DATA
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_PASSWORD_HISTORY_DATA_SEQ.nextval
INTO :NEW.ID
FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_DIALECT (
ID INTEGER,
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_DIALECT_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_DIALECT_TRIG
BEFORE INSERT
ON IDN_CLAIM_DIALECT
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_DIALECT_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM (
ID INTEGER,
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_TRIG
BEFORE INSERT
ON IDN_CLAIM
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER,
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_MAPPED_ATTR_TRIG
BEFORE INSERT
ON IDN_CLAIM_MAPPED_ATTRIBUTE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_PROPERTY (
ID INTEGER,
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_PROPERTY_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_PROPERTY_TRIG
BEFORE INSERT
ON IDN_CLAIM_PROPERTY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_PROPERTY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CLAIM_MAPPING (
ID INTEGER,
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID))
/
CREATE SEQUENCE IDN_CLAIM_MAPPING_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_CLAIM_MAPPING_TRIG
BEFORE INSERT
ON IDN_CLAIM_MAPPING
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CLAIM_MAPPING_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_SAML2_ASSERTION_STORE (
ID INTEGER,
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR2(4000) ,
PRIMARY KEY (ID))
/
CREATE SEQUENCE IDN_SAML2_ASSERTION_STORE_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_SAML2_ASSERTION_STORE_TRIG
BEFORE INSERT
ON IDN_SAML2_ASSERTION_STORE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_SAML2_ASSERTION_STORE_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_JTI (
JWT_ID VARCHAR(255) ,
EXP_TIME TIMESTAMP NOT NULL,
TIME_CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (JWT_ID))
/
CREATE TABLE IDN_OIDC_PROPERTY (
ID INTEGER NOT NULL,
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID) ,
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_PROPERTY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
/
CREATE OR REPLACE TRIGGER IDN_OIDC_PROPERTY_TRIG
BEFORE INSERT
ON IDN_OIDC_PROPERTY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_PROPERTY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER,
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJECT_REF_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_OIDC_REQ_OBJ_REF_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJECT_REFERENCE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_REQ_OBJECT_REF_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER,
REQ_OBJECT_ID INTEGER ,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) DEFAULT '0',
VALUE VARCHAR(255),
IS_USERINFO CHAR(1) DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE(ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJ_CLAIMS_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_OIDC_REQ_OBJ_CLAIMS_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJECT_CLAIMS
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_REQ_OBJ_CLAIMS_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER,
REQ_OBJECT_CLAIMS_ID INTEGER,
CLAIM_VALUES VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE)
/
CREATE SEQUENCE IDN_OIDC_REQ_OBJ_CLM_VAL_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_OIDC_REQ_OBJ_CLM_VAL_TRIG
BEFORE INSERT
ON IDN_OIDC_REQ_OBJ_CLAIM_VALUES
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_OIDC_REQ_OBJ_CLM_VAL_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE IDN_CERTIFICATE (
ID INTEGER,
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BLOB,
TENANT_ID INTEGER DEFAULT 0,
PRIMARY KEY(ID),
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID))
/
CREATE SEQUENCE IDN_CERTIFICATE_SEQUENCE START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER IDN_CERTIFICATE_TRIGGER
BEFORE INSERT
ON IDN_CERTIFICATE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT IDN_CERTIFICATE_SEQUENCE.nextval INTO :NEW.ID FROM dual;
END;
/
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER,
NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT PII_CATEGORY_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PII_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER CM_PII_CATEGORY_TRIG
BEFORE INSERT
ON CM_PII_CATEGORY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_PII_CATEGORY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR2(255) NOT NULL,
VERSION VARCHAR2(255) NOT NULL,
JURISDICTION VARCHAR2(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR2(255) NOT NULL,
LANGUAGE VARCHAR2(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR2(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT -1234,
POLICY_URL VARCHAR2(255) NOT NULL,
STATE VARCHAR2(255) NOT NULL,
PII_CONTROLLER VARCHAR2(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
)
/
CREATE TABLE CM_PURPOSE (
ID INTEGER,
NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1023),
TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT PURPOSE_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PURPOSE_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER CM_PURPOSE_TRIG
BEFORE INSERT
ON CM_PURPOSE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_PURPOSE_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER,
NAME VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1023),
TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT PURPOSE_CATEGORY_CONSTRAINT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_PURPOSE_CATEGORY_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER CM_PURPOSE_CATEGORY_TRIG
BEFORE INSERT
ON CM_PURPOSE_CATEGORY
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_PURPOSE_CATEGORY_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER,
CONSENT_RECEIPT_ID VARCHAR2(255) NOT NULL,
SP_NAME VARCHAR2(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT -1234,
CONSTRAINT RECEIPT_SP_ASSOC_CONSTRAINT UNIQUE (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_RECEIPT_SP_ASSOC_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER CM_RECEIPT_SP_ASSOC_TRIG
BEFORE INSERT
ON CM_RECEIPT_SP_ASSOC
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_RECEIPT_SP_ASSOC_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER,
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR2(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR2(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR2(255),
CONSTRAINT SP_PURPOSE_ASSOC UNIQUE (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE CM_SP_PURPOSE_ASSOC_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER CM_SP_PURPOSE_ASSOC_TRIG
BEFORE INSERT
ON CM_SP_PURPOSE_ASSOC
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT CM_SP_PURPOSE_ASSOC_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT SP_PUS_PS_CAT_ASSOC UNIQUE (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
)
/
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT PURPOSE_PII_CAT_ASSOC UNIQUE (PURPOSE_ID, CM_PII_CATEGORY_ID)
)
/
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
CONSTRAINT SP_PURPOSE_PII_CATEGORY_ASSOC UNIQUE (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
)
/
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR2(255) NOT NULL,
NAME VARCHAR2(255) NOT NULL,
VALUE VARCHAR2(1023) NOT NULL,
CONSTRAINT CONSENT_RECEIPT_PROPERTY UNIQUE (CONSENT_RECEIPT_ID, NAME)
)
/
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
/
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID)
/
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID)
/
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID)
/
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID)
/
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID)
/
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234')
/
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234')
/
-- End of CONSENT-MGT Tables --
-- Start of API-MGT Tables--
CREATE TABLE AM_SUBSCRIBER (
SUBSCRIBER_ID INTEGER,
@ -1046,7 +1543,7 @@ CREATE TABLE AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR2(255) NOT NULL,
APP_ID INTEGER,
TOKEN_TYPE VARCHAR2(30),
TOKEN_SCOPE VARCHAR2(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR2(1500) DEFAULT 'default',
INPUTS VARCHAR2(1000),
ALLOWED_DOMAINS VARCHAR2(256),
VALIDITY_PERIOD NUMBER(19),
@ -1594,7 +2091,7 @@ END;
CREATE TABLE AM_BLOCK_CONDITIONS (
CONDITION_ID INTEGER NOT NULL,
TYPE varchar2(45) DEFAULT NULL,
VALUE varchar2(45) DEFAULT NULL,
VALUE varchar2(512) DEFAULT NULL,
ENABLED varchar2(45) DEFAULT NULL,
DOMAIN varchar2(45) DEFAULT NULL,
UUID VARCHAR2(256),
@ -1613,14 +2110,61 @@ BEGIN
END;
/
CREATE TABLE AM_CERTIFICATE_METADATA (
TENANT_ID INTEGER NOT NULL,
ALIAS VARCHAR2(45) NOT NULL,
END_POINT VARCHAR2(100) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (ALIAS),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (END_POINT)
)
/
CREATE TABLE AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR2(512) NOT NULL,
TENANT VARCHAR2 (255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE
)
/
CREATE TABLE AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN VARCHAR2 (255) NOT NULL,
FILE_NAME VARCHAR2 (255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED INTEGER DEFAULT 0,
FILE_CONTENT BLOB DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP))
/
CREATE TABLE AM_API_LC_PUBLISH_EVENTS (
ID INTEGER,
TENANT_DOMAIN VARCHAR2 (500) NOT NULL,
API_ID VARCHAR2 (500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL,
PRIMARY KEY (ID)
)
/
CREATE SEQUENCE AM_API_LC_PUBLISH_EVENTS_SEQ START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
/
CREATE OR REPLACE TRIGGER AM_API_LC_PUBLISH_EVENTS_TRIG
BEFORE INSERT
ON AM_API_LC_PUBLISH_EVENTS
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT AM_API_LC_PUBLISH_EVENTS_SEQ.nextval INTO :NEW.ID FROM dual;
END;
/
-- End of API-MGT Tables --
--permance indexes start--
/
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME)
/
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN)
/
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE)
/
create index IDX_AAI_CTX on AM_API (CONTEXT)

View File

@ -15,7 +15,7 @@ CREATE SEQUENCE IDN_OAUTH_CONSUMER_APPS_PK_SEQ;
CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
ID INTEGER DEFAULT NEXTVAL('IDN_OAUTH_CONSUMER_APPS_PK_SEQ'),
CONSUMER_KEY VARCHAR(255),
CONSUMER_SECRET VARCHAR(512),
CONSUMER_SECRET VARCHAR(2048),
USERNAME VARCHAR(255),
TENANT_ID INTEGER DEFAULT 0,
USER_DOMAIN VARCHAR(50),
@ -25,10 +25,22 @@ CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
GRANT_TYPES VARCHAR (1024),
PKCE_MANDATORY CHAR(1) DEFAULT '0',
PKCE_SUPPORT_PLAIN CHAR(1) DEFAULT '0',
APP_STATE VARCHAR (25) DEFAULT 'ACTIVE',
USER_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
APP_ACCESS_TOKEN_EXPIRE_TIME BIGINT DEFAULT 3600000,
REFRESH_TOKEN_EXPIRE_TIME BIGINT DEFAULT 84600000,
CONSTRAINT CONSUMER_KEY_CONSTRAINT UNIQUE (CONSUMER_KEY),
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS IDN_OAUTH2_SCOPE_VALIDATORS;
CREATE TABLE IDN_OAUTH2_SCOPE_VALIDATORS (
APP_ID INTEGER NOT NULL,
SCOPE_VALIDATOR VARCHAR (128) NOT NULL,
PRIMARY KEY (APP_ID,SCOPE_VALIDATOR),
FOREIGN KEY (APP_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_OAUTH1A_REQUEST_TOKEN;
CREATE TABLE IDN_OAUTH1A_REQUEST_TOKEN (
REQUEST_TOKEN VARCHAR(512),
@ -59,8 +71,8 @@ CREATE TABLE IDN_OAUTH1A_ACCESS_TOKEN (
DROP TABLE IF EXISTS IDN_OAUTH2_ACCESS_TOKEN;
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_ID VARCHAR (255),
ACCESS_TOKEN VARCHAR(255),
REFRESH_TOKEN VARCHAR(255),
ACCESS_TOKEN VARCHAR(2048),
REFRESH_TOKEN VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
@ -75,6 +87,8 @@ CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN (
TOKEN_STATE VARCHAR(25) DEFAULT 'ACTIVE',
TOKEN_STATE_ID VARCHAR (128) DEFAULT 'NONE',
SUBJECT_IDENTIFIER VARCHAR(255),
ACCESS_TOKEN_HASH VARCHAR(512),
REFRESH_TOKEN_HASH VARCHAR(512),
PRIMARY KEY (TOKEN_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
CONSTRAINT CON_APP_KEY UNIQUE (CONSUMER_KEY_ID,AUTHZ_USER,TOKEN_ID,USER_DOMAIN,USER_TYPE,TOKEN_SCOPE_HASH,
@ -85,13 +99,15 @@ CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY_ID, AUTHZ_USER
CREATE INDEX IDX_TC ON IDN_OAUTH2_ACCESS_TOKEN(TIME_CREATED);
CREATE INDEX IDX_ATH ON IDN_OAUTH2_ACCESS_TOKEN(ACCESS_TOKEN_HASH);
DROP TABLE IF EXISTS IDN_OAUTH2_AUTHORIZATION_CODE;
CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
CODE_ID VARCHAR (255),
AUTHORIZATION_CODE VARCHAR(512),
AUTHORIZATION_CODE VARCHAR(2048),
CONSUMER_KEY_ID INTEGER,
CALLBACK_URL VARCHAR(1024),
SCOPE VARCHAR(2048),
SCOPE VARCHAR(4096),
AUTHZ_USER VARCHAR (100),
TENANT_ID INTEGER,
USER_DOMAIN VARCHAR(50),
@ -102,10 +118,13 @@ CREATE TABLE IDN_OAUTH2_AUTHORIZATION_CODE (
SUBJECT_IDENTIFIER VARCHAR(255),
PKCE_CODE_CHALLENGE VARCHAR (255),
PKCE_CODE_CHALLENGE_METHOD VARCHAR(128),
AUTHORIZATION_CODE_HASH VARCHAR(512),
PRIMARY KEY (CODE_ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE
);
CREATE INDEX IDX_AUTHORIZATION_CODE_HASH ON IDN_OAUTH2_AUTHORIZATION_CODE (AUTHORIZATION_CODE_HASH,CONSUMER_KEY_ID);
DROP TABLE IF EXISTS IDN_OAUTH2_ACCESS_TOKEN_SCOPE;
CREATE TABLE IDN_OAUTH2_ACCESS_TOKEN_SCOPE (
TOKEN_ID VARCHAR (255),
@ -119,21 +138,27 @@ DROP SEQUENCE IF EXISTS IDN_OAUTH2_SCOPE_PK_SEQ;
CREATE SEQUENCE IDN_OAUTH2_SCOPE_PK_SEQ;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE (
SCOPE_ID INTEGER DEFAULT NEXTVAL('IDN_OAUTH2_SCOPE_PK_SEQ'),
SCOPE_KEY VARCHAR(100) NOT NULL,
NAME VARCHAR(255) NULL,
DESCRIPTION VARCHAR(512) NULL,
TENANT_ID INTEGER DEFAULT 0,
ROLES VARCHAR (500) NULL,
NAME VARCHAR(255) NOT NULL,
DISPLAY_NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(512),
TENANT_ID INTEGER NOT NULL DEFAULT -1,
PRIMARY KEY (SCOPE_ID)
);
DROP TABLE IF EXISTS IDN_OAUTH2_SCOPE_BINDING;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_SCOPE_BINDING (
SCOPE_ID INTEGER NOT NULL,
SCOPE_BINDING VARCHAR(255),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE(SCOPE_ID) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_OAUTH2_RESOURCE_SCOPE;
CREATE TABLE IF NOT EXISTS IDN_OAUTH2_RESOURCE_SCOPE (
RESOURCE_PATH VARCHAR(255) NOT NULL,
SCOPE_ID INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (RESOURCE_PATH),
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY (SCOPE_ID) REFERENCES IDN_OAUTH2_SCOPE (SCOPE_ID) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_SCIM_GROUP;
@ -198,7 +223,7 @@ CREATE TABLE IDN_IDENTITY_USER_DATA (
TENANT_ID INTEGER DEFAULT -1234,
USER_NAME VARCHAR(255) NOT NULL,
DATA_KEY VARCHAR(255) NOT NULL,
DATA_VALUE VARCHAR(255),
DATA_VALUE VARCHAR(2048),
PRIMARY KEY (TENANT_ID, USER_NAME, DATA_KEY)
);
@ -251,6 +276,7 @@ CREATE TABLE SP_APP (
IS_SEND_AUTH_LIST_OF_IDPS CHAR(1) DEFAULT '0',
IS_USE_TENANT_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
IS_USE_USER_DOMAIN_SUBJECT CHAR(1) DEFAULT '1',
ENABLE_AUTHORIZATION CHAR(1) DEFAULT '0',
SUBJECT_CLAIM_URI VARCHAR (512),
IS_SAAS_APP CHAR(1) DEFAULT '0',
IS_DUMB_MODE CHAR(1) DEFAULT '0',
@ -280,6 +306,7 @@ CREATE TABLE SP_INBOUND_AUTH (
TENANT_ID INTEGER NOT NULL,
INBOUND_AUTH_KEY VARCHAR (255),
INBOUND_AUTH_TYPE VARCHAR (255) NOT NULL,
INBOUND_CONFIG_TYPE VARCHAR (255) NOT NULL,
PROP_NAME VARCHAR (255),
PROP_VALUE VARCHAR (1024) ,
APP_ID INTEGER NOT NULL,
@ -320,6 +347,7 @@ CREATE TABLE SP_CLAIM_MAPPING (
SP_CLAIM VARCHAR (512) NOT NULL ,
APP_ID INTEGER NOT NULL,
IS_REQUESTED VARCHAR(128) DEFAULT '0',
IS_MANDATORY VARCHAR(128) DEFAULT '0',
DEFAULT_VALUE VARCHAR(255),
PRIMARY KEY (ID));
@ -361,10 +389,24 @@ CREATE TABLE SP_PROVISIONING_CONNECTOR (
APP_ID INTEGER NOT NULL,
IS_JIT_ENABLED CHAR(1) NOT NULL DEFAULT '0',
BLOCKING CHAR(1) NOT NULL DEFAULT '0',
RULE_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID));
ALTER TABLE SP_PROVISIONING_CONNECTOR ADD CONSTRAINT PRO_CONNECTOR_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES SP_APP (ID) ON DELETE CASCADE;
DROP TABLE IF EXISTS SP_AUTH_SCRIPT;
DROP SEQUENCE IF EXISTS SP_AUTH_SCRIPT_SEQ;
CREATE SEQUENCE SP_AUTH_SCRIPT_SEQ;
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER NOT NULL DEFAULT NEXTVAL('SP_AUTH_SCRIPT_SEQ'),
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT BYTEA DEFAULT NULL,
IS_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS IDP;
DROP SEQUENCE IF EXISTS IDP_SEQ;
CREATE SEQUENCE IDP_SEQ;
@ -394,9 +436,6 @@ CREATE TABLE IDP (
DROP TABLE IF EXISTS IDP_ROLE;
DROP SEQUENCE IF EXISTS IDP_ROLE_SEQ;
INSERT INTO IDP (TENANT_ID, NAME, HOME_REALM_ID) VALUES (-1234, 'LOCAL', 'localhost');
CREATE SEQUENCE IDP_ROLE_SEQ;
CREATE TABLE IDP_ROLE (
ID INTEGER DEFAULT NEXTVAL('IDP_ROLE_SEQ'),
@ -460,11 +499,6 @@ CREATE TABLE IDP_AUTHENTICATOR (
UNIQUE (TENANT_ID, IDP_ID, NAME),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'samlsso');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'IDPProperties');
INSERT INTO IDP_AUTHENTICATOR (TENANT_ID, IDP_ID, NAME) VALUES (-1234, 1, 'passivests');
DROP TABLE IF EXISTS IDP_METADATA;
DROP SEQUENCE IF EXISTS IDP_METADATA_SEQ;
CREATE SEQUENCE IDP_METADATA_SEQ;
@ -479,9 +513,6 @@ CREATE TABLE IDP_METADATA (
CONSTRAINT IDP_METADATA_CONSTRAINT UNIQUE (IDP_ID, NAME),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'SessionIdleTimeout', '20160', 'Session Idle Timeout');
INSERT INTO IDP_METADATA (IDP_ID, NAME, VALUE, DISPLAY_NAME) VALUES (1, 'RememberMeTimeout', '15', 'RememberMe Timeout');
DROP TABLE IF EXISTS IDP_AUTHENTICATOR_PROP;
DROP SEQUENCE IF EXISTS IDP_AUTHENTICATOR_PROP_SEQ;
CREATE SEQUENCE IDP_AUTHENTICATOR_PROP_SEQ;
@ -496,9 +527,6 @@ CREATE TABLE IDP_AUTHENTICATOR_PROPERTY (
UNIQUE (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY),
FOREIGN KEY (AUTHENTICATOR_ID) REFERENCES IDP_AUTHENTICATOR(ID) ON DELETE CASCADE);
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 1 , 'IdPEntityId', 'localhost', '0');
INSERT INTO IDP_AUTHENTICATOR_PROPERTY (TENANT_ID, AUTHENTICATOR_ID, PROPERTY_KEY,PROPERTY_VALUE, IS_SECRET ) VALUES (-1234, 3 , 'IdPEntityId', 'localhost', '0');
DROP TABLE IF EXISTS IDP_PROV_CONFIG;
DROP SEQUENCE IF EXISTS IDP_PROV_CONFIG_SEQ;
CREATE SEQUENCE IDP_PROV_CONFIG_SEQ;
@ -509,6 +537,7 @@ CREATE TABLE IDP_PROVISIONING_CONFIG (
PROVISIONING_CONNECTOR_TYPE VARCHAR(255) NOT NULL,
IS_ENABLED CHAR (1) DEFAULT '0',
IS_BLOCKING CHAR (1) DEFAULT '0',
IS_RULES_ENABLED CHAR (1) DEFAULT '0',
PRIMARY KEY (ID),
UNIQUE (TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE),
FOREIGN KEY (IDP_ID) REFERENCES IDP(ID) ON DELETE CASCADE);
@ -612,7 +641,7 @@ CREATE TABLE WF_BPS_PROFILE (
HOST_URL_MANAGER VARCHAR(255),
HOST_URL_WORKER VARCHAR(255),
USERNAME VARCHAR(45),
PASSWORD VARCHAR(255),
PASSWORD VARCHAR(1023),
CALLBACK_HOST VARCHAR (45),
TENANT_ID INTEGER DEFAULT -1,
PRIMARY KEY (PROFILE_NAME, TENANT_ID)
@ -679,8 +708,334 @@ CREATE TABLE WF_WORKFLOW_REQUEST_RELATION(
FOREIGN KEY (REQUEST_ID) REFERENCES WF_REQUEST(UUID)ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_RECOVERY_DATA;
CREATE TABLE IDN_RECOVERY_DATA (
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
CODE VARCHAR(255) NOT NULL,
SCENARIO VARCHAR(255) NOT NULL,
STEP VARCHAR(127) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
REMAINING_SETS VARCHAR(2500) DEFAULT NULL,
PRIMARY KEY(USER_NAME, USER_DOMAIN, TENANT_ID, SCENARIO,STEP),
UNIQUE(CODE)
);
DROP TABLE IF EXISTS IDN_PASSWORD_HISTORY_DATA;
CREATE SEQUENCE IDN_PASSWORD_HISTORY_DATA_PK_SEQ;
CREATE TABLE IDN_PASSWORD_HISTORY_DATA (
ID INTEGER DEFAULT NEXTVAL('IDN_PASSWORD_HISTORY_DATA_PK_SEQ'),
USER_NAME VARCHAR(255) NOT NULL,
USER_DOMAIN VARCHAR(127) NOT NULL,
TENANT_ID INTEGER DEFAULT -1,
SALT_VALUE VARCHAR(255),
HASH VARCHAR(255) NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID),
UNIQUE (USER_NAME,USER_DOMAIN,TENANT_ID,SALT_VALUE,HASH)
);
DROP TABLE IF EXISTS IDN_CLAIM_DIALECT;
DROP SEQUENCE IF EXISTS IDN_CLAIM_DIALECT_SEQ;
CREATE SEQUENCE IDN_CLAIM_DIALECT_SEQ;
CREATE TABLE IDN_CLAIM_DIALECT (
ID INTEGER DEFAULT NEXTVAL('IDN_CLAIM_DIALECT_SEQ'),
DIALECT_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT DIALECT_URI_CONSTRAINT UNIQUE (DIALECT_URI, TENANT_ID)
);
DROP TABLE IF EXISTS IDN_CLAIM;
DROP SEQUENCE IF EXISTS IDN_CLAIM_SEQ;
CREATE SEQUENCE IDN_CLAIM_SEQ;
CREATE TABLE IDN_CLAIM (
ID INTEGER DEFAULT NEXTVAL('IDN_CLAIM_SEQ'),
DIALECT_ID INTEGER,
CLAIM_URI VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DIALECT_ID) REFERENCES IDN_CLAIM_DIALECT(ID) ON DELETE CASCADE,
CONSTRAINT CLAIM_URI_CONSTRAINT UNIQUE (DIALECT_ID, CLAIM_URI, TENANT_ID)
);
DROP TABLE IF EXISTS IDN_CLAIM_MAPPED_ATTRIBUTE;
DROP SEQUENCE IF EXISTS IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ;
CREATE SEQUENCE IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ;
CREATE TABLE IDN_CLAIM_MAPPED_ATTRIBUTE (
ID INTEGER DEFAULT NEXTVAL('IDN_CLAIM_MAPPED_ATTRIBUTE_SEQ'),
LOCAL_CLAIM_ID INTEGER,
USER_STORE_DOMAIN_NAME VARCHAR (255) NOT NULL,
ATTRIBUTE_NAME VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT USER_STORE_DOMAIN_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, USER_STORE_DOMAIN_NAME, TENANT_ID)
);
DROP TABLE IF EXISTS IDN_CLAIM_PROPERTY;
DROP SEQUENCE IF EXISTS IDN_CLAIM_PROPERTY_SEQ;
CREATE SEQUENCE IDN_CLAIM_PROPERTY_SEQ;
CREATE TABLE IDN_CLAIM_PROPERTY (
ID INTEGER DEFAULT NEXTVAL('IDN_CLAIM_PROPERTY_SEQ'),
LOCAL_CLAIM_ID INTEGER,
PROPERTY_NAME VARCHAR (255) NOT NULL,
PROPERTY_VALUE VARCHAR (255) NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT PROPERTY_NAME_CONSTRAINT UNIQUE (LOCAL_CLAIM_ID, PROPERTY_NAME, TENANT_ID)
);
DROP TABLE IF EXISTS IDN_CLAIM_MAPPING;
DROP SEQUENCE IF EXISTS IDN_CLAIM_MAPPING_SEQ;
CREATE SEQUENCE IDN_CLAIM_MAPPING_SEQ;
CREATE TABLE IDN_CLAIM_MAPPING (
ID INTEGER DEFAULT NEXTVAL('IDN_CLAIM_MAPPING_SEQ'),
EXT_CLAIM_ID INTEGER NOT NULL,
MAPPED_LOCAL_CLAIM_ID INTEGER NOT NULL,
TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EXT_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
FOREIGN KEY (MAPPED_LOCAL_CLAIM_ID) REFERENCES IDN_CLAIM(ID) ON DELETE CASCADE,
CONSTRAINT EXT_TO_LOC_MAPPING_CONSTRN UNIQUE (EXT_CLAIM_ID, TENANT_ID)
);
DROP TABLE IF EXISTS IDN_SAML2_ASSERTION_STORE;
DROP SEQUENCE IF EXISTS IDN_SAML2_ASSERTION_STORE_SEQ;
CREATE SEQUENCE IDN_SAML2_ASSERTION_STORE_SEQ;
CREATE TABLE IDN_SAML2_ASSERTION_STORE (
ID INTEGER DEFAULT NEXTVAL('IDN_SAML2_ASSERTION_STORE_SEQ'),
SAML2_ID VARCHAR(255) ,
SAML2_ISSUER VARCHAR(255) ,
SAML2_SUBJECT VARCHAR(255) ,
SAML2_SESSION_INDEX VARCHAR(255) ,
SAML2_AUTHN_CONTEXT_CLASS_REF VARCHAR(255) ,
SAML2_ASSERTION VARCHAR(4096) ,
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS IDN_OIDC_JTI;
CREATE TABLE IDN_OIDC_JTI (
JWT_ID VARCHAR(255) NOT NULL,
EXP_TIME TIMESTAMP NOT NULL,
TIME_CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (JWT_ID)
);
DROP TABLE IF EXISTS IDN_OIDC_PROPERTY;
DROP SEQUENCE IF EXISTS IDN_OIDC_PROPERTY_SEQ;
CREATE SEQUENCE IDN_OIDC_PROPERTY_SEQ;
CREATE TABLE IDN_OIDC_PROPERTY (
ID INTEGER DEFAULT NEXTVAL('IDN_OIDC_PROPERTY_SEQ'),
TENANT_ID INTEGER,
CONSUMER_KEY VARCHAR(255) ,
PROPERTY_KEY VARCHAR(255) NOT NULL,
PROPERTY_VALUE VARCHAR(2047) ,
PRIMARY KEY (ID) ,
FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_OIDC_REQ_OBJECT_REFERENCE;
DROP SEQUENCE IF EXISTS IDN_OIDC_REQUEST_OBJECT_REF_SEQ;
CREATE SEQUENCE IDN_OIDC_REQUEST_OBJECT_REF_SEQ;
CREATE TABLE IDN_OIDC_REQ_OBJECT_REFERENCE (
ID INTEGER DEFAULT NEXTVAL('IDN_OIDC_REQUEST_OBJECT_REF_SEQ'),
CONSUMER_KEY_ID INTEGER ,
CODE_ID VARCHAR(255) ,
TOKEN_ID VARCHAR(255) ,
SESSION_DATA_KEY VARCHAR(255),
PRIMARY KEY (ID),
FOREIGN KEY (CONSUMER_KEY_ID) REFERENCES IDN_OAUTH_CONSUMER_APPS(ID) ON DELETE CASCADE,
FOREIGN KEY (TOKEN_ID) REFERENCES IDN_OAUTH2_ACCESS_TOKEN(TOKEN_ID) ON DELETE CASCADE,
FOREIGN KEY (CODE_ID) REFERENCES IDN_OAUTH2_AUTHORIZATION_CODE(CODE_ID) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_OIDC_REQ_OBJECT_CLAIMS;
DROP SEQUENCE IF EXISTS IDN_OIDC_REQ_OBJECT_CLAIMS_SEQ;
CREATE SEQUENCE IDN_OIDC_REQ_OBJECT_CLAIMS_SEQ;
CREATE TABLE IDN_OIDC_REQ_OBJECT_CLAIMS (
ID INTEGER DEFAULT NEXTVAL('IDN_OIDC_REQ_OBJECT_CLAIMS_SEQ'),
REQ_OBJECT_ID INTEGER,
CLAIM_ATTRIBUTE VARCHAR(255) ,
ESSENTIAL CHAR(1) NOT NULL DEFAULT '0' ,
VALUE VARCHAR(255) ,
IS_USERINFO CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_ID) REFERENCES IDN_OIDC_REQ_OBJECT_REFERENCE (ID) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_OIDC_REQ_OBJ_CLAIM_VALUES;
DROP SEQUENCE IF EXISTS IDN_OIDC_REQ_OBJECT_CLAIM_VALUES_SEQ;
CREATE SEQUENCE IDN_OIDC_REQ_OBJECT_CLAIM_VALUES_SEQ;
CREATE TABLE IDN_OIDC_REQ_OBJ_CLAIM_VALUES (
ID INTEGER DEFAULT NEXTVAL('IDN_OIDC_REQ_OBJECT_CLAIM_VALUES_SEQ'),
REQ_OBJECT_CLAIMS_ID INTEGER ,
CLAIM_VALUES VARCHAR(255) ,
PRIMARY KEY (ID),
FOREIGN KEY (REQ_OBJECT_CLAIMS_ID) REFERENCES IDN_OIDC_REQ_OBJECT_CLAIMS(ID) ON DELETE CASCADE
);
DROP TABLE IF EXISTS IDN_CERTIFICATE;
DROP SEQUENCE IF EXISTS IDN_CERTIFICATE_PK_SEQ;
CREATE SEQUENCE IDN_CERTIFICATE_PK_SEQ;
CREATE TABLE IDN_CERTIFICATE (
ID INTEGER DEFAULT NEXTVAL('IDN_CERTIFICATE_PK_SEQ'),
NAME VARCHAR(100),
CERTIFICATE_IN_PEM BYTEA,
TENANT_ID INTEGER DEFAULT 0,
CONSTRAINT CERTIFICATE_UNIQUE_KEY UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
-- End of IDENTITY Tables--
-- Start of CONSENT-MGT Tables --
DROP TABLE IF EXISTS CM_PII_CATEGORY;
DROP SEQUENCE IF EXISTS CM_PII_CATEGORY_PK_SEQ;
CREATE SEQUENCE CM_PII_CATEGORY_PK_SEQ;
CREATE TABLE CM_PII_CATEGORY (
ID INTEGER DEFAULT NEXTVAL('CM_PII_CATEGORY_PK_SEQ'),
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
DISPLAY_NAME VARCHAR(255),
IS_SENSITIVE INTEGER NOT NULL,
TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_PII_CATEGORY_CNT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS CM_RECEIPT;
CREATE TABLE CM_RECEIPT (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
JURISDICTION VARCHAR(255) NOT NULL,
CONSENT_TIMESTAMP TIMESTAMP NOT NULL,
COLLECTION_METHOD VARCHAR(255) NOT NULL,
LANGUAGE VARCHAR(255) NOT NULL,
PII_PRINCIPAL_ID VARCHAR(255) NOT NULL,
PRINCIPAL_TENANT_ID INTEGER DEFAULT '-1234',
POLICY_URL VARCHAR(255) NOT NULL,
STATE VARCHAR(255) NOT NULL,
PII_CONTROLLER VARCHAR(2048) NOT NULL,
PRIMARY KEY (CONSENT_RECEIPT_ID)
);
DROP TABLE IF EXISTS CM_PURPOSE;
DROP SEQUENCE IF EXISTS CM_PURPOSE_PK_SEQ;
CREATE SEQUENCE CM_PURPOSE_PK_SEQ;
CREATE TABLE CM_PURPOSE (
ID INTEGER DEFAULT NEXTVAL('CM_PURPOSE_PK_SEQ'),
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_PURPOSE_CNT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS CM_PURPOSE_CATEGORY;
DROP SEQUENCE IF EXISTS CM_PURPOSE_CATEGORY_PK_SEQ;
CREATE SEQUENCE CM_PURPOSE_CATEGORY_PK_SEQ;
CREATE TABLE CM_PURPOSE_CATEGORY (
ID INTEGER DEFAULT NEXTVAL('CM_PURPOSE_CATEGORY_PK_SEQ'),
NAME VARCHAR(255) NOT NULL,
DESCRIPTION VARCHAR(1023),
TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_PURPOSE_CATEGORY_CNT UNIQUE (NAME, TENANT_ID),
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS CM_RECEIPT_SP_ASSOC;
DROP SEQUENCE IF EXISTS CM_RECEIPT_SP_ASSOC_PK_SEQ;
CREATE SEQUENCE CM_RECEIPT_SP_ASSOC_PK_SEQ;
CREATE TABLE CM_RECEIPT_SP_ASSOC (
ID INTEGER DEFAULT NEXTVAL('CM_RECEIPT_SP_ASSOC_PK_SEQ'),
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
SP_NAME VARCHAR(255) NOT NULL,
SP_DISPLAY_NAME VARCHAR(255),
SP_DESCRIPTION VARCHAR(255),
SP_TENANT_ID INTEGER DEFAULT '-1234',
CONSTRAINT CM_RECEIPT_SP_ASSOC_CNT UNIQUE (CONSENT_RECEIPT_ID, SP_NAME, SP_TENANT_ID),
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS CM_SP_PURPOSE_ASSOC;
DROP SEQUENCE IF EXISTS CM_SP_PURPOSE_ASSOC_PK_SEQ;
CREATE SEQUENCE CM_SP_PURPOSE_ASSOC_PK_SEQ;
CREATE TABLE CM_SP_PURPOSE_ASSOC (
ID INTEGER DEFAULT NEXTVAL('CM_SP_PURPOSE_ASSOC_PK_SEQ'),
RECEIPT_SP_ASSOC INTEGER NOT NULL,
PURPOSE_ID INTEGER NOT NULL,
CONSENT_TYPE VARCHAR(255) NOT NULL,
IS_PRIMARY_PURPOSE INTEGER NOT NULL,
TERMINATION VARCHAR(255) NOT NULL,
THIRD_PARTY_DISCLOSURE INTEGER NOT NULL,
THIRD_PARTY_NAME VARCHAR(255),
CONSTRAINT CM_SP_PURPOSE_ASSOC_CNT UNIQUE (RECEIPT_SP_ASSOC, PURPOSE_ID),
PRIMARY KEY (ID)
);
DROP TABLE IF EXISTS CM_SP_PURPOSE_PURPOSE_CAT_ASSC;
CREATE TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PURPOSE_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT CM_SP_PURPOSE_PURPOSE_CAT_ASSC_CNT UNIQUE (SP_PURPOSE_ASSOC_ID, PURPOSE_CATEGORY_ID)
);
DROP TABLE IF EXISTS CM_PURPOSE_PII_CAT_ASSOC;
CREATE TABLE CM_PURPOSE_PII_CAT_ASSOC (
PURPOSE_ID INTEGER NOT NULL,
CM_PII_CATEGORY_ID INTEGER NOT NULL,
CONSTRAINT CM_PURPOSE_PII_CAT_ASSOC_CNT UNIQUE (PURPOSE_ID, CM_PII_CATEGORY_ID)
);
DROP TABLE IF EXISTS CM_SP_PURPOSE_PII_CAT_ASSOC;
CREATE TABLE CM_SP_PURPOSE_PII_CAT_ASSOC (
SP_PURPOSE_ASSOC_ID INTEGER NOT NULL,
PII_CATEGORY_ID INTEGER NOT NULL,
VALIDITY VARCHAR(1023),
CONSTRAINT CM_SP_PURPOSE_PII_CAT_ASSOC_CNT UNIQUE (SP_PURPOSE_ASSOC_ID, PII_CATEGORY_ID)
);
DROP TABLE IF EXISTS CM_CONSENT_RECEIPT_PROPERTY;
CREATE TABLE CM_CONSENT_RECEIPT_PROPERTY (
CONSENT_RECEIPT_ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255) NOT NULL,
VALUE VARCHAR(1023) NOT NULL,
CONSTRAINT CM_CONSENT_RECEIPT_PROPERTY_CNT UNIQUE (CONSENT_RECEIPT_ID, NAME)
);
ALTER TABLE CM_RECEIPT_SP_ASSOC
ADD CONSTRAINT CM_RECEIPT_SP_ASSOC_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk0 FOREIGN KEY (RECEIPT_SP_ASSOC) REFERENCES CM_RECEIPT_SP_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_ASSOC
ADD CONSTRAINT CM_SP_PURPOSE_ASSOC_fk1 FOREIGN KEY (PURPOSE_ID) REFERENCES CM_PURPOSE (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PURPOSE_CAT_ASSC
ADD CONSTRAINT CM_SP_P_P_CAT_ASSOC_fk1 FOREIGN KEY (PURPOSE_CATEGORY_ID) REFERENCES CM_PURPOSE_CATEGORY (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk0 FOREIGN KEY (SP_PURPOSE_ASSOC_ID) REFERENCES CM_SP_PURPOSE_ASSOC (ID);
ALTER TABLE CM_SP_PURPOSE_PII_CAT_ASSOC
ADD CONSTRAINT CM_SP_P_PII_CAT_ASSOC_fk1 FOREIGN KEY (PII_CATEGORY_ID) REFERENCES CM_PII_CATEGORY (ID);
ALTER TABLE CM_CONSENT_RECEIPT_PROPERTY
ADD CONSTRAINT CM_CONSENT_RECEIPT_PRT_fk0 FOREIGN KEY (CONSENT_RECEIPT_ID) REFERENCES CM_RECEIPT (CONSENT_RECEIPT_ID);
INSERT INTO CM_PURPOSE (NAME, DESCRIPTION, TENANT_ID) values ('DEFAULT', 'For core functionalities of the product', '-1234');
INSERT INTO CM_PURPOSE_CATEGORY (NAME, DESCRIPTION, TENANT_ID) VALUES ('DEFAULT','For core functionalities of the product', '-1234');
-- End of CONSENT-MGT Tables --
CREATE SEQUENCE AM_SUBSCRIBER_SEQUENCE START WITH 1 INCREMENT BY 1;
CREATE TABLE IF NOT EXISTS AM_SUBSCRIBER (
SUBSCRIBER_ID INTEGER DEFAULT nextval('am_subscriber_sequence'),
@ -797,7 +1152,7 @@ CREATE TABLE IF NOT EXISTS AM_APPLICATION_REGISTRATION (
WF_REF VARCHAR(255) NOT NULL,
APP_ID INT,
TOKEN_TYPE VARCHAR(30),
TOKEN_SCOPE VARCHAR(256) DEFAULT 'default',
TOKEN_SCOPE VARCHAR(1500) DEFAULT 'default',
INPUTS VARCHAR(1000),
ALLOWED_DOMAINS VARCHAR(256),
VALIDITY_PERIOD BIGINT,
@ -1129,7 +1484,7 @@ CREATE SEQUENCE AM_BLOCK_CONDITIONS_SEQ START WITH 1 INCREMENT BY 1;
CREATE TABLE AM_BLOCK_CONDITIONS (
CONDITION_ID INTEGER DEFAULT NEXTVAL('AM_BLOCK_CONDITIONS_SEQ'),
TYPE varchar(45) DEFAULT NULL,
VALUE varchar(45) DEFAULT NULL,
VALUE varchar(512) DEFAULT NULL,
ENABLED varchar(45) DEFAULT NULL,
DOMAIN varchar(45) DEFAULT NULL,
UUID VARCHAR(256),
@ -1137,12 +1492,49 @@ CREATE TABLE AM_BLOCK_CONDITIONS (
UNIQUE (UUID)
);
DROP TABLE IF EXISTS AM_CERTIFICATE_METADATA;
CREATE TABLE AM_CERTIFICATE_METADATA (
TENANT_ID INTEGER NOT NULL,
ALIAS VARCHAR(45) NOT NULL,
END_POINT VARCHAR(45) NOT NULL,
CONSTRAINT PK_ALIAS PRIMARY KEY (ALIAS),
CONSTRAINT END_POINT_CONSTRAINT UNIQUE (END_POINT)
);
DROP TABLE IF EXISTS AM_APPLICATION_GROUP_MAPPING;
CREATE TABLE AM_APPLICATION_GROUP_MAPPING (
APPLICATION_ID INTEGER NOT NULL,
GROUP_ID VARCHAR(512) NOT NULL,
TENANT VARCHAR(255),
PRIMARY KEY (APPLICATION_ID,GROUP_ID,TENANT),
FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON DELETE CASCADE ON UPDATE CASCADE
);
DROP TABLE IF EXISTS AM_USAGE_UPLOADED_FILES;
CREATE TABLE AM_USAGE_UPLOADED_FILES (
TENANT_DOMAIN VARCHAR(255) NOT NULL,
FILE_NAME VARCHAR(255) NOT NULL,
FILE_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FILE_PROCESSED INTEGER DEFAULT 0,
FILE_CONTENT BYTEA DEFAULT NULL,
PRIMARY KEY (TENANT_DOMAIN, FILE_NAME, FILE_TIMESTAMP)
);
DROP TABLE IF EXISTS AM_API_LC_PUBLISH_EVENTS;
DROP SEQUENCE IF EXISTS AM_API_LC_PUBLISH_EVENTS_PK_SEQ;
CREATE SEQUENCE AM_API_LC_PUBLISH_EVENTS_PK_SEQ;
CREATE TABLE IF NOT EXISTS AM_API_LC_PUBLISH_EVENTS (
ID INTEGER NOT NULL DEFAULT NEXTVAL('AM_API_LC_PUBLISH_EVENTS_PK_SEQ'),
TENANT_DOMAIN VARCHAR(500) NOT NULL,
API_ID VARCHAR(500) NOT NULL,
EVENT_TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
);
-- End of API-MGT Tables --
-- Performance indexes start--
create index IDX_ITS_LMT on IDN_THRIFT_SESSION (LAST_MODIFIED_TIME);
create index IDX_IOAT_AT on IDN_OAUTH2_ACCESS_TOKEN (ACCESS_TOKEN);
create index IDX_IOAT_UT on IDN_OAUTH2_ACCESS_TOKEN (USER_TYPE);
create index IDX_AAI_CTX on AM_API (CONTEXT);
create index IDX_AAKM_CK on AM_APPLICATION_KEY_MAPPING (CONSUMER_KEY);

View File

@ -262,7 +262,7 @@ IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[RE
CREATE TABLE REG_PROPERTY (
REG_ID INTEGER IDENTITY(1,1) NOT NULL,
REG_NAME VARCHAR(100) NOT NULL,
REG_VALUE VARCHAR(10000),
REG_VALUE VARCHAR(8000),
REG_TENANT_ID INTEGER DEFAULT 0,
CONSTRAINT PK_REG_PROPERTY PRIMARY KEY(REG_ID, REG_TENANT_ID)
);

View File

@ -0,0 +1,8 @@
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://org.apache.axis2/xsd">
<soapenv:Header/>
<soapenv:Body>
<xsd:getApplication>
<xsd:applicationName>${applicationName}</xsd:applicationName>
</xsd:getApplication>
</soapenv:Body>
</soapenv:Envelope>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://org.apache.axis2/xsd" xmlns:xsd1="http://model.common.application.identity.carbon.wso2.org/xsd" xmlns:xsd2="http://script.model.common.application.identity.carbon.wso2.org/xsd">
<soapenv:Header />
<soapenv:Body>
<xsd:updateApplication>
<xsd:serviceProvider>
<xsd1:applicationID>${applicationId}</xsd1:applicationID>
<xsd1:applicationName>${applicationName}</xsd1:applicationName>
<!-- <xsd1:certificateContent>?</xsd1:certificateContent> -->
<xsd1:description>${description}</xsd1:description>
<xsd1:inboundAuthenticationConfig>
<xsd1:inboundAuthenticationRequestConfigs>
<!-- <xsd1:friendlyName>?</xsd1:friendlyName> -->
<xsd1:inboundAuthKey>${inboundAuthKey}</xsd1:inboundAuthKey>
<xsd1:inboundAuthType>${inboundAuthType}</xsd1:inboundAuthType>
<xsd1:inboundConfigType>${inboundConfigType}</xsd1:inboundConfigType>
<!-- <xsd1:properties>
<xsd1:advanced>?</xsd1:advanced>
<xsd1:confidential>?</xsd1:confidential>
<xsd1:defaultValue>?</xsd1:defaultValue>
<xsd1:description>?</xsd1:description>
<xsd1:displayName>?</xsd1:displayName>
<xsd1:displayOrder>?</xsd1:displayOrder>
<xsd1:name>?</xsd1:name>
<xsd1:required>false</xsd1:required>
<xsd1:type>?</xsd1:type>
<xsd1:value>?</xsd1:value>
</xsd1:properties> -->
</xsd1:inboundAuthenticationRequestConfigs>
</xsd1:inboundAuthenticationConfig>
<!-- <xsd1:inboundProvisioningConfig>
<xsd1:dumbMode>?</xsd1:dumbMode>
<xsd1:provisioningEnabled>?</xsd1:provisioningEnabled>
<xsd1:provisioningUserStore>?</xsd1:provisioningUserStore>
</xsd1:inboundProvisioningConfig>
<xsd1:outboundProvisioningConfig>
<xsd1:provisionByRoleList>?</xsd1:provisionByRoleList>
</xsd1:outboundProvisioningConfig> -->
<xsd1:owner>
<xsd1:tenantDomain>${tenantDomain}</xsd1:tenantDomain>
<xsd1:userName>${userName}</xsd1:userName>
<xsd1:userStoreDomain>${userStoreDomain}</xsd1:userStoreDomain>
</xsd1:owner>
<xsd1:saasApp>${saasApp}</xsd1:saasApp>
<xsd1:spProperties>
<!-- <xsd1:displayName>?</xsd1:displayName> -->
<xsd1:name>displayName</xsd1:name>
<xsd1:value>${displayName}</xsd1:value>
</xsd1:spProperties>
<xsd1:permissionAndRoleConfig></xsd1:permissionAndRoleConfig>
</xsd:serviceProvider>
</xsd:updateApplication>
</soapenv:Body>
</soapenv:Envelope>

View File

@ -1,249 +0,0 @@
<!--
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2</groupId>
<artifactId>wso2</artifactId>
<version>1</version>
</parent>
<modules>
<module>connectedcup</module>
<module>../wso2/analytics/samples/connected-cup</module>
</modules>
<modelVersion>4.0.0</modelVersion>
<groupId>org.wso2.iot.devicemgt-plugins</groupId>
<artifactId>iot-devicetype-samples</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>Install Connected Cup Device Types - IoT Core</name>
<url>http://wso2.org</url>
<build>
<plugins>
<plugin>
<groupId>org.wso2.maven</groupId>
<artifactId>carbon-p2-plugin</artifactId>
<version>1.5.4</version>
<executions>
<execution>
<id>2-p2-repo-generation</id>
<phase>package</phase>
<goals>
<goal>p2-repo-gen</goal>
</goals>
<configuration>
<metadataRepository>file:\${basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${basedir}/target/p2-repo</artifactRepository>
<publishArtifacts>true</publishArtifacts>
<publishArtifactRepository>true</publishArtifactRepository>
<featureArtifacts>
<featureArtifactDef>
org.coffeeking:org.coffeeking.connectedcup.backend.feature:\${org.coffeeking.version}
</featureArtifactDef>
<featureArtifactDef>
org.coffeeking:org.coffeeking.connectedcup.ui.feature:\${org.coffeeking.version}
</featureArtifactDef>
</featureArtifacts>
</configuration>
</execution>
<execution>
<id>default-feature-install</id>
<phase>package</phase>
<goals>
<goal>p2-profile-gen</goal>
</goals>
<configuration>
<profile>default</profile>
<metadataRepository>file:\${basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${basedir}/target/p2-repo</artifactRepository>
<destination>\${basedir}/../wso2/components</destination>
<deleteOldProfileFiles>false</deleteOldProfileFiles>
<features>
<!-- Connected Cup Features -->
<feature>
<id>org.coffeeking.connectedcup.ui.feature.group</id>
<version>\${org.coffeeking.version}</version>
</feature>
<feature>
<id>org.coffeeking.connectedcup.backend.feature.group</id>
<version>\${org.coffeeking.version}</version>
</feature>
</features>
</configuration>
</execution>
<execution>
<id>manager-feature-install</id>
<phase>package</phase>
<goals>
<goal>p2-profile-gen</goal>
</goals>
<configuration>
<profile>device-manager</profile>
<metadataRepository>file:\${basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${basedir}/target/p2-repo</artifactRepository>
<destination>\${basedir}/../wso2/components</destination>
<deleteOldProfileFiles>false</deleteOldProfileFiles>
<features>
<!-- Connected Cup UI Features -->
<feature>
<id>org.coffeeking.connectedcup.ui.feature.group</id>
<version>\${org.coffeeking.version}</version>
</feature>
</features>
</configuration>
</execution>
<execution>
<id>backend-feature-install</id>
<phase>package</phase>
<goals>
<goal>p2-profile-gen</goal>
</goals>
<configuration>
<profile>device-backend</profile>
<metadataRepository>file:\${basedir}/target/p2-repo</metadataRepository>
<artifactRepository>file:\${basedir}/target/p2-repo</artifactRepository>
<destination>\${basedir}/../wso2/components</destination>
<deleteOldProfileFiles>false</deleteOldProfileFiles>
<features>
<!-- Connected Cup BE Features -->
<feature>
<id>org.coffeeking.connectedcup.backend.feature.group</id>
<version>\${org.coffeeking.version}</version>
</feature>
</features>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>default-feature-install</id>
<phase>package</phase>
<configuration>
<tasks>
<replace token="false" value="true"
dir="../wso2/components/default/configuration/org.eclipse.equinox.simpleconfigurator">
<include name="**/bundles.info"/>
</replace>
<replace token="false" value="true"
dir="../wso2/components/device-manager/configuration/org.eclipse.equinox.simpleconfigurator">
<include name="**/bundles.info"/>
</replace>
<replace token="false" value="true"
dir="../wso2/components/device-backend/configuration/org.eclipse.equinox.simpleconfigurator">
<include name="**/bundles.info"/>
</replace>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<!-- Before adding ANYTHING in here, please start a discussion on the dev list.
Ideally the Axis2 build should only use Maven central (which is available
by default) and nothing else. We had troubles with other repositories in
the past. Therefore configuring additional repositories here should be
considered very carefully. -->
<repository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.snapshots</id>
<name>WSO2 Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<properties>
<carbon.device.mgt.plugin.version>${carbon.device.mgt.plugin.version}</carbon.device.mgt.plugin.version>
<org.coffeeking.version>1.0.0</org.coffeeking.version>
</properties>
</project>

View File

@ -1,155 +0,0 @@
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>device-mgt-iot-connectedcup</artifactId>
<groupId>org.coffeeking</groupId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.coffeeking.connectedcup.agent</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>WSO2 IoTS(Device Types) - Connected Cup Agent Web app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20151123</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
<build>
<finalName>connected-cup-agent</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<!-- Before adding ANYTHING in here, please start a discussion on the dev list.
Ideally the Axis2 build should only use Maven central (which is available
by default) and nothing else. We had troubles with other repositories in
the past. Therefore configuring additional repositories here should be
considered very carefully. -->
<repository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.releases</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
</repository>
<repository>
<id>wso2.snapshots</id>
<name>WSO2 Snapshot Repository</name>
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
</project>

View File

@ -1,67 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.coffeeking.agent.datasense;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.coffeeking.agent.transport.TransportHandlerException;
import org.coffeeking.agent.transport.mqtt.ConnectedCupMQttTransportHandler;
import org.json.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.StreamCorruptedException;
public class PushLevel extends HttpServlet {
private static final Log log = LogFactory.getLog(PushLevel.class);
private ConnectedCupMQttTransportHandler connectedCupMQttTransportHandler;
public PushLevel() {
connectedCupMQttTransportHandler = ConnectedCupMQttTransportHandler.getInstance();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String deviceId = req.getParameter("deviceId");
String tenantDomain = req.getParameter("tenantDomain");
String deviceOwner = req.getParameter("deviceOwner");
String payload = req.getParameter("payload");
payload = " {\"event\": {\"metaData\": {\"owner\": \"" + deviceOwner +
"\", \"type\": \"coffeelevel\",\"deviceId\": " +
"\"" + deviceId + "\",\"timestamp\": " + System.currentTimeMillis() +
"},\"payloadData\": { \"coffeelevel\": " + Float.parseFloat(payload) + ", \"temperature\": 0} }}";
String token = (String) req.getSession().getAttribute("token");
if (!connectedCupMQttTransportHandler.isConnected()) {
connectedCupMQttTransportHandler.setToken(token);
connectedCupMQttTransportHandler.connect();
}
try {
if (connectedCupMQttTransportHandler.isConnected()) {
connectedCupMQttTransportHandler.publishToConnectedCup(deviceOwner, deviceId, payload, tenantDomain, 0,
true);
}
} catch (TransportHandlerException e) {
log.error(e);
resp.sendError(500);
}
}
}

View File

@ -1,66 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.coffeeking.agent.datasense;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.coffeeking.agent.transport.TransportHandlerException;
import org.coffeeking.agent.transport.mqtt.ConnectedCupMQttTransportHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class PushTemperature extends HttpServlet {
private static final Log log = LogFactory.getLog(PushTemperature.class);
private ConnectedCupMQttTransportHandler connectedCupMQttTransportHandler;
public PushTemperature() {
connectedCupMQttTransportHandler = ConnectedCupMQttTransportHandler.getInstance();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String deviceId = req.getParameter("deviceId");
String tenantDomain = req.getParameter("tenantDomain");
String payload = req.getParameter("payload");
String deviceOwner = req.getParameter("deviceOwner");
payload = " {\"event\": {\"metaData\": {\"owner\": \"" + deviceOwner +
"\", \"type\": \"temperature\",\"deviceId\": " +
"\"" + deviceId + "\",\"timestamp\": " + System.currentTimeMillis() +
"},\"payloadData\": { \"temperature\": " + Float.parseFloat(payload) + ", \"coffeelevel\": 0} }}";
String token = (String) req.getSession().getAttribute("token");
if (!connectedCupMQttTransportHandler.isConnected()) {
connectedCupMQttTransportHandler.setToken(token);
connectedCupMQttTransportHandler.connect();
}
try {
if (connectedCupMQttTransportHandler.isConnected()) {
connectedCupMQttTransportHandler.publishToConnectedCup(deviceOwner, deviceId, payload, tenantDomain, 0,
true);
}
} catch (TransportHandlerException e) {
log.error(e);
resp.sendError(500);
}
}
}

View File

@ -1,50 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.coffeeking.agent.transport;
/**
* This interface consists of the core functionality related to the transport between any device and the server. The
* interface is an abstraction, regardless of the underlying protocol used for the transport. Implementation of this
* interface by any class that caters a specific protocol (ex: HTTP, XMPP, MQTT, CoAP) would ideally have methods
* specific to the protocol used for communication and thees methods that implement the logic related to the devices
* using the protocol.
*
* @param <T> a message type specific to the protocol implemented
*/
public interface TransportHandler<T> {
int DEFAULT_TIMEOUT_INTERVAL = 5000; // millis ~ 10 sec
void connect();
boolean isConnected();
void processIncomingMessage() throws TransportHandlerException;
void processIncomingMessage(T message) throws TransportHandlerException;
void processIncomingMessage(T message, String... messageParams) throws TransportHandlerException;
void publishDeviceData() throws TransportHandlerException;
void publishDeviceData(T publishData) throws TransportHandlerException;
void publishDeviceData(String... publishData) throws TransportHandlerException;
void disconnect();
}

View File

@ -1,56 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.coffeeking.agent.transport;
public class TransportHandlerException extends Exception {
private static final long serialVersionUID = 2736466230451105440L;
private String errorMessage;
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public TransportHandlerException(String msg, Exception nestedEx) {
super(msg, nestedEx);
setErrorMessage(msg);
}
public TransportHandlerException(String message, Throwable cause) {
super(message, cause);
setErrorMessage(message);
}
public TransportHandlerException(String msg) {
super(msg);
setErrorMessage(msg);
}
public TransportHandlerException() {
super();
}
public TransportHandlerException(Throwable cause) {
super(cause);
}
}

View File

@ -1,160 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.coffeeking.agent.transport.mqtt;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.coffeeking.agent.transport.TransportHandlerException;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import java.io.File;
import java.util.UUID;
import java.util.concurrent.ScheduledFuture;
public class ConnectedCupMQttTransportHandler extends MQTTTransportHandler {
private static Log log = LogFactory.getLog(ConnectedCupMQttTransportHandler.class);
private static String iotServerSubscriber = UUID.randomUUID().toString().substring(0, 5);
private static final String DEVICE_TYPE = "connectedcup";
private static ConnectedCupMQttTransportHandler connectedCupMQttTransportHandler;
private static String publishTopic = "%s/" + DEVICE_TYPE + "/%s";
protected ConnectedCupMQttTransportHandler() {
super(iotServerSubscriber, DEVICE_TYPE, "tcp://localhost:1886", "");
}
private ScheduledFuture<?> dataPushServiceHandler;
public ScheduledFuture<?> getDataPushServiceHandler() {
return dataPushServiceHandler;
}
public void setToken(String token) {
setUsernameAndPassword(token, "");
}
@Override
public void connect() {
Runnable connect = new Runnable() {
@Override
public void run() {
log.info("Trying to connect..");
while (!isConnected()) {
try {
connectToQueue();
} catch (TransportHandlerException e) {
log.warn("Connection to MQTT Broker at: " +
mqttBrokerEndPoint + " failed");
try {
Thread.sleep(timeoutInterval);
} catch (InterruptedException ex) {
log.error("MQTT-Subscriber: Thread Sleep Interrupt Exception");
}
}
}
log.info("Connected..");
}
};
Thread connectorThread = new Thread(connect);
connectorThread.start();
}
@Override
public void processIncomingMessage(MqttMessage message, String... messageParams) {
}
public void publishToConnectedCup(String deviceOwner , String deviceId, String payLoad, String tenantDomain, int qos, boolean retained)
throws TransportHandlerException{
String topic = String.format(publishTopic, tenantDomain, deviceId);
publishToQueue(topic, payLoad, qos, retained);
}
@Override
public void disconnect() {
Runnable stopConnection = new Runnable() {
public void run() {
while (isConnected()) {
try {
dataPushServiceHandler.cancel(true);
closeConnection();
} catch (MqttException e) {
if (log.isDebugEnabled()) {
log.warn("Unable to 'STOP' MQTT connection at broker at: " +
mqttBrokerEndPoint);
}
try {
Thread.sleep(timeoutInterval);
} catch (InterruptedException e1) {
log.error("MQTT-Terminator: Thread Sleep Interrupt Exception");
}
}
}
}
};
Thread terminatorThread = new Thread(stopConnection);
terminatorThread.start();
}
@Override
public void publishDeviceData() throws TransportHandlerException {
}
@Override
public void publishDeviceData(MqttMessage publishData) throws TransportHandlerException {
}
@Override
public void publishDeviceData(String... publishData) throws TransportHandlerException {
}
@Override
public void processIncomingMessage() {
}
@Override
public void processIncomingMessage(MqttMessage message) throws TransportHandlerException {
}
public static ConnectedCupMQttTransportHandler getInstance(){
if(connectedCupMQttTransportHandler == null){
connectedCupMQttTransportHandler = new ConnectedCupMQttTransportHandler();
}
return connectedCupMQttTransportHandler;
}
}

View File

@ -1,372 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.coffeeking.agent.transport.mqtt;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.coffeeking.agent.transport.TransportHandler;
import org.coffeeking.agent.transport.TransportHandlerException;
import org.eclipse.paho.client.mqttv3.*;
import java.io.File;
import java.nio.charset.StandardCharsets;
/**
* This is an abstract class that implements the "TransportHandler" interface. The interface is an abstraction for
* the core functionality with regards to device-server communication regardless of the Transport protocol. This
* specific class contains the HTTP-Transport specific implementations. The class implements utility methods for the
* case of a HTTP communication. However, this "abstract class", even-though it implements the "TransportHandler"
* interface, does not contain the logic relevant to the interface methods. The specific functionality of the
* interface methods are intended to be implemented by the concrete class that extends this abstract class and
* utilizes the HTTP specific functionality (ideally a device API writer who would like to communicate to the device
* via HTTP Protocol).
* <p/>
* This class contains the Device-Management specific implementation for all the MQTT functionality. This includes
* connecting to a MQTT Broker & subscribing to the appropriate MQTT-topic, action plan upon losing connection or
* successfully delivering a message to the broker and processing incoming messages. Makes use of the 'Paho-MQTT'
* library provided by Eclipse Org.
*/
public abstract class MQTTTransportHandler
implements MqttCallback, TransportHandler<MqttMessage> {
private static final Log log = LogFactory.getLog(MQTTTransportHandler.class);
public static final int DEFAULT_MQTT_QUALITY_OF_SERVICE = 0;
private MqttClient client;
private String clientId;
private MqttConnectOptions options;
private String clientWillTopic;
protected String mqttBrokerEndPoint;
protected int timeoutInterval;
protected String subscribeTopic;
/**
* Constructor for the MQTTTransportHandler which takes in the owner, type of the device
* and the MQTT Broker URL and the topic to subscribe.
*
* @param deviceOwner the owner of the device.
* @param deviceType the CDMF Device-Type of the device.
* @param mqttBrokerEndPoint the IP/URL of the MQTT broker endpoint.
* @param subscribeTopic the MQTT topic to which the client is to be subscribed
*/
protected MQTTTransportHandler(String deviceOwner, String deviceType,
String mqttBrokerEndPoint,
String subscribeTopic) {
this.clientId = deviceOwner + ":" + deviceType;
this.subscribeTopic = subscribeTopic;
this.clientWillTopic = deviceType + File.separator + "disconnection";
this.mqttBrokerEndPoint = mqttBrokerEndPoint;
this.timeoutInterval = DEFAULT_TIMEOUT_INTERVAL;
this.initSubscriber();
}
/**
* Constructor for the MQTTTransportHandler which takes in the owner, type of the device
* and the MQTT Broker URL and the topic to subscribe. Additionally this constructor takes in
* the reconnection-time interval between successive attempts to connect to the broker.
*
* @param deviceOwner the owner of the device.
* @param deviceType the CDMF Device-Type of the device.
* @param mqttBrokerEndPoint the IP/URL of the MQTT broker endpoint.
* @param subscribeTopic the MQTT topic to which the client is to be subscribed
* @param intervalInMillis the time interval in MILLI-SECONDS between successive
* attempts to connect to the broker.
*/
protected MQTTTransportHandler(String deviceOwner, String deviceType,
String mqttBrokerEndPoint, String subscribeTopic,
int intervalInMillis) {
this.clientId = deviceOwner + ":" + deviceType;
this.subscribeTopic = subscribeTopic;
//TODO:: Use constant strings
this.clientWillTopic = deviceType + File.separator + "disconnection";
this.mqttBrokerEndPoint = mqttBrokerEndPoint;
this.timeoutInterval = intervalInMillis;
this.initSubscriber();
}
public void setUsernameAndPassword (String username, String password) {
options.setUserName(username);
options.setPassword(password.toCharArray());
}
public void setTimeoutInterval(int timeoutInterval) {
this.timeoutInterval = timeoutInterval;
}
/**
* Initializes the MQTT-Client. Creates a client using the given MQTT-broker endpoint and the
* clientId (which is constructed by a concatenation of [deviceOwner]:[deviceType]). Also sets
* the client's options parameter with the clientWillTopic (in-case of connection failure) and
* other info. Also sets the call-back this current class.
*/
private void initSubscriber() {
try {
client = new MqttClient(this.mqttBrokerEndPoint, clientId, null);
//TODO:: Need to check for debug
log.info("MQTT subscriber was created with ClientID : " + clientId);
} catch (MqttException ex) {
//TODO:: Remove unnecessary formatting and print exception
String errorMsg = "MQTT Client Error\n" + "\tReason: " + ex.getReasonCode() +
"\n\tMessage: " + ex.getMessage() + "\n\tLocalMsg: " +
ex.getLocalizedMessage() + "\n\tCause: " + ex.getCause() +
"\n\tException: " + ex;
log.error(errorMsg);
//TODO:: Throw the error out
}
options = new MqttConnectOptions();
options.setCleanSession(true);
//TODO:: Use constant strings
options.setWill(clientWillTopic, "Connection-Lost".getBytes(StandardCharsets.UTF_8), 2,
true);
client.setCallback(this);
}
/**
* Checks whether the connection to the MQTT-Broker persists.
*
* @return true if the client is connected to the MQTT-Broker, else false.
*/
@Override
public boolean isConnected() {
return client.isConnected();
}
/**
* Connects to the MQTT-Broker and if successfully established connection.
*
* @throws TransportHandlerException in the event of 'Connecting to' the MQTT broker fails.
*/
protected void connectToQueue() throws TransportHandlerException {
try {
client.connect(options);
if (log.isDebugEnabled()) {
log.debug("Subscriber connected to queue at: " + this.mqttBrokerEndPoint);
}
} catch (MqttSecurityException ex) {
String errorMsg = "MQTT Security Exception when connecting to queue\n" + "\tReason: " +
" " +
ex.getReasonCode() + "\n\tMessage: " + ex.getMessage() +
"\n\tLocalMsg: " + ex.getLocalizedMessage() + "\n\tCause: " +
ex.getCause() + "\n\tException: " + ex;
//TODO:: Compulsory log of errors and remove formatted error
if (log.isDebugEnabled()) {
log.debug(errorMsg);
}
throw new TransportHandlerException(errorMsg, ex);
} catch (MqttException ex) {
//TODO:: Compulsory log of errors and remove formatted error
String errorMsg = "MQTT Exception when connecting to queue\n" + "\tReason: " +
ex.getReasonCode() + "\n\tMessage: " + ex.getMessage() +
"\n\tLocalMsg: " + ex.getLocalizedMessage() + "\n\tCause: " +
ex.getCause() + "\n\tException: " + ex;
if (log.isDebugEnabled()) {
log.debug(errorMsg);
}
throw new TransportHandlerException(errorMsg, ex);
}
}
/**
* Subscribes to the MQTT-Topic specific to this MQTT Client. (The MQTT-Topic specific to the
* device is taken in as a constructor parameter of this class) .
*
* @throws TransportHandlerException in the event of 'Subscribing to' the MQTT broker
* fails.
*/
protected void subscribeToQueue() throws TransportHandlerException {
try {
//TODO:: QoS Level take it from a variable
client.subscribe(subscribeTopic, 0);
if (log.isDebugEnabled()) {
log.debug("Subscriber '" + clientId + "' subscribed to topic: " + subscribeTopic);
}
} catch (MqttException ex) {
//TODO:: Compulsory log of errors and remove formatted error
String errorMsg = "MQTT Exception when trying to subscribe to topic: " +
subscribeTopic + "\n\tReason: " + ex.getReasonCode() +
"\n\tMessage: " + ex.getMessage() + "\n\tLocalMsg: " +
ex.getLocalizedMessage() + "\n\tCause: " + ex.getCause() +
"\n\tException: " + ex;
if (log.isDebugEnabled()) {
log.debug(errorMsg);
}
throw new TransportHandlerException(errorMsg, ex);
}
}
/**
* This method is used to publish reply-messages for the control signals received.
* Invocation of this method calls its overloaded-method with a QoS equal to that of the
* default value.
*
* @param topic the topic to which the reply message is to be published.
* @param payLoad the reply-message (payload) of the MQTT publish action.
*/
protected void publishToQueue(String topic, String payLoad)
throws TransportHandlerException {
publishToQueue(topic, payLoad, DEFAULT_MQTT_QUALITY_OF_SERVICE, false);
}
/**
* This is an overloaded method that publishes MQTT reply-messages for control signals
* received form the IoT-Server.
*
* @param topic the topic to which the reply message is to be published
* @param payLoad the reply-message (payload) of the MQTT publish action.
* @param qos the Quality-of-Service of the current publish action.
* Could be 0(At-most once), 1(At-least once) or 2(Exactly once)
*/
protected void publishToQueue(String topic, String payLoad, int qos, boolean retained)
throws TransportHandlerException {
try {
client.publish(topic, payLoad.getBytes(StandardCharsets.UTF_8), qos, retained);
if (log.isDebugEnabled()) {
log.debug("Message: " + payLoad + " to MQTT topic [" + topic +
"] published successfully");
}
} catch (MqttException ex) {
String errorMsg =
"MQTT Client Error" + "\n\tReason: " + ex.getReasonCode() + "\n\tMessage: " +
ex.getMessage() + "\n\tLocalMsg: " + ex.getLocalizedMessage() +
"\n\tCause: " + ex.getCause() + "\n\tException: " + ex;
log.info(errorMsg);
throw new TransportHandlerException(errorMsg, ex);
}
}
protected void publishToQueue(String topic, MqttMessage message)
throws TransportHandlerException {
try {
client.publish(topic, message);
if (log.isDebugEnabled()) {
log.debug("Message: " + message.toString() + " to MQTT topic [" + topic +
"] published successfully");
}
} catch (MqttException ex) {
//TODO:: Compulsory log of errors and remove formatted error
String errorMsg =
"MQTT Client Error" + "\n\tReason: " + ex.getReasonCode() + "\n\tMessage: " +
ex.getMessage() + "\n\tLocalMsg: " + ex.getLocalizedMessage() +
"\n\tCause: " + ex.getCause() + "\n\tException: " + ex;
log.info(errorMsg);
throw new TransportHandlerException(errorMsg, ex);
}
}
/**
* Callback method which is triggered once the MQTT client losers its connection to the broker.
* Spawns a new thread that executes necessary actions to try and reconnect to the endpoint.
*
* @param throwable a Throwable Object containing the details as to why the failure occurred.
*/
@Override
public void connectionLost(Throwable throwable) {
if (log.isDebugEnabled()) {
log.warn("Lost Connection for client: " + this.clientId + " to " + this.mqttBrokerEndPoint + "." +
"\nThis was due to - " + throwable.getMessage());
}
Thread reconnectThread = new Thread() {
public void run() {
connect();
}
};
reconnectThread.setDaemon(true);
reconnectThread.start();
}
/**
* Callback method which is triggered upon receiving a MQTT Message from the broker. Spawns a
* new thread that executes any actions to be taken with the received message.
*
* @param topic the MQTT-Topic to which the received message was published to and the
* client was subscribed to.
* @param mqttMessage the actual MQTT-Message that was received from the broker.
*/
@Override
public void messageArrived(final String topic, final MqttMessage mqttMessage) {
if (log.isDebugEnabled()) {
log.debug("Got an MQTT message '" + mqttMessage.toString() + "' for topic '" + topic + "'.");
}
Thread messageProcessorThread = new Thread() {
public void run() {
try {
processIncomingMessage(mqttMessage, topic);
} catch (TransportHandlerException e) {
log.error("An error occurred when trying to process received MQTT message [" + mqttMessage + "] " +
"for topic [" + topic + "].", e);
}
}
};
messageProcessorThread.setDaemon(true);
messageProcessorThread.start();
}
/**
* Callback method which gets triggered upon successful completion of a message delivery to
* the broker.
*
* @param iMqttDeliveryToken the MQTT-DeliveryToken which includes the details about the
* specific message delivery.
*/
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
String topic = iMqttDeliveryToken.getTopics()[0];
String client = iMqttDeliveryToken.getClient().getClientId();
try {
if (iMqttDeliveryToken.isComplete()) {
if (log.isDebugEnabled()) {
if (iMqttDeliveryToken.getMessage() != null) {
String message = iMqttDeliveryToken.getMessage().toString();
log.debug("Message to client [" + client + "] under topic (" + topic +
") was delivered successfully with the delivery message: '" + message + "'");
} else {
log.debug("Message to client [" + client + "] under topic (" + topic +
") was delivered successfully.");
}
}
} else {
log.warn("FAILED: Delivery of MQTT message to [" + client + "] under topic [" + topic + "] failed.");
}
} catch (MqttException e) {
//TODO:: Throw errors
log.error("Error occurred whilst trying to read the message from the MQTT delivery token.");
}
}
/**
* Closes the connection to the MQTT Broker.
*/
public void closeConnection() throws MqttException {
if (client != null && isConnected()) {
client.disconnect();
}
}
}

View File

@ -1,27 +0,0 @@
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>ConnectedCup-Webapp</display-name>
<servlet>
<servlet-name>PushTemperature</servlet-name>
<servlet-class>org.coffeeking.agent.datasense.PushTemperature</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PushTemperature</servlet-name>
<url-pattern>/push_temperature</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>PushLevel</servlet-name>
<servlet-class>org.coffeeking.agent.datasense.PushLevel</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PushLevel</servlet-name>
<url-pattern>/push_level</url-pattern>
</servlet-mapping>
</web-app>

View File

@ -1,299 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
input[type=range][orient=vertical]
{
writing-mode: bt-lr; /* IE */
-webkit-appearance: slider-vertical; /* WebKit */
width: 8px;
height: 175px;
padding: 0 5px;
}
h1 {
padding-top: 10px;
text-align: center;
}
.left-pane{
float: left;
width: 30%;
text-align: center;
min-width: 325px;
}
.right-pane{
float: right;
background-color: rgba(204, 204, 204, 0.61);
width: 70%;
}
.coffee-wrapper{
margin: 10% 0 5% 10%;
text-align: center;
}
.coffee-top{
position: absolute;
bottom: 10px;
height: 30px;
width: 100%;
z-index: 99;
background-color: aquamarine;
}
.coffee-bottom{
position: absolute;
bottom: 0px;
height: 10px;
width: 100%;
z-index: 98;
background-color: aqua;
}
.handle {
position: absolute;
height: 200px;
width: 97px;
top: 39px;
left: -111px;
border-top-left-radius: 75px 100px;
border-bottom-left-radius: 75px 100px;
border-top-right-radius: 50% 20px;
border-bottom-right-radius: 50% 20px;
background: linear-gradient(to left, rgba(0, 0, 0, 0.01) 0%, rgba(0, 0, 0, 0.01) 100%);
background-color: rgba(255, 255, 255, 0.28);
border: 1px solid rgba(255, 255, 255, 0.25);
}
.handle:after {
content: "";
position: absolute;
height: 167px;
width: 76px;
top: 15px;
right: 0;
border-top-left-radius: 45px 70px;
border-bottom-left-radius: 45px 70px;
border-top-right-radius: 45px 35px;
border-bottom-right-radius: 45px 35px;
background: rgba(204, 204, 204, 0.3);
}
:before, :after {
content: '';
display: block;
position: absolute;
}
html, body {
height: 100%;
}
.coffee {
display: inline-block;
position: relative;
width: 300px;
margin: 0 20px 50px 0;
}
.coffee:after {
height: 14px;
width: 300px;
border-radius: 46px/10px;
box-shadow: 0px 1px 4px -2px rgba(0, 0, 0, 0.2), 0px 2px 10px -3px rgba(0, 0, 0, 0.1);
bottom: -7.6px;
z-index: 0;
}
.coffee:before {
height: 14px;
width: 300px;
border-radius: 46px/10px;
box-shadow: 0px 2px 10px -2px rgba(0, 204, 255, 0.3), 0px 2px 15px -2px rgba(0, 204, 255, 0.4);
bottom: -7.6px;
z-index: 0;
}
.coffee_main {
height: 300px;
position: relative;
width: 298px;
background: none;
border: 1px solid rgba(255, 255, 255, 0.5);
border-top: none;
border-bottom: none;
}
.coffee_main:after, .coffee_main:before {
height: 12px;
width: 296px;
border-radius: 46px/10px;
border: 2px solid rgba(255, 255, 255, 0.5);
border-bottom: 2px solid rgba(255, 255, 255, 0.7);
border-top: 1px solid rgba(255, 255, 255, 0.3);
left: -1px;
}
.coffee_main:after {
top: -7px;
box-shadow: 0px 0px 6px rgba(255, 255, 255, 0.6) inset, 0px 3px 3px -1px rgba(255, 255, 255, 0.4), 0px 0px 3px rgba(0, 0, 0, 0.05) inset, 0px 0px 6px rgba(255, 255, 255, 0.7) inset, 0px 0px 3px rgba(0, 0, 0, 0.15) inset;
}
.coffee_main:before {
top: 294px;
box-shadow: 0px 0px 6px rgba(255, 255, 255, 0.7) inset, 0px 0px 3px rgba(0, 0, 0, 0.15) inset;
}
.coffee_mouth {
height: 52px;
width: 44px;
margin: 0px auto;
position: relative;
background: none;
border: 1px solid rgba(0, 0, 0, 0.04);
border-top: none;
border-bottom: none;
background: linear-gradient(to right, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 5%, rgba(255, 255, 255, 0) 95%, rgba(255, 255, 255, 0.3));
box-shadow: 0px 0px 6px rgba(255, 255, 255, 0.3);
}
.coffee_mouth:after {
height: 6px;
width: 44px;
border-radius: 25px/6px;
border: 1px solid rgba(255, 255, 255, 0.4);
left: -1px;
top: -4px;
z-index: 1;
box-shadow: 0px 0px 3px rgba(255, 255, 255, 0.3);
}
.coffee_inner {
height: 295px;
width: 92%;
margin: 0px auto;
border-radius: 10px 10px 20px 20px/10px;
border: 1px solid rgba(0, 0, 0, 0.01);
border-top: 1px solid rgba(255, 255, 255, 0.3);
border-bottom-width: 0.5px;
position: relative;
box-shadow: 0px 0px 2px rgba(255, 255, 255, 0.5) inset, 0px 0px 8px rgba(255, 255, 255, 0.6) inset, 0px 0px 5px rgba(255, 255, 255, 0.5);
position: relative;
top: 1px;
}
.coffee_inner:before {
border-radius: 40px/4px;
top: 140px;
width: 90%;
left: 3px;
height: 9px;
}
.coffee_top .highlight {
display: block;
height: 30px;
width: 20px;
position: absolute;
left: 5px;
top: 5px;
transform: skew(0deg, 5deg);
background: linear-gradient(to right, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.6) 4%, rgba(255, 255, 255, 0.2) 98%, rgba(255, 255, 255, 0));
}
.coffee_top .highlight:after {
height: 30px;
width: 2px;
left: -3px;
top: -1px;
transform: skew(0deg, 5deg);
background: rgba(255, 255, 255, 0.3);
}
.coffee_main .highlight {
display: block;
height: 301px;
width: 25px;
position: absolute;
left: 10px;
top: 6px;
transform: skew(0deg, 6deg);
background: linear-gradient(to right, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.5) 4%, rgba(255, 255, 255, 0.2) 98%, rgba(255, 255, 255, 0));
z-index: 2;
}
.coffee_main .highlight:after {
height: 150px;
width: 4px;
left: -6px;
top: 0px;
transform: skew(0deg, 3deg);
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 80%);
}
.coffee_neck .highlight {
display: block;
height: 20px;
width: 25px;
position: absolute;
left: 2px;
top: 6px;
transform: skew(0deg, 6deg);
background: linear-gradient(to right, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.3) 4%, rgba(255, 255, 255, 0.1) 98%, rgba(255, 255, 255, 0));
}
.water {
background: linear-gradient(-85deg, rgba(167, 92, 24, 0.35), rgba(169, 108, 52, 0.55) 70%, rgba(185, 128, 76, 0.4));
width: 99%;
height: 80px;
position: absolute;
left: 1px;
bottom: 1px;
border-radius: 50px 50px 20px 20px/8px 8px 10px 10px;
box-shadow: 0px 0px 6px rgba(165, 117, 73, 0.5) inset, 0px 0.2px 3px -1px rgba(0, 0, 0, 0.3) inset, 0px 2px 6px -1px rgba(0, 0, 0, 0.1) inset, 0px 2px 5px rgba(190,155,123,0.3), 0px 1px 3px rgba(190,155,123,0.2);
}
.water:after {
height: 10px;
width: 100%;
left: -1px;
top: 0px;
background: linear-gradient(to right, rgba(255, 255, 255, 0.4), rgba(255, 127, 0, 0.05) 50%, rgba(251, 148, 0, 0.1) 80%, rgba(255, 255, 255, 0.3));
border-radius: 50px/8px;
border: 1px solid rgba(255, 255, 255, 0.2);
border-bottom-color: rgba(255, 255, 255, 0.4);
box-shadow: 0px 1px 2px -1px rgba(165, 90, 26, 0.35);
}
.water:before {
height: 10px;
width: 100%;
left: 2px;
bottom: -1px;
background: linear-gradient(to right, rgba(190,155,123,0.2), rgba(190,155,123,0.1) 50%, rgba(190,155,123,0.2) 80%, rgba(190,155,123,0.3));
border-radius: 50px/10px;
border: 1px solid rgba(255, 255, 255, 0.1);
border-bottom: none;
box-shadow: 0px -2px 3px -1px rgba(190,155,123,0.25);
}
.water {
height: 0px;
-webkit-transition: all 3s ease-out;
-moz-transition: all 3s ease-out;
-o-transition: all 3s ease-out;
transition: all 3s ease-out;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
}

View File

@ -1,134 +0,0 @@
<%--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
--%>
<html>
<head>
<title>Connected Coffee Cup</title>
<link rel="stylesheet" href="css/coffee.css">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<%
String deviceId = request.getParameter("deviceId");
if (deviceId != null) {
request.getSession().setAttribute("deviceId", deviceId);
}
String deviceOwner = request.getParameter("deviceOwner");
if (deviceOwner != null) {
request.getSession().setAttribute("deviceOwner", deviceOwner);
}
String tenantDomain = request.getParameter("tenantDomain");
if (tenantDomain != null) {
request.getSession().setAttribute("tenantDomain", tenantDomain);
}
String token = request.getParameter("token");
if (token != null) {
request.getSession().setAttribute("token", token);
}
%>
<div class="container">
<h1>Coffee Cup - Demo</h1>
<div class="left-pane">
<table style="width:100%">
<tr>
<td align="right" style="width: 140px">Temperature:</td>
<td id="temperature_level" align="left" style="width: 60px">0 C</td>
<td align="right" style="width: 140px">Coffee Level:</td>
<td id="coffee_level" align="left" style="width: 60px">0%</td>
</tr>
<tr>
<td colspan="2" align="center">
<input id="amount_temp" type="range" orient="vertical" min="0" max="100"
value="0"
onchange="updateTemperature(this.value)"><br/>
</td>
<td colspan="2" align="center">
<input id="amount_coffee" type="range" orient="vertical" min="0" max="100"
value="0"
onchange="updateCoffee(this.value)">
</td>
</tr>
<tr>
<td colspan="4" align="center">
<button id="order-cup">Order Coffee Cup</button>
</td>
</tr>
</table>
</div>
<div class="right-pane">
<div class="coffee-wrapper">
<div class="coffee">
<div class="coffee_main">
<div class="coffee_inner">
<div class="handle"></div>
<div class="water" id="water"></div>
</div>
<div class="highlight"></div>
</div>
</div>
</div>
</div>
</div>
<script src="js/libs/jquery.min.js"></script>
<script src="js/coffee.js"></script>
<script src="js/libs/htmlpreview.min.js"></script>
<script>HTMLPreview.replaceAssets();</script>
<script>
$('#order-cup').click(function () {
var deviceId = '<%=request.getSession().getAttribute("deviceId")%>';
var deviceOwner = '<%=request.getSession().getAttribute("deviceOwner")%>';
var token = '<%=request.getSession().getAttribute("token")%>';
var url = '/connectedcup/device/ordercoffee?deviceId=' + deviceId ;
$.ajax({
type: 'POST',
url: url,
headers: {
'Authorization': 'Bearer ' + token
}
});
});
function sendData() {
var deviceId = '<%=request.getSession().getAttribute("deviceId")%>';
var deviceOwner = '<%=request.getSession().getAttribute("deviceOwner")%>';
var tenantDomain = '<%=request.getSession().getAttribute("tenantDomain")%>';
if (tenantDomain == null) {
tenantDomain = 'carbon.super';
}
var tempPayload = temperature;
var levelPayload = coffee_amount;
$.post('/connected-cup-agent/push_temperature?deviceId=' + deviceId + '&deviceOwner=' + deviceOwner +
'&payload=' + tempPayload + '&tenantDomain=' + tenantDomain);
$.post('/connected-cup-agent/push_level?deviceId=' + deviceId + '&deviceOwner=' + deviceOwner +
'&payload=' + levelPayload + '&tenantDomain=' + tenantDomain);
setTimeout(sendData, 5000);
}
sendData();
</script>
</body>
</html>

View File

@ -1,39 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var temperature = 0;
var coffee_amount = 0;
function updateCoffee(newValue) {
var coffee_level = document.getElementById('coffee_level');
coffee_level.innerHTML = newValue + '%';
coffee_amount = newValue;
var coffee = document.getElementById('water');
if (newValue == 0) {
coffee.style.height = (newValue * 3) + 'px';
} else {
coffee.style.height = (newValue * 3) - 3 + 'px';
}
}
function updateTemperature(newValue) {
temperature = newValue;
var temperature_level = document.getElementById('temperature_level');
temperature_level.innerHTML = newValue + ' C';
}

View File

@ -1,19 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var HTMLPreview={content:"",previewform:document.getElementById("previewform"),file:function(){return location.search.substring(1)},raw:function(){return HTMLPreview.file().replace(/\/\/github\.com/,"//raw.githubusercontent.com").replace(/\/blob\//,"/")},replaceAssets:function(){var a,b,c;a=document.querySelectorAll("iframe[src],frame[src]");for(b=0;b<a.length;++b)if(c=a[b].src,0<c.indexOf("//raw.githubusercontent.com")||0<c.indexOf("//bitbucket.org"))a[b].src="//"+location.hostname+location.pathname+"?"+c;a=document.querySelectorAll("a[href]");for(b=0;b<a.length;++b)if(c=a[b].href,0<c.indexOf("#"))a[b].href="//"+location.hostname+location.pathname+location.search+"#"+a[b].hash.substring(1);else if((0<c.indexOf("//raw.githubusercontent.com")||0<c.indexOf("//bitbucket.org"))&&(0<c.indexOf(".html")||0<c.indexOf(".htm")))a[b].href="//"+location.hostname+location.pathname+"?"+c;if(!document.querySelectorAll("frameset").length){a=document.querySelectorAll("link[rel=stylesheet]");for(b=0;b<a.length;++b)c=a[b].href,(0<c.indexOf("//raw.githubusercontent.com")||0<c.indexOf("//bitbucket.org"))&&HTMLPreview.send(c,"loadCSS");a=document.querySelectorAll("script");for(b=0;b<a.length;++b)c=a[b].src,0<c.indexOf("//raw.githubusercontent.com")||0<c.indexOf("//bitbucket.org")?HTMLPreview.send(c,"loadJS"):!c&&0>a[b].innerHTML.indexOf("HTMLPreview")&&document.write(a[b].outerHTML)}},loadHTML:function(a){a&&a.query&&a.query.diagnostics&&a.query.diagnostics.redirect?HTMLPreview.send(a.query.diagnostics.redirect.content,"loadHTML"):a&&a.query&&a.query.results&&a.query.results.resources&&a.query.results.resources.content&&200==a.query.results.resources.status?(HTMLPreview.content=a.query.results.resources.content.replace(/<head>/i,'<head><base href="'+HTMLPreview.raw()+'">').replace(/<\/body>/i,'<script src="//'+location.hostname+'/htmlpreview.min.js">\x3c/script><script>HTMLPreview.replaceAssets();\x3c/script></body>').replace(/<\/head>\s*<frameset/gi,'<script src="//'+location.hostname+'/htmlpreview.min.js">\x3c/script><script>document.addEventListener("DOMContentLoaded",HTMLPreview.replaceAssets,false);\x3c/script></head><frameset'),setTimeout(function(){document.open();document.write(HTMLPreview.content);document.close()},50)):HTMLPreview.previewform.innerHTML=a&&a.error&&a.error.description?a.error.description:"Error: Cannot load file "+HTMLPreview.raw()},loadCSS:function(a){a&&a.query&&a.query.diagnostics&&a.query.diagnostics.redirect?HTMLPreview.send(a.query.diagnostics.redirect.content,"loadCSS"):a&&a.query&&a.query.results&&a.query.results.resources&&a.query.results.resources.content&&200==a.query.results.resources.status&&document.write("<style>"+a.query.results.resources.content.replace(/url\((?:'|")?([^\/][^:'"\)]+)(?:'|")?\)/gi,"url("+a.query.results.resources.url.replace(/[^\/]+\.css.*$/gi,"")+"$1)")+"</style>")},loadJS:function(a){a&&a.query&&a.query.diagnostics&&a.query.diagnostics.redirect?HTMLPreview.send(a.query.diagnostics.redirect.content,"loadJS"):a&&a.query&&a.query.results&&a.query.results.resources&&a.query.results.resources.content&&200==a.query.results.resources.status&&document.write("<script>"+a.query.results.resources.content+"\x3c/script>")},send:function(a,b){document.write('<script src="//query.yahooapis.com/v1/public/yql?q=select%20*%20from%20data.headers%20where%20url%3D%22'+encodeURIComponent(a)+"%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=HTMLPreview."+b+'">\x3c/script>')},submitform:function(){location.href="/?"+document.getElementById("file").value;return!1},init:function(){HTMLPreview.previewform.onsubmit=HTMLPreview.submitform;HTMLPreview.file()&&(HTMLPreview.previewform.innerHTML="<p>Loading...</p>",HTMLPreview.send(HTMLPreview.raw(),"loadHTML"))}};

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project name="create-connectedcup-capps" default="zip" basedir=".">
<property name="project-name" value="${ant.project.name}"/>
<property name="target-dir" value="target/carbonapps"/>
<property name="src-dir" value="src/main/resources/carbonapps"/>
<property name="ConnectedCup_dir" value="connected_cup"/>
<property name="CoffeeLevel_Sensor_dir" value="coffee_level"/>
<target name="clean">
<delete dir="${target-dir}" />
</target>
<target name="zip" depends="clean">
<mkdir dir="${target-dir}"/>
<zip destfile="${target-dir}/${ConnectedCup_dir}.car">
<zipfileset dir="${src-dir}/${ConnectedCup_dir}"/>
</zip>
<zip destfile="${target-dir}/${CoffeeLevel_Sensor_dir}.car">
<zipfileset dir="${src-dir}/${CoffeeLevel_Sensor_dir}"/>
</zip>
</target>
</project>

View File

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.coffeeking</groupId>
<artifactId>device-mgt-iot-connectedcup</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.coffeeking.connectedcup.analytics</artifactId>
<version>1.0.0</version>
<name>WSO2 IoTS(Device Types) - Connected Cup Analytics capp</name>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>auto-clean</id>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<target>
<ant antfile="build.xml" target="zip"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<finalName>${project.artifactId}-${carbon.device.mgt.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/src.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>create-archive</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,36 +0,0 @@
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>src</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<baseDirectory>${basedir}/src</baseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/target/carbonapps</directory>
<outputDirectory>/</outputDirectory>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
</assembly>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifacts>
<artifact name="coffee_level" version="1.0.0" type="carbon/application">
<dependency artifact="coffee_level_stream" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="coffee_level_store" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="coffee_level_receiver" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="coffee_level_script" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="coffee_level_publisher" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="temperature_level_stream" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="temperature_level_store" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="temperature_level_receiver" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="temperature_level_script" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
<dependency artifact="temperature_level_publisher" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
</artifact>
</artifacts>

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name="coffee_level_publisher" version="1.0.0" type="event/publisher" serverRole="DataAnalyticsServer">
<file>coffee_level_publisher.xml</file>
</artifact>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<eventPublisher name="coffee_level_publisher" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher">
<from streamName="org.wso2.iot.devices.coffeelevel" version="1.0.0"/>
<mapping customMapping="disable" type="wso2event"/>
<to eventAdapterType="secured-websocket"/>
</eventPublisher>

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name="coffee_level_receiver" version="1.0.0" type="event/receiver" serverRole="DataAnalyticsServer">
<file>coffee_level_receiver.xml</file>
</artifact>

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<eventReceiver name="coffee_level_receiver" statistics="disable" trace="disable"
xmlns="http://wso2.org/carbon/eventreceiver">
<from eventAdapterType="wso2event">
<property name="events.duplicated.in.cluster">false</property>
</from>
<mapping customMapping="disable" type="wso2event"/>
<to streamName="org.wso2.iot.devices.coffeelevel" version="1.0.0"/>
</eventReceiver>

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name="coffee_level_script" version="1.0.0" type="analytics/spark" serverRole="DataAnalyticsServer">
<file>coffee_level_script.xml</file>
</artifact>

View File

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<Analytics>
<Name>coffee_level_script</Name>
<Script>
CREATE TEMPORARY TABLE DeviceCoffeeLevelData
USING CarbonAnalytics OPTIONS(tableName "ORG_WSO2_IOT_DEVICES_COFFEELEVEL");
CREATE TEMPORARY TABLE DeviceCoffeeLevelSummaryData
USING CarbonAnalytics OPTIONS (tableName "DEVICE_COFFEELEVEL_SUMMARY",
schema "coffeelevel FLOAT, deviceType STRING -i, deviceId STRING -i, owner STRING -i, time LONG -i",
primaryKeys "deviceType, deviceId, owner, time");
insert into table DeviceCoffeeLevelSummaryData
select coffeelevel, meta_deviceType as deviceType, meta_deviceId as deviceId, meta_owner as owner, cast(meta_time/1000 as BIGINT)as time
from DeviceCoffeeLevelData
group by coffeelevel, meta_deviceType, meta_deviceId, meta_owner, cast(meta_time/1000 as BIGINT);
</Script>
<CronExpression>0 0/3 * * * ?</CronExpression>
</Analytics>

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name="coffee_level_store" version="1.0.0" type="analytics/eventstore" serverRole="DataAnalyticsServer">
<file>org_wso2_iot_devices_coffeelevel.xml</file>
</artifact>

View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<EventStoreConfiguration>
<Source>
<StreamId>org.wso2.iot.devices.coffeelevel:1.0.0</StreamId>
</Source>
<RecordStoreName>EVENT_STORE</RecordStoreName>
<TableSchema>
<ColumnDefinition>
<Name>meta_owner</Name>
<EnableIndexing>true</EnableIndexing>
<IsPrimaryKey>true</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>meta_deviceType</Name>
<EnableIndexing>true</EnableIndexing>
<IsPrimaryKey>true</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>meta_deviceId</Name>
<EnableIndexing>true</EnableIndexing>
<IsPrimaryKey>true</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>meta_time</Name>
<EnableIndexing>true</EnableIndexing>
<IsPrimaryKey>true</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>LONG</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>coffeelevel</Name>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
</ColumnDefinition>
</TableSchema>
</EventStoreConfiguration>

Some files were not shown because too many files have changed in this diff Show More