aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/oauth-provider/provider-jar/src/test/resources
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/oauth-provider/provider-jar/src/test/resources')
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/aaa-app-config.test.xml351
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/mdsalDynAuthData.json694
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-groups-response.json112
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-token-response.json7
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-user-response.json32
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/keycloak-token-response.json11
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/oom.test.config.json21
-rw-r--r--sdnr/wt/oauth-provider/provider-jar/src/test/resources/test.config.json12
8 files changed, 1234 insertions, 6 deletions
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/aaa-app-config.test.xml b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/aaa-app-config.test.xml
new file mode 100644
index 000000000..017c7439d
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/aaa-app-config.test.xml
@@ -0,0 +1,351 @@
+<?xml version="1.0" ?>
+<!--
+ Copyright (c) 2017 Inocybe Technologies and others. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<!--
+ ///////////////////////////////////////////////////////////////////////////////////////
+ // clustered-app-config instance responsible for AAA configuration. In the future, //
+ // this will contain all AAA related configuration. //
+ ///////////////////////////////////////////////////////////////////////////////////////
+-->
+
+<shiro-configuration xmlns="urn:opendaylight:aaa:app:config">
+
+ <!--
+ ///////////////////////////////////////////////////////////////////////////////////
+ // shiro-configuration is the model based container that contains all shiro //
+ // related information used in ODL AAA configuration. It is the sole pain of //
+ // glass for shiro related configuration, and is how to configure shiro concepts //
+ // such as: //
+ // * realms //
+ // * urls //
+ // * security manager settings //
+ // //
+ // In general, you really shouldn't muck with the settings in this file. The //
+ // way an operator should configure AAA shiro settings is through one of ODL's //
+ // northbound interfaces (i.e., RESTCONF or NETCONF). These are just the //
+ // defaults if no values are specified in MD-SAL. The reason this file is so //
+ // verbose is for two reasons: //
+ // 1) to demonstrate payload examples for plausible configuration scenarios //
+ // 2) to allow bootstrap of the controller (first time start) since otherwise //
+ // configuration becomes a chicken and the egg problem. //
+ // //
+ ///////////////////////////////////////////////////////////////////////////////////
+ -->
+
+ <!--
+ ===================================================================================
+ = =
+ = =
+ = MAIN =
+ = =
+ = =
+ ===================================================================================
+ -->
+
+ <!--
+ ===================================================================================
+ ============================ ODLJndiLdapRealmAuthNOnly ============================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation aimed at federating with an external LDAP =
+ = server for authentication only. For authorization support, refer =
+ = to ODLJndiLdapRealm. =
+ ===================================================================================
+ -->
+ <!-- Start ldapRealm commented out
+ <main>
+ <pair-key>ldapRealm</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.realm.ODLJndiLdapRealmAuthNOnly</pair-value>
+ </main>
+ <main>
+ <pair-key>ldapRealm.userDnTemplate</pair-key>
+ <pair-value>uid={0},ou=People,dc=DOMAIN,dc=TLD</pair-value>
+ </main>
+ <main>
+ <pair-key>ldapRealm.contextFactory.url</pair-key>
+ <pair-value>ldap://&lt;URL&gt;:389</pair-value>
+ </main>
+ <main>
+ <pair-key>ldapRealm.searchBase</pair-key>
+ <pair-value>dc=DOMAIN,dc=TLD</pair-value>
+ </main>
+ <main>
+ <pair-key>ldapRealm.groupRolesMap</pair-key>
+ <pair-value>&quot;person&quot;:&quot;admin&quot;, &quot;organizationalPerson&quot;:&quot;user&quot;</pair-value>
+ </main>
+ <main>
+ <pair-key>ldapRealm.ldapAttributeForComparison</pair-key>
+ <pair-value>objectClass</pair-value>
+ </main>
+ End ldapRealm commented out-->
+
+ <!--
+ ===================================================================================
+ ============================= ODLActiveDirectoryRealm =============================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation aimed at federating with an external AD =
+ = IDP server. =
+ ===================================================================================
+ -->
+ <!-- Start adRealm commented out
+ <main>
+ <pair-key>adRealm</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.realm.ODLActiveDirectoryRealm</pair-value>
+ </main>
+ <main>
+ <pair-key>adRealm.searchBase</pair-key>
+ <pair-value>&quot;CN=Users,DC=example,DC=com&quot;</pair-value>
+ </main>
+ <main>
+ <pair-key>adRealm.systemUsername</pair-key>
+ <pair-value>aduser@example.com</pair-value>
+ </main>
+ <main>
+ <pair-key>adRealm.systemPassword</pair-key>
+ <pair-value>adpassword</pair-value>
+ </main>
+ <main>
+ <pair-key>adRealm.url</pair-key>
+ <pair-value>ldaps://adserver:636</pair-value>
+ </main>
+ <main>
+ <pair-key>adRealm.groupRolesMap</pair-key>
+ <pair-value>&quot;CN=sysadmin,CN=Users,DC=example,DC=com&quot;:&quot;admin&quot;, &quot;CN=unprivileged,CN=Users,DC=example,DC=com&quot;:&quot;user&quot;</pair-value>
+ </main>
+ End adRealm commented out-->
+
+ <!--
+ ===================================================================================
+ ================================== ODLJdbcRealm ===================================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation aimed at federating with an external JDBC =
+ = DBMS. =
+ ===================================================================================
+ -->
+ <!-- Start jdbcRealm commented out
+ <main>
+ <pair-key>ds</pair-key>
+ <pair-value>com.mysql.jdbc.Driver</pair-value>
+ </main>
+ <main>
+ <pair-key>ds.serverName</pair-key>
+ <pair-value>localhost</pair-value>
+ </main>
+ <main>
+ <pair-key>ds.user</pair-key>
+ <pair-value>user</pair-value>
+ </main>
+ <main>
+ <pair-key>ds.password</pair-key>
+ <pair-value>password</pair-value>
+ </main>
+ <main>
+ <pair-key>ds.databaseName</pair-key>
+ <pair-value>db_name</pair-value>
+ </main>
+ <main>
+ <pair-key>jdbcRealm</pair-key>
+ <pair-value>ODLJdbcRealm</pair-value>
+ </main>
+ <main>
+ <pair-key>jdbcRealm.dataSource</pair-key>
+ <pair-value>$ds</pair-value>
+ </main>
+ <main>
+ <pair-key>jdbcRealm.authenticationQuery</pair-key>
+ <pair-value>&quot;SELECT password FROM users WHERE user_name = ?&quot;</pair-value>
+ </main>
+ <main>
+ <pair-key>jdbcRealm.userRolesQuery</pair-key>
+ <pair-value>&quot;SELECT role_name FROM user_rolesWHERE user_name = ?&quot;</pair-value>
+ </main>
+ End jdbcRealm commented out-->
+
+ <!--
+ ===================================================================================
+ ================================= TokenAuthRealm ==================================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation utilizing a per node H2 database store. =
+ ===================================================================================
+ -->
+<!-- <main> -->
+<!-- <pair-key>tokenAuthRealm</pair-key> -->
+<!-- <pair-value>org.opendaylight.aaa.shiro.realm.TokenAuthRealm</pair-value> -->
+<!-- </main> -->
+ <main>
+ <pair-key>tokenAuthRealm</pair-key>
+ <pair-value>org.onap.ccsdk.features.sdnr.wt.oauthprovider.OAuth2Realm</pair-value>
+ </main>
+
+ <!--
+ ===================================================================================
+ =================================== MdsalRealm ====================================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation utilizing the aaa.yang model. =
+ ===================================================================================
+ -->
+ <!-- Start mdsalRealm commented out
+ <main>
+ <pair-key>mdsalRealm</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.realm.MdsalRealm</pair-value>
+ </main>
+ End mdsalRealm commented out-->
+
+ <!--
+ ===================================================================================
+ ================================= MoonAuthRealm ===================================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation aimed at federating with OPNFV Moon. =
+ ===================================================================================
+ -->
+ <!-- Start moonAuthRealm commented out
+ <main>
+ <pair-key>moonAuthRealm</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.realm.MoonRealm</pair-value>
+ </main>
+ <main>
+ <pair-key>moonAuthRealm.moonServerURL</pair-key>
+ <pair-value>http://&lt;host&gt;:&lt;port&gt;</pair-value>
+ </main>
+ End moonAuthRealm commented out-->
+
+ <!--
+ ===================================================================================
+ ================================= KeystoneAuthRealm == ============================
+ ===================================================================================
+ = =
+ = Description: A Realm implementation aimed at federating with an OpenStack =
+ = Keystone. =
+ ===================================================================================
+ -->
+ <!-- Start keystoneAuthRealm commented out
+ <main>
+ <pair-key>keystoneAuthRealm</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.realm.KeystoneAuthRealm</pair-value>
+ </main>
+ <main>
+ <pair-key>keystoneAuthRealm.url</pair-key>
+ <pair-value>https://&lt;host&gt;:&lt;port&gt;</pair-value>
+ </main>
+ <main>
+ <pair-key>keystoneAuthRealm.sslVerification</pair-key>
+ <pair-value>true</pair-value>
+ </main>
+ <main>
+ <pair-key>keystoneAuthRealm.defaultDomain</pair-key>
+ <pair-value>Default</pair-value>
+ </main>
+ -->
+
+ <!--
+ Add tokenAuthRealm as the only realm. To enable mdsalRealm, add it to the list to he right of tokenAuthRealm.
+ -->
+ <main>
+ <pair-key>securityManager.realms</pair-key>
+ <pair-value>$tokenAuthRealm</pair-value>
+ </main>
+ <!-- Used to support OAuth2 use case. -->
+ <main>
+ <pair-key>authcBasic</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.filters.ODLHttpAuthenticationFilter</pair-value>
+ </main>
+ <main>
+ <pair-key>anyroles</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.filters.AnyRoleHttpAuthenticationFilter</pair-value>
+ </main>
+ <main>
+ <pair-key>authcBearer</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.filters.ODLHttpAuthenticationFilter2</pair-value>
+ </main>
+
+ <!-- Start moonAuthRealm commented out
+ <main>
+ <pair-key>rest</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.filters.MoonOAuthFilter</pair-value>
+ </main>
+ End moonAuthRealm commented out-->
+
+ <!-- in order to track AAA challenge attempts -->
+ <main>
+ <pair-key>accountingListener</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.filters.AuthenticationListener</pair-value>
+ </main>
+ <main>
+ <pair-key>securityManager.authenticator.authenticationListeners</pair-key>
+ <pair-value>$accountingListener</pair-value>
+ </main>
+
+ <!-- Model based authorization scheme supporting RBAC for REST endpoints -->
+ <main>
+ <pair-key>dynamicAuthorization</pair-key>
+ <pair-value>org.opendaylight.aaa.shiro.realm.MDSALDynamicAuthorizationFilter</pair-value>
+ </main>
+<!-- <main> -->
+<!-- <pair-key>securityManager.sessionManager.sessionIdCookieEnabled</pair-key> -->
+<!-- <pair-value>false</pair-value> -->
+<!-- </main> -->
+
+ <!--
+ ===================================================================================
+ = =
+ = =
+ = URLS =
+ = =
+ = =
+ ===================================================================================
+ -->
+ <!-- Start moonAuthRealm commented out
+ <urls>
+ <pair-key>/token</pair-key>
+ <pair-value>rest</pair-value>
+ </urls>
+ End moonAuthRealm commented out-->
+ <urls>
+ <pair-key>/**/operations/cluster-admin**</pair-key>
+ <pair-value>dynamicAuthorization</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/**/v1/**</pair-key>
+ <pair-value>authcBearer, roles[admin]</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/**/config/aaa*/**</pair-key>
+ <pair-value>authcBearer, roles[admin]</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/oauth/**</pair-key>
+ <pair-value>anon</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/odlux/**</pair-key>
+ <pair-value>anon</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/apidoc/**</pair-key>
+ <pair-value>authcBasic, roles[admin]</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/test123/**</pair-key>
+ <pair-value>authcBasic</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/rests/**</pair-key>
+ <pair-value>authcBearer, anyroles["admin,provision"]</pair-value>
+ </urls>
+ <urls>
+ <pair-key>/**</pair-key>
+ <pair-value>authcBearer, anyroles["admin,provision"]</pair-value>
+ </urls>
+</shiro-configuration>
+
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/mdsalDynAuthData.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/mdsalDynAuthData.json
new file mode 100644
index 000000000..a1627682b
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/mdsalDynAuthData.json
@@ -0,0 +1,694 @@
+{
+ "policies": [
+ {
+ "resource": "/restconf/**",
+ "index": 0,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/auth/v1/**",
+ "index": 1,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/config/aaa*/**",
+ "index": 2,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/jolokia/**",
+ "index": 3,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "raftstate",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250004/**",
+ "index": 4,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "huawei",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250005/**",
+ "index": 5,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "huawei",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250006/**",
+ "index": 6,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "siae",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250007/**",
+ "index": 7,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "siae",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250008/**",
+ "index": 8,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "siae",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250009/**",
+ "index": 9,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "siae",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250010/**",
+ "index": 10,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "ericsson",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250011/**",
+ "index": 11,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "ericsson",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513559991A/**",
+ "index": 14,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "ericsson",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513559991B/**",
+ "index": 15,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "ericsson",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250012/**",
+ "index": 12,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "zte",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/node=513250013/**",
+ "index": 13,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "zte",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ },
+ {
+ "resource": "/rests/data/network-topology:network-topology/topology=topology-netconf/**",
+ "index": 16,
+ "permissions": [
+ {
+ "role": "admin",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "provisioner",
+ "actions": [
+ "put",
+ "get",
+ "patch",
+ "delete",
+ "post"
+ ]
+ },
+ {
+ "role": "planner",
+ "actions": [
+ "get"
+ ]
+ },
+ {
+ "role": "monitor",
+ "actions": [
+ "get"
+ ]
+ }
+ ]
+ }
+ ]
+ }
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-groups-response.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-groups-response.json
new file mode 100644
index 000000000..85fc37cc8
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-groups-response.json
@@ -0,0 +1,112 @@
+[
+ {
+ "id": 51,
+ "web_url": "https://my-git-server.com/groups/group1",
+ "name": "Group1",
+ "path": "group1",
+ "description": "",
+ "visibility": "private",
+ "share_with_group_lock": false,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "project_creation_level": "developer",
+ "auto_devops_enabled": null,
+ "subgroup_creation_level": "maintainer",
+ "emails_disabled": null,
+ "mentions_disabled": null,
+ "lfs_enabled": true,
+ "avatar_url": null,
+ "request_access_enabled": true,
+ "full_name": "Group1",
+ "full_path": "group1",
+ "parent_id": null
+ },
+ {
+ "id": 69,
+ "web_url": "https://my-git-server.com/groups/group2",
+ "name": "Group2",
+ "path": "group2",
+ "description": "",
+ "visibility": "private",
+ "share_with_group_lock": false,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "project_creation_level": "developer",
+ "auto_devops_enabled": null,
+ "subgroup_creation_level": "owner",
+ "emails_disabled": null,
+ "mentions_disabled": null,
+ "lfs_enabled": true,
+ "avatar_url": null,
+ "request_access_enabled": true,
+ "full_name": "Group2",
+ "full_path": "group2",
+ "parent_id": null
+ },
+ {
+ "id": 24,
+ "web_url": "https://my-git-server.com/groups/group3",
+ "name": "group3",
+ "path": "group3",
+ "description": "",
+ "visibility": "private",
+ "share_with_group_lock": false,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "project_creation_level": "developer",
+ "auto_devops_enabled": null,
+ "subgroup_creation_level": "owner",
+ "emails_disabled": null,
+ "mentions_disabled": null,
+ "lfs_enabled": true,
+ "avatar_url": null,
+ "request_access_enabled": false,
+ "full_name": "group3",
+ "full_path": "group3",
+ "parent_id": null
+ },
+ {
+ "id": 22,
+ "web_url": "https://my-git-server.com/groups/group4",
+ "name": "group4",
+ "path": "group4",
+ "description": "custom desc",
+ "visibility": "private",
+ "share_with_group_lock": false,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "project_creation_level": "developer",
+ "auto_devops_enabled": null,
+ "subgroup_creation_level": "owner",
+ "emails_disabled": null,
+ "mentions_disabled": null,
+ "lfs_enabled": true,
+ "avatar_url": "https://my-git-server.com/uploads/-/system/group/avatar/22/Factory_1b.svg.png",
+ "request_access_enabled": true,
+ "full_name": "group4",
+ "full_path": "group4",
+ "parent_id": null
+ },
+ {
+ "id": 5,
+ "web_url": "https://my-git-server.com/groups/group5",
+ "name": "group5",
+ "path": "group5",
+ "description": "my group 5",
+ "visibility": "private",
+ "share_with_group_lock": false,
+ "require_two_factor_authentication": false,
+ "two_factor_grace_period": 48,
+ "project_creation_level": "developer",
+ "auto_devops_enabled": null,
+ "subgroup_creation_level": "owner",
+ "emails_disabled": null,
+ "mentions_disabled": null,
+ "lfs_enabled": true,
+ "avatar_url": "https://my-git-server.com/uploads/-/system/group/avatar/5/mylogo.png",
+ "request_access_enabled": true,
+ "full_name": "group5",
+ "full_path": "group5",
+ "parent_id": null
+ }
+] \ No newline at end of file
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-token-response.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-token-response.json
new file mode 100644
index 000000000..0a6bd7231
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-token-response.json
@@ -0,0 +1,7 @@
+{
+ "access_token":"asfhoipmspaodm-asndfoiasnf-aisjdaisjj",
+ "expires_in":12345,
+ "refresh_expires_in":123456,
+ "refresh_token":"asdsadasd",
+ "token_type":"bearer"
+} \ No newline at end of file
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-user-response.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-user-response.json
new file mode 100644
index 000000000..b08332b41
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/gitlab-user-response.json
@@ -0,0 +1,32 @@
+{
+ "id": 21,
+ "name": "me",
+ "username": "my-username",
+ "state": "active",
+ "avatar_url": "https://my-git-server.com/uploads/-/system/user/avatar/21/avatar.png",
+ "web_url": "https://my-git-server.com/my-username",
+ "created_at": "2017-05-15T14:49:38.396Z",
+ "bio": "",
+ "location": "",
+ "public_email": "",
+ "skype": "",
+ "linkedin": "",
+ "twitter": "",
+ "website_url": "",
+ "organization": "",
+ "last_sign_in_at": "2021-02-12T12:56:34.094Z",
+ "confirmed_at": "2018-01-18T09:49:08.463Z",
+ "last_activity_on": "2021-02-15",
+ "email": "me@my-server.com",
+ "theme_id": null,
+ "color_scheme_id": 1,
+ "projects_limit": 0,
+ "current_sign_in_at": "2021-02-15T03:17:12.140Z",
+ "identities": [],
+ "can_create_group": false,
+ "can_create_project": false,
+ "two_factor_enabled": false,
+ "external": false,
+ "private_profile": false,
+ "is_admin": true
+} \ No newline at end of file
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/keycloak-token-response.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/keycloak-token-response.json
new file mode 100644
index 000000000..c62ed9458
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oauth/keycloak-token-response.json
@@ -0,0 +1,11 @@
+{
+ "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJkbWFSWXRkaHFkVXFDV2lmRWdNRHFBcWVBcU8tMnFoTDBjdnByelRGdWRRIn0.eyJleHAiOjE2MTExMzU5MjEsImlhdCI6MTYxMTEzNDEyMSwiYXV0aF90aW1lIjoxNjExMTM0MDkxLCJqdGkiOiIzYzFlZmMzZi1lMjFiLTQ3MzktYTY1YS1jNjY1M2ZhOGRjNTQiLCJpc3MiOiJodHRwOi8vMTAuMjAuMTEuMTYwOjgwODAvYXV0aC9yZWFsbXMvb25hcCIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0NDZhMjRiYy1kOGEwLTQzZGQtYWZhNS1lNTZlZWQ3NWRlYjgiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJvZGx1eC5hcHAiLCJzZXNzaW9uX3N0YXRlIjoiMTI5YjRhNjMtNzBhMS00MjFmLWEzM2YtOWFjZDkyZTIzM2ZmIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJwcm92aXNpb24iLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwibmFtZSI6Ikx1a2UgU2t5d2Fsa2VyIiwicHJlZmVycmVkX3VzZXJuYW1lIjoibHVrZS5za3l3YWxrZXIiLCJnaXZlbl9uYW1lIjoiTHVrZSIsImZhbWlseV9uYW1lIjoiU2t5d2Fsa2VyIiwiZW1haWwiOiJsdWtlLnNreXdhbGtlckBzZG5yLm9uYXAub3JnIn0.tn2NrEGYLRq1u0DkqxD2iDM72hFrDBPGA_q23S-htiRH113yt14a0CzJxU9El0YDobbzog9xm0ELbx6W4jYsGguMABqIi4W5wtTqfbaCh7gmF208CqNpwzA7nG2palMLbBPpmGXiagUm4qLWQxrBP_VOaeW_kK0VHLaiTRJ-4vHuOXSNPYEDQZNCI2QCJQS_dn83K_JI4ecBHl8UeHFLB65BqmocpDHUvf2h835xuNFFQpXJWMcPM_j_FmFQeOSUDM4HmqgdVU9_b4APnDEVFiUezQdoEOfEYNsNlhCoXlaEEn2tCZfEkZ7k72DlhqJMQzomdaGKPk2g8XhKJNwMJg",
+ "expires_in": 1800,
+ "refresh_expires_in": 1800,
+ "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhOGUzMDUwZS0wZmQxLTRjYjQtYjRiZS1jMDVlOGY4OGJhZGUifQ.eyJleHAiOjE2MTExMzU5MjEsImlhdCI6MTYxMTEzNDEyMSwianRpIjoiZmZiYWE3NDktZGVkNi00ZWMzLWI4MjYtYTI4NWY0ODY1ZGI0IiwiaXNzIjoiaHR0cDovLzEwLjIwLjExLjE2MDo4MDgwL2F1dGgvcmVhbG1zL29uYXAiLCJhdWQiOiJodHRwOi8vMTAuMjAuMTEuMTYwOjgwODAvYXV0aC9yZWFsbXMvb25hcCIsInN1YiI6IjQ0NmEyNGJjLWQ4YTAtNDNkZC1hZmE1LWU1NmVlZDc1ZGViOCIsInR5cCI6IlJlZnJlc2giLCJhenAiOiJvZGx1eC5hcHAiLCJzZXNzaW9uX3N0YXRlIjoiMTI5YjRhNjMtNzBhMS00MjFmLWEzM2YtOWFjZDkyZTIzM2ZmIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCJ9.mt9VHtiBZycHcEuVCOZVjjtyoOGYNaDVvtcA1NPScIQ",
+ "token_type": "bearer",
+ "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJkbWFSWXRkaHFkVXFDV2lmRWdNRHFBcWVBcU8tMnFoTDBjdnByelRGdWRRIn0.eyJleHAiOjE2MTExMzU5MjEsImlhdCI6MTYxMTEzNDEyMSwiYXV0aF90aW1lIjoxNjExMTM0MDkxLCJqdGkiOiJjZjUzZTc0ZC1kYjZiLTQ4YTUtODkyOS1jYzU3YjY3YjAxN2QiLCJpc3MiOiJodHRwOi8vMTAuMjAuMTEuMTYwOjgwODAvYXV0aC9yZWFsbXMvb25hcCIsImF1ZCI6Im9kbHV4LmFwcCIsInN1YiI6IjQ0NmEyNGJjLWQ4YTAtNDNkZC1hZmE1LWU1NmVlZDc1ZGViOCIsInR5cCI6IklEIiwiYXpwIjoib2RsdXguYXBwIiwic2Vzc2lvbl9zdGF0ZSI6IjEyOWI0YTYzLTcwYTEtNDIxZi1hMzNmLTlhY2Q5MmUyMzNmZiIsImF0X2hhc2giOiJSUXdDclpkQmFKV0VFdmxsRVNxRjV3IiwiYWNyIjoiMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwibmFtZSI6Ikx1a2UgU2t5d2Fsa2VyIiwicHJlZmVycmVkX3VzZXJuYW1lIjoibHVrZS5za3l3YWxrZXIiLCJnaXZlbl9uYW1lIjoiTHVrZSIsImZhbWlseV9uYW1lIjoiU2t5d2Fsa2VyIiwiZW1haWwiOiJsdWtlLnNreXdhbGtlckBzZG5yLm9uYXAub3JnIn0.rueTNrnvRa4PMo7NS8l4xxRhhNiGzXLmtcUeyWnj3AjFaUoNKuS9l85K3KjRT3zjq494YsepIGuK33I20rvFwDLclcJNHuumAgBnR5dRBi5fLhm7x8YkebhdTHPiYL4hfygpZ7APN1PtcDZnb-uEjjT-RAtjnfk3r-oP6CtqWzI5MjOPnf5HaEwWpkuTjmJf3kyyf_pdhhVkgTwuC-kD8iMjyRIzuZJxVwWVA3S43eL0R7MaIDlpJrOp9EBRfMlObAypc1bLtKwopT0sBla1CM9GmUU2ZYbQb79-hey0rd7CWx1uBkZUxt5myiExBm3pI46boXLP7dzjzxHUKg0m-A",
+ "not-before-policy": 1611134054,
+ "session_state": "129b4a63-70a1-421f-a33f-9acd92e233ff",
+ "scope": "openid profile email"
+} \ No newline at end of file
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oom.test.config.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oom.test.config.json
new file mode 100644
index 000000000..4e5707fa1
--- /dev/null
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/oom.test.config.json
@@ -0,0 +1,21 @@
+{
+ "tokenSecret": "secret",
+ "tokenIssuer": "ONAP SDNC",
+ "publicUrl": "https://sdnc.onap:30205",
+ "redirectUri": "null",
+ "supportOdlUsers": "true",
+ "providers": [
+ {
+ "id": "htgit",
+ "type": "GITLAB",
+ "url": "https://git-.com",
+ "clientId": "f52440b7dcd4bb75",
+ "secret": "9bd45916f52440b7dcd4bb75",
+ "scope": "api+openid+read_user+profile",
+ "title": " Gitlab",
+ "roleMapping": {
+ "mygitlabgroup": "admin"
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/test.config.json b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/test.config.json
index 88137fdad..157ddb71a 100644
--- a/sdnr/wt/oauth-provider/provider-jar/src/test/resources/test.config.json
+++ b/sdnr/wt/oauth-provider/provider-jar/src/test/resources/test.config.json
@@ -1,14 +1,14 @@
{
- "tokenSecret": "${OAUTH_TOKEN_SECRET}",
- "tokenIssuer": "${OAUTH_TOKEN_ISSUER}",
- "host": "",
- "redirectUri": "${OAUTH_ODLUX_REDIRECT_URI}",
- "supportOdlUsers": "${OAUTH_SUPPORT_ODLUSERS}",
+ "tokenSecret": "secret2134",
+ "tokenIssuer": "ONAP SDNC",
+ "publicUrl": "http://nasp.diasf.de",
+ "redirectUri": "/index.html#redirect=",
+ "supportOdlUsers": "true",
"providers": [
{
"id": "keycloak",
"type": "KEYCLOAK",
- "host": "http://10.20.11.160:8080",
+ "url": "http://10.20.11.160:8080",
"clientId": "odlux.app",
"secret": "5da4ea3d-8cc9-4669-bd7e-3ecb91d120cd",
"scope": "openid",