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() { + } + +}