aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/traccar/MainModule.java10
-rw-r--r--src/main/java/org/traccar/api/security/OpenIDProvider.java44
-rw-r--r--src/main/java/org/traccar/config/Keys.java4
3 files changed, 56 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/MainModule.java b/src/main/java/org/traccar/MainModule.java
index 663747de1..417844f50 100644
--- a/src/main/java/org/traccar/MainModule.java
+++ b/src/main/java/org/traccar/MainModule.java
@@ -87,6 +87,7 @@ import org.traccar.storage.DatabaseStorage;
import org.traccar.storage.MemoryStorage;
import org.traccar.storage.Storage;
import org.traccar.web.WebServer;
+import org.traccar.api.security.OpenIDProvider;
import javax.annotation.Nullable;
import javax.inject.Singleton;
@@ -169,6 +170,15 @@ public class MainModule extends AbstractModule {
}
return null;
}
+
+ @Singleton
+ @Provides
+ public static OpenIDProvider provideOpenIDProvider(Config config) {
+ if (config.getBoolean(Keys.OIDC_ENABLE)) {
+ return new OpenIDProvider(config);
+ }
+ return null;
+ }
@Provides
public static WebServer provideWebServer(Injector injector, Config config) {
diff --git a/src/main/java/org/traccar/api/security/OpenIDProvider.java b/src/main/java/org/traccar/api/security/OpenIDProvider.java
new file mode 100644
index 000000000..4eaf9ac21
--- /dev/null
+++ b/src/main/java/org/traccar/api/security/OpenIDProvider.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2017 - 2023 Anton Tananaev (anton@traccar.org)
+ *
+ * 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 org.traccar.api.security;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.traccar.config.Config;
+import org.traccar.config.Keys;
+import org.traccar.model.User;
+
+public class OpenIDProvider {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OpenIDProvider.class);
+
+ private final Boolean force;
+ private final String clientId;
+ private final String authUrl;
+ private final String tokenUrl;
+ private final String userInfoUrl;
+ private final String adminGroup;
+
+ public OpenIDProvider(Config config) {
+ force = config.getBoolean(Keys.OIDC_FORCE);
+ clientId = config.getString(Keys.OIDC_CLIENTID);
+ authUrl = config.getString(Keys.OIDC_AUTHURL);
+ tokenUrl = config.getString(Keys.OIDC_TOKENURL);
+ userInfoUrl = config.getString(Keys.OIDC_USERINFOURL);
+ adminGroup = config.getString(Keys.OIDC_ADMINGROUP);
+ }
+
+}
diff --git a/src/main/java/org/traccar/config/Keys.java b/src/main/java/org/traccar/config/Keys.java
index 77aa9a635..ace4c36af 100644
--- a/src/main/java/org/traccar/config/Keys.java
+++ b/src/main/java/org/traccar/config/Keys.java
@@ -614,14 +614,14 @@ public final class Keys {
/**
* OIDC enable.
*/
- public static final ConfigKey<String> OIDC_ENABLE = new BooleanConfigKey(
+ public static final ConfigKey<Boolean> OIDC_ENABLE = new BooleanConfigKey(
"oidc.enable",
List.of(KeyType.CONFIG));
/**
* Force OIDC authentication.
*/
- public static final ConfigKey<String> OIDC_FORCE = new BooleanConfigKey(
+ public static final ConfigKey<Boolean> OIDC_FORCE = new BooleanConfigKey(
"oidc.force",
List.of(KeyType.CONFIG));