diff --git a/app/pom.xml b/app/pom.xml
index 6656779..d444397 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -119,6 +119,11 @@
quarkus-oidc
+
+ io.quarkus
+ quarkus-smallrye-jwt
+
+
io.quarkus
quarkus-resteasy-jackson
@@ -290,7 +295,6 @@
${project.build.outputDirectory}/application.properties
${project.build.outputDirectory}/application-prod.properties
- ${project.build.outputDirectory}/application-dev.properties
${project.build.outputDirectory}/application-test.properties
false
@@ -307,7 +311,6 @@
${project.build.outputDirectory}/application.properties
${project.build.outputDirectory}/application-prod.properties
- ${project.build.outputDirectory}/application-dev.properties
${project.build.outputDirectory}/application-test.properties
true
diff --git a/app/src/main/java/io/apicurio/designer/auth/AuthorizedInterceptor.java b/app/src/main/java/io/apicurio/designer/auth/AuthorizedInterceptor.java
index 87d779a..0ad8aef 100644
--- a/app/src/main/java/io/apicurio/designer/auth/AuthorizedInterceptor.java
+++ b/app/src/main/java/io/apicurio/designer/auth/AuthorizedInterceptor.java
@@ -43,7 +43,7 @@ public class AuthorizedInterceptor {
@Inject
SecurityIdentity securityIdentity;
- @ConfigProperty(name = "app.authn.enabled")
+ @ConfigProperty(name = "quarkus.oidc.tenant-enabled")
boolean authenticationEnabled;
@AroundInvoke
diff --git a/app/src/main/java/io/apicurio/designer/config/ApiDesignerConfig.java b/app/src/main/java/io/apicurio/designer/config/ApiDesignerConfig.java
index 20d3481..60923d6 100644
--- a/app/src/main/java/io/apicurio/designer/config/ApiDesignerConfig.java
+++ b/app/src/main/java/io/apicurio/designer/config/ApiDesignerConfig.java
@@ -83,7 +83,7 @@ public class ApiDesignerConfig {
* Constructor.
* @param kcProperties
*/
- public ApiDesignerConfig(@DesignerProperties(value = {"designer.ui.config.auth.keycloak"}) Properties kcProperties) {
+ public ApiDesignerConfig(@DesignerProperties(value = {"designer.ui.config.auth"}) Properties kcProperties) {
this.keycloakConfig = new HashMap<>();
kcProperties.stringPropertyNames().forEach(key -> keycloakConfig.put(key, kcProperties.get(key)));
}
diff --git a/app/src/main/resources/application-dev.properties b/app/src/main/resources/application-dev.properties
deleted file mode 100644
index 6f3252b..0000000
--- a/app/src/main/resources/application-dev.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#LOGGING
-%dev.quarkus.log.level=${LOG_LEVEL:INFO}
-%dev.quarkus.log.category."io.apicurio".level=${REGISTRY_LOG_LEVEL:DEBUG}
-%dev.quarkus.log.console.enable=true
-
-%dev.quarkus.http.port=${HTTP_PORT:8080}
\ No newline at end of file
diff --git a/app/src/main/resources/application-prod.properties b/app/src/main/resources/application-prod.properties
index f15129d..f03334c 100644
--- a/app/src/main/resources/application-prod.properties
+++ b/app/src/main/resources/application-prod.properties
@@ -1,8 +1,10 @@
# === Prod profile - see README
# HTTP Port
-%prod.quarkus.http.port=${HTTP_PORT:8080}
+quarkus.http.port=8080
#LOGGING
-%prod.quarkus.log.level=${LOG_LEVEL:INFO}
-%prod.quarkus.log.console.enable=true
-%prod.quarkus.log.category."io.apicurio".level=${REGISTRY_LOG_LEVEL:INFO}
+apicurio.log.level=INFO
+quarkus.log.level=INFO
+quarkus.log.console.enable=true
+quarkus.log.category."io.apicurio".level=${apicurio.log.level}
+
diff --git a/app/src/main/resources/application-test.properties b/app/src/main/resources/application-test.properties
index 3c33bad..8b0e177 100644
--- a/app/src/main/resources/application-test.properties
+++ b/app/src/main/resources/application-test.properties
@@ -1,6 +1,7 @@
#LOGGING
-%test.quarkus.log.level=${LOG_LEVEL:WARN}
-%test.quarkus.log.category."io.apicurio".level=${REGISTRY_LOG_LEVEL:INFO}
-%test.quarkus.log.console.enable=true
-%test.quarkus.http.test-port=0
\ No newline at end of file
+apicurio.log.level=INFO
+quarkus.log.level=WARN
+quarkus.log.category."io.apicurio".level=${apicurio.log.level}
+quarkus.log.console.enable=true
+quarkus.http.test-port=0
\ No newline at end of file
diff --git a/app/src/main/resources/application.properties b/app/src/main/resources/application.properties
index aa225d7..235e60d 100644
--- a/app/src/main/resources/application.properties
+++ b/app/src/main/resources/application.properties
@@ -3,11 +3,11 @@
# System Info
-app.name=Apicurio API Designer
-app.description=The spiritual successor to Apicurio Studio - used as the basis for Red Hat OpenShift API Designer.
-app.version=${project.version}
-app.date=${timestamp}
-app.git.commit-id=${git.commit.id.full}
+apicurio.app.name=Apicurio API Designer
+apicurio.app.description=The spiritual successor to Apicurio Studio - used as the basis for Red Hat OpenShift API Designer.
+apicurio.app.version=${project.version}
+apicurio.app.date=${timestamp}
+apicurio.app.git.commit-id=${git.commit.id.full}
# Build
@@ -15,30 +15,31 @@ quarkus.package.type=fast-jar
# Logging
+apicurio.log.level=DEBUG
quarkus.log.console.format=%d{YYYY-MM-dd HH:mm:ss} %p [%C] (%t) %m%n
quarkus.log.min-level=TRACE
-quarkus.log.level=${DESIGNER_LOG_LEVEL:INFO}
-quarkus.log.category."io.apicurio".level=${DESIGNER_LOG_LEVEL_APICURIO:${quarkus.log.level}}
+quarkus.log.level=INFO
+quarkus.log.category."io.apicurio".level=${apicurio.log.level}
quarkus.log.console.enable=true
# HTTP
-quarkus.http.port=${DESIGNER_HTTP_PORT:8080}
+quarkus.http.port=8080
%test.quarkus.http.test-port=0
# Database
apicurio.storage.init=true
-apicurio.storage.db-kind=${DESIGNER_STORAGE_DB_KIND:h2}
-apicurio.datasource.url=${DESIGNER_STORAGE_DATASOURCE_URL:jdbc:h2:mem:designer}
-apicurio.datasource.username=${DESIGNER_STORAGE_DATASOURCE_USERNAME:sa}
-apicurio.datasource.password=${DESIGNER_STORAGE_DATASOURCE_PASSWORD:sa}
+apicurio.storage.db-kind=h2
+apicurio.datasource.url=jdbc:h2:mem:designer
+apicurio.datasource.username=sa
+apicurio.datasource.password=sa
apicurio.datasource.jdbc.initial-size=20
apicurio.datasource.jdbc.min-size=20
apicurio.datasource.jdbc.max-size=100
# Access logs
-quarkus.http.access-log.enabled=${DESIGNER_ACCESS_LOG_ENABLE:false}
+quarkus.http.access-log.enabled=false
quarkus.http.access-log.pattern="apicurio-registry.access method="%{METHOD}" path="%{REQUEST_URL}" response_code="%{RESPONSE_CODE}" response_time="%{RESPONSE_TIME}" remote_ip="%{REMOTE_IP}" remote_user="%{REMOTE_USER}" user_agent="%{i,User-Agent}""
quarkus.http.access-log.exclude-pattern=/health/.*
@@ -50,27 +51,22 @@ designer.redirects.root=/,/apis/designer/v0/system/info
## Always enable CORS
quarkus.http.cors=true
-quarkus.http.cors.origins=${DESIGNER_CORS_ALLOWED_ORIGINS:http://localhost:8888}
-quarkus.http.cors.methods=${DESIGNER_CORS_ALLOWED_METHODS:GET,PUT,POST,PATCH,DELETE,OPTIONS}
-quarkus.http.cors.headers=${DESIGNER_CORS_ALLOWED_HEADERS:x-designer-description,x-designer-name,x-designer-type,x-designer-origin,access-control-request-method,access-control-allow-credentials,access-control-allow-origin,access-control-allow-headers,authorization,content-type}
+quarkus.http.cors.origins=http://localhost:8888
+quarkus.http.cors.methods=GET,PUT,POST,PATCH,DELETE,OPTIONS
+quarkus.http.cors.headers=x-designer-description,x-designer-name,x-designer-type,x-designer-origin,access-control-request-method,access-control-allow-credentials,access-control-allow-origin,access-control-allow-headers,authorization,content-type
## Authentication
-app.authn.enabled=${AUTH_ENABLED:false}
-app.authn.token.endpoint=${OIDC_TOKENT_ENDPOINT:https://auth.apicur.io/auth/realms/apicurio-local}
+apicurio.authn.basic-client-credentials.enabled=false
+apicurio.authn.basic-client-credentials.cache-expiration=5
+apicurio.authn.basic-client-credentials.enabled.dynamic.allow=true
-designer.config.auth.oidc.url=${OIDC_URL:https://auth.apicur.io/auth/realms/apicurio-local}
-
-app.authn.basic-auth-client-credentials.enabled=${CLIENT_CREDENTIALS_BASIC_AUTH_ENABLED:false}
-app.authn.basic-auth-client-credentials.cache-expiration=${CLIENT_CREDENTIALS_BASIC_CACHE_EXPIRATION:10}
-app.authn.basic-auth-client-credentials.enabled.dynamic.allow=true
-
-app.authn.audit.log.prefix=api-designer.audit
-app.authn.client-id=${OIDC_API_CLIENT_ID:designer-api}
-app.authn.client-secret=${OIDC_API_CLIENT_SECRET:designer-api-secret}
+apicurio.authn.audit.log.prefix=api-designer.audit
quarkus.oidc.enabled=true
-quarkus.oidc.auth-server-url=${designer.config.auth.oidc.url}
-quarkus.oidc.tenant-enabled=${app.authn.enabled}
-quarkus.oidc.client-id=${app.authn.client-id}
+quarkus.oidc.auth-server-url=https://auth.apicur.io/auth/realms/apicurio-local
+quarkus.oidc.token-path=https://auth.apicur.io/auth/realms/apicurio-local/protocol/openid-connect/token
+quarkus.oidc.tenant-enabled=false
+quarkus.oidc.client-id=designer-api
+quarkus.oidc.client-secret=designer-api-secret
quarkus.oidc.application-type=service
diff --git a/app/src/test/java/io/apicurio/designer/test/profile/MultitenancyAuthTestProfile.java b/app/src/test/java/io/apicurio/designer/test/profile/MultitenancyAuthTestProfile.java
deleted file mode 100644
index 6f8fdcb..0000000
--- a/app/src/test/java/io/apicurio/designer/test/profile/MultitenancyAuthTestProfile.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2022 Red Hat
- *
- * 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.
- */
-
-package io.apicurio.designer.test.profile;
-
-import io.apicurio.designer.test.resource.JWSMockResource;
-import io.quarkus.test.junit.QuarkusTestProfile;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class MultitenancyAuthTestProfile implements QuarkusTestProfile {
-
- @Override
- public Map getConfigOverrides() {
- Map props = new HashMap<>();
- props.put("app.enable.multitenancy", "true");
- props.put("smallrye.jwt.sign.key.location", "privateKey.jwk");
-
- return props;
- }
-
- @Override
- public List testResources() {
- return List.of(
- new TestResourceEntry(JWSMockResource.class));
- }
-}
diff --git a/app/src/test/java/io/apicurio/designer/test/resource/JWSMockResource.java b/app/src/test/java/io/apicurio/designer/test/resource/JWSMockResource.java
index e5cb846..48daac6 100644
--- a/app/src/test/java/io/apicurio/designer/test/resource/JWSMockResource.java
+++ b/app/src/test/java/io/apicurio/designer/test/resource/JWSMockResource.java
@@ -95,9 +95,10 @@ public Map start() {
Map props = new HashMap<>();
//Set registry properties
- props.put("app.authn.enabled", "true");
- props.put("designer.config.auth.oidc.url", authServerUrl);
- props.put("app.authn.token.endpoint", tokenEndpoint);
+ props.put("quarkus.oidc.tenant-enabled", "true");
+ props.put("quarkus.oidc.auth-server-url", authServerUrl);
+ props.put("quarkus.oidc.token-path", tokenEndpoint);
+
return props;
}
diff --git a/app/src/test/java/io/apicurio/designer/test/run/rest/v0/h2/DesignsResourceAuthTest.java b/app/src/test/java/io/apicurio/designer/test/run/rest/v0/h2/DesignsResourceAuthTest.java
index 6a0f5b2..374ed46 100644
--- a/app/src/test/java/io/apicurio/designer/test/run/rest/v0/h2/DesignsResourceAuthTest.java
+++ b/app/src/test/java/io/apicurio/designer/test/run/rest/v0/h2/DesignsResourceAuthTest.java
@@ -35,7 +35,7 @@ class DesignsResourceAuthTest {
@Inject
DesignsResourceTestShared drts;
- @ConfigProperty(name = "app.authn.token.endpoint")
+ @ConfigProperty(name = "quarkus.oidc.token-path")
String tokenEndpoint;
private List original;
diff --git a/pom.xml b/pom.xml
index 385ea35..50518f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,13 +103,13 @@
- 3.6.6
+ 3.8.2
dev
1.18.30
- 0.2.6.Final
+ 1.1.0.CR2
0.1.18.Final
1.3.5
10.12.7