diff --git a/Java/spring/oauth2(?)/build.gradle b/Java/spring/oauth2(?)/build.gradle
new file mode 100644
index 0000000..10956a8
--- /dev/null
+++ b/Java/spring/oauth2(?)/build.gradle
@@ -0,0 +1,31 @@
+plugins {
+	id 'java'
+	id 'org.springframework.boot' version '3.1.4'
+	id 'io.spring.dependency-management' version '1.1.3'
+}
+
+group = 'com.example'
+version = '0.0.1-SNAPSHOT'
+
+java {
+	sourceCompatibility = '17'
+}
+
+repositories {
+	mavenCentral()
+}
+
+dependencies {
+	developmentOnly("org.springframework.boot:spring-boot-devtools")
+
+    implementation 'org.webjars:webjars-locator-core'
+    implementation 'org.springframework.boot:spring-boot-starter'
+	implementation 'org.springframework.boot:spring-boot-starter-web'
+	testImplementation 'org.springframework.boot:spring-boot-starter-test'
+    implementation 'org.springframework.boot:spring-boot-starter-security'
+	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
+}
+
+tasks.named('test') {
+	useJUnitPlatform()
+}
diff --git a/Java/spring/oauth2(?)/settings.gradle b/Java/spring/oauth2(?)/settings.gradle
new file mode 100644
index 0000000..0a383dd
--- /dev/null
+++ b/Java/spring/oauth2(?)/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = 'demo'
diff --git a/Java/spring/oauth2(?)/src/main/java/com/example/demo/SimpleApplication.java b/Java/spring/oauth2(?)/src/main/java/com/example/demo/SimpleApplication.java
new file mode 100644
index 0000000..b46511e
--- /dev/null
+++ b/Java/spring/oauth2(?)/src/main/java/com/example/demo/SimpleApplication.java
@@ -0,0 +1,32 @@
+package com.example.demo;
+
+import java.util.Collections;
+import java.util.Map;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.security.oauth2.core.user.OAuth2User;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.authentication.HttpStatusEntryPoint;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@SpringBootApplication
+@RestController
+public class SimpleApplication {
+
+	@GetMapping("/user")
+	public Map<String, Object> user(@AuthenticationPrincipal OAuth2User principal) {
+		return Collections.singletonMap("name", principal.getAttribute("name"));
+	}
+
+	public static void main(String[] args) {
+		SpringApplication.run(SimpleApplication.class, args);
+	}
+}
diff --git a/Java/spring/oauth2(?)/src/main/resources/application.properties b/Java/spring/oauth2(?)/src/main/resources/application.properties
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Java/spring/oauth2(?)/src/main/resources/application.properties
@@ -0,0 +1 @@
+
diff --git a/Java/spring/oauth2(?)/src/main/resources/application.yml b/Java/spring/oauth2(?)/src/main/resources/application.yml
new file mode 100644
index 0000000..9c46681
--- /dev/null
+++ b/Java/spring/oauth2(?)/src/main/resources/application.yml
@@ -0,0 +1,8 @@
+spring:
+  security:
+    oauth2:
+      client:
+        registration:
+          github:
+            clientId: 661e96c42931da0e9c71
+            clientSecret: fdcdce318e32e06e3157a81a5bbc8e96a29bc49b
diff --git a/Java/spring/oauth2(?)/src/main/resources/static/index.html b/Java/spring/oauth2(?)/src/main/resources/static/index.html
new file mode 100644
index 0000000..5ba08e1
--- /dev/null
+++ b/Java/spring/oauth2(?)/src/main/resources/static/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <title>Demo</title>
+    <meta name="description" content=""/>
+    <meta name="viewport" content="width=device-width"/>
+    <base href="/"/>
+    <link rel="stylesheet" type="text/css" href="/webjars/bootstrap/css/bootstrap.min.css"/>
+    <script type="text/javascript" src="/webjars/jquery/jquery.min.js"></script>
+    <script type="text/javascript" src="/webjars/bootstrap/js/bootstrap.min.js"></script>
+</head>
+<body>
+	<h1>Demo</h1>
+	<div class="container">
+		<div class="container unauthenticated">
+			Log in: <a href="/oauth2/authorization/github">click here</a>
+		</div>
+		<div class="container authenticated" style="display:none">
+			Logged in as: <span id="user"></span>
+			<script type="text/javascript">
+				$.get("/user", function(data) {
+					$("#user").html(data.name);
+					$(".unauthenticated").hide()
+					$(".authenticated").show()
+				});
+			</script>
+		</div>
+	</div>
+</body>
+</html>
diff --git a/Java/spring/oauth2(?)/src/test/java/com/example/demo/SimpleApplicationTests.java b/Java/spring/oauth2(?)/src/test/java/com/example/demo/SimpleApplicationTests.java
new file mode 100644
index 0000000..7bfa9bb
--- /dev/null
+++ b/Java/spring/oauth2(?)/src/test/java/com/example/demo/SimpleApplicationTests.java
@@ -0,0 +1,13 @@
+package com.example.demo;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class SimpleApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}