From 6b293711633a654515a16e80b60e0cb7c110928b Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Mon, 27 Dec 2021 00:31:34 +0800 Subject: [PATCH] init commit --- .gitignore | 3 ++ README.md | 7 ++- build.json | 7 +++ justfile | 5 ++ pom.xml | 50 +++++++++++++++++++ .../java/me/hatter/sample/Application.java | 18 +++++++ .../me/hatter/sample/SampleController.java | 28 +++++++++++ .../java/me/hatter/sample/SecurityConfig.java | 19 +++++++ src/main/resources/application.properties | 8 +++ 9 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 build.json create mode 100644 justfile create mode 100644 pom.xml create mode 100644 src/main/java/me/hatter/sample/Application.java create mode 100644 src/main/java/me/hatter/sample/SampleController.java create mode 100644 src/main/java/me/hatter/sample/SecurityConfig.java create mode 100644 src/main/resources/application.properties diff --git a/.gitignore b/.gitignore index d99a1b1..e9a4ed4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +.gradle/ +.idea/ +target/ # ---> Java # Compiled class file *.class diff --git a/README.md b/README.md index f4543d5..9488f85 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ # spring-oidc-application -Spring Boot OIDC Client Application \ No newline at end of file +Spring Boot OIDC Client Application + + +> https://www.baeldung.com/spring-security-openid-connect + + diff --git a/build.json b/build.json new file mode 100644 index 0000000..aea36cd --- /dev/null +++ b/build.json @@ -0,0 +1,7 @@ +{ + "java": "15", + "builder": { + "name": "maven", + "version": "3.8.4" + } +} diff --git a/justfile b/justfile new file mode 100644 index 0000000..3167982 --- /dev/null +++ b/justfile @@ -0,0 +1,5 @@ +_: + @just --list + +run: + buildj spring-boot:run diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..62cb757 --- /dev/null +++ b/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + me.hatter + spring-oidc-application + 1.0-SNAPSHOT + oidc-example + + + org.springframework.boot + spring-boot-starter-parent + 2.4.1 + + + + 15 + + + + + org.springframework.boot + spring-boot-starter-oauth2-client + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.security + spring-security-openid + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/src/main/java/me/hatter/sample/Application.java b/src/main/java/me/hatter/sample/Application.java new file mode 100644 index 0000000..8340733 --- /dev/null +++ b/src/main/java/me/hatter/sample/Application.java @@ -0,0 +1,18 @@ +package me.hatter.sample; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * @see "https://codetinkering.com/spring-security-oauth2-oidc/" + * @see "https://github.com/code-tinkering/spring-boot-oauth2-oidc-example" + */ +@ComponentScan(basePackages = "me.hatter.sample") +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} \ No newline at end of file diff --git a/src/main/java/me/hatter/sample/SampleController.java b/src/main/java/me/hatter/sample/SampleController.java new file mode 100644 index 0000000..512016f --- /dev/null +++ b/src/main/java/me/hatter/sample/SampleController.java @@ -0,0 +1,28 @@ +package me.hatter.sample; + +import org.springframework.security.core.Authentication; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.context.SecurityContextHolder; +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 SampleController { + @GetMapping("/oidc-principal") + public OidcUser getOidcUserPrincipal( + @AuthenticationPrincipal OidcUser principal) { + return principal; + } + + @GetMapping("/oidc-principal2") + public Object getOidcUserPrincipal2() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication.getPrincipal() instanceof OidcUser) { + OidcUser principal = ((OidcUser) authentication.getPrincipal()); + return principal; + } else { + return authentication.getPrincipal(); + } + } +} diff --git a/src/main/java/me/hatter/sample/SecurityConfig.java b/src/main/java/me/hatter/sample/SecurityConfig.java new file mode 100644 index 0000000..4a47a2c --- /dev/null +++ b/src/main/java/me/hatter/sample/SecurityConfig.java @@ -0,0 +1,19 @@ +package me.hatter.sample; + +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http// only disable these during testing or for non-browser clients +// .cors().disable() +// .csrf().disable() + .authorizeRequests() + .anyRequest().authenticated() + .and() + .oauth2Login().loginPage("/oauth2/authorization/google"); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..155ce7e --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,8 @@ +application.name=SpringBoot Sample +application.version=0.0.1 +application.title=This is SpringBoot sample application +spring.mvc.throw-exception-if-no-handler-found=true +spring.resources.add-mappings=false + +spring.security.oauth2.client.registration.google.client-id=test +spring.security.oauth2.client.registration.google.client-secret=test