diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index 49a0db03ed..7ce33dd3e3 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -31,6 +31,7 @@
spring-security-mvc-persisted-remember-me
spring-security-mvc-socket
spring-security-oidc
+ spring-security-okta
spring-security-react
spring-security-rest
spring-security-rest-basic-auth
diff --git a/spring-security-modules/spring-security-okta/pom.xml b/spring-security-modules/spring-security-okta/pom.xml
new file mode 100644
index 0000000000..c5ff9013b5
--- /dev/null
+++ b/spring-security-modules/spring-security-okta/pom.xml
@@ -0,0 +1,62 @@
+
+
+ 4.0.0
+ spring-security-okta
+ 1.0-SNAPSHOT
+ spring-security-okta
+ war
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.okta.spring
+ okta-spring-boot-starter
+ ${okta.spring.version}
+
+
+ com.okta.spring
+ okta-spring-sdk
+ ${okta.spring.version}
+
+
+
+
+ spring-security-okta
+
+
+ src/main/resources
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+
+
+
+ 1.4.0
+
+
diff --git a/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/Application.java b/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/Application.java
new file mode 100644
index 0000000000..0c5cc94f10
--- /dev/null
+++ b/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/Application.java
@@ -0,0 +1,13 @@
+package com.baeldung.okta;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+}
diff --git a/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/controller/AdminController.java b/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/controller/AdminController.java
new file mode 100644
index 0000000000..c7786c4006
--- /dev/null
+++ b/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/controller/AdminController.java
@@ -0,0 +1,43 @@
+package com.baeldung.okta.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.okta.sdk.client.Client;
+import com.okta.sdk.resource.user.User;
+import com.okta.sdk.resource.user.UserBuilder;
+import com.okta.sdk.resource.user.UserList;
+
+@RestController
+public class AdminController {
+
+ @Autowired
+ public Client client;
+
+ @GetMapping("/users")
+ public UserList getUsers() {
+ return client.listUsers();
+ }
+
+ @GetMapping("/user")
+ public UserList searchUserByEmail(@RequestParam String query) {
+ return client.listUsers(query, null, null, null, null);
+ }
+
+ @GetMapping("/createUser")
+ public User createUser() {
+ char[] tempPassword = {'P','a','$','$','w','0','r','d'};
+ User user = UserBuilder.instance()
+ .setEmail("norman.lewis@email.com")
+ .setFirstName("Norman")
+ .setLastName("Lewis")
+ .setPassword(tempPassword)
+ .setActive(true)
+ .buildAndCreate(client);
+ return user;
+ }
+
+}
+
diff --git a/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/controller/HomeController.java b/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/controller/HomeController.java
new file mode 100644
index 0000000000..b8f3ec4e10
--- /dev/null
+++ b/spring-security-modules/spring-security-okta/src/main/java/com/baeldung/okta/controller/HomeController.java
@@ -0,0 +1,16 @@
+package com.baeldung.okta.controller;
+
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.security.oauth2.core.oidc.user.OidcUser;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class HomeController {
+
+ @GetMapping("/")
+ public String home(@AuthenticationPrincipal OidcUser user) {
+ return "Welcome, "+ user.getFullName() +"!";
+ }
+
+}
diff --git a/spring-security-modules/spring-security-okta/src/main/resources/application.properties b/spring-security-modules/spring-security-okta/src/main/resources/application.properties
new file mode 100644
index 0000000000..4a584e3c29
--- /dev/null
+++ b/spring-security-modules/spring-security-okta/src/main/resources/application.properties
@@ -0,0 +1,8 @@
+okta.oauth2.issuer= //Auth server issuer URL
+okta.oauth2.client-id= //Client ID of our Okta application
+okta.oauth2.client-secret= //Client secret of our Okta application
+okta.oauth2.redirect-uri=/authorization-code/callback
+
+#Okta Spring SDK configs
+okta.client.orgUrl= //orgURL
+okta.client.token= //token generated
\ No newline at end of file