Skip to content

Commit e8ff717

Browse files
preparation : set code base
1 parent fd7e6c8 commit e8ff717

File tree

126 files changed

+934
-6473
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+934
-6473
lines changed

.docker/entrypoint/run-app.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
# Graceful Shutdown
4+
#trap exitHandler EXIT
5+
#exitHandler() {
6+
# echo "[INSIDE APP CONTAINER][WARN] Server will be shutdown soon." 1>&2
7+
# kill -TERM $(jps | grep jar | awk '{print $1}')
8+
#}
9+
10+
if [ -z "$1" ]; then
11+
echo "[INSIDE APP CONTAINER][ERROR] No project root path parameter found for the 'run-app.sh'"
12+
exit 1
13+
fi
14+
if [ -z "$2" ]; then
15+
echo "[INSIDE APP CONTAINER][ERROR] No file root path parameter found for the 'run-app.sh'"
16+
exit 1
17+
fi
18+
if [ -z "$3" ]; then
19+
echo "[INSIDE APP CONTAINER][ERROR] No Xms parameter found for the 'run-app.sh'"
20+
exit 1
21+
fi
22+
if [ -z "$4" ]; then
23+
echo "[INSIDE APP CONTAINER][ERROR] No Xmx parameter found for the 'run-app.sh'"
24+
exit 1
25+
fi
26+
27+
echo "[INSIDE APP CONTAINER][NOTICE] Run : java -Xms${3}m -Xmx${4}m -XX:+PrintGCDetails -Xloggc:${2}/logs/auth-gc.log -Dspring.config.location=file:${1}/src/main/resources/application.properties -Dlogging.config=file:${1}/src/main/resources/logback-spring.xml -jar /app.jar > ${2}/logs/auth-start.log 2>&1 &"
28+
java -XX:+PrintGCDetails -Xms${3}m -Xmx${4}m -Xloggc:${2}/logs/auth-gc.log -Dspring.config.location=file:${1}/src/main/resources/application.properties -Dlogging.config=file:${1}/src/main/resources/logback-spring.xml -jar /app.jar > ${2}/logs/auth-start.log 2>&1 &

.docker/ssl/.gitkeep

Whitespace-only changes.

.gitignore

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/.docker/ssl/*
2+
!/.docker/ssl/.gitkeep
3+
4+
/target/
5+
6+
# docker
7+
/.docker/env/*
8+
!/.docker/env/.gitkeep
9+
/.docker/ssh/*
10+
!/.docker/ssh/.gitkeep
11+
12+
### STS ###
13+
/.apt_generated
14+
/.classpath
15+
/.factorypath
16+
/.project
17+
/.settings
18+
/.springBeans
19+
/.sts4-cache
20+
21+
# Mac
22+
/.DS_Store
23+
24+
25+
### IntelliJ IDEA ###
26+
/.idea
27+
/*.iws
28+
/*.iml
29+
/*.ipr
30+
31+
# logs
32+
/logs/*
33+
!/logs/.gitkeep
34+
35+
# files
36+
/files/*
37+
!/files/.gitkeep
38+
39+
# .properties
40+
#/src/main/resources/application.properties
41+
42+
# logback
43+
#/src/main/resources/logback-spring.xml
44+
45+
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*
2+
* Copyright 2007-present the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
import java.net.*;
17+
import java.io.*;
18+
import java.nio.channels.*;
19+
import java.util.Properties;
20+
21+
public class MavenWrapperDownloader {
22+
23+
private static final String WRAPPER_VERSION = "0.5.6";
24+
/**
25+
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26+
*/
27+
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28+
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29+
30+
/**
31+
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32+
* use instead of the default one.
33+
*/
34+
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35+
".mvn/wrapper/maven-wrapper.properties";
36+
37+
/**
38+
* Path where the maven-wrapper.jar will be saved to.
39+
*/
40+
private static final String MAVEN_WRAPPER_JAR_PATH =
41+
".mvn/wrapper/maven-wrapper.jar";
42+
43+
/**
44+
* Name of the property which should be used to override the default download url for the wrapper.
45+
*/
46+
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47+
48+
public static void main(String args[]) {
49+
System.out.println("- Downloader started");
50+
File baseDirectory = new File(args[0]);
51+
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52+
53+
// If the maven-wrapper.properties exists, read it and check if it contains a custom
54+
// wrapperUrl parameter.
55+
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56+
String url = DEFAULT_DOWNLOAD_URL;
57+
if(mavenWrapperPropertyFile.exists()) {
58+
FileInputStream mavenWrapperPropertyFileInputStream = null;
59+
try {
60+
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61+
Properties mavenWrapperProperties = new Properties();
62+
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63+
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64+
} catch (IOException e) {
65+
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66+
} finally {
67+
try {
68+
if(mavenWrapperPropertyFileInputStream != null) {
69+
mavenWrapperPropertyFileInputStream.close();
70+
}
71+
} catch (IOException e) {
72+
// Ignore ...
73+
}
74+
}
75+
}
76+
System.out.println("- Downloading from: " + url);
77+
78+
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79+
if(!outputFile.getParentFile().exists()) {
80+
if(!outputFile.getParentFile().mkdirs()) {
81+
System.out.println(
82+
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83+
}
84+
}
85+
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86+
try {
87+
downloadFileFromURL(url, outputFile);
88+
System.out.println("Done");
89+
System.exit(0);
90+
} catch (Throwable e) {
91+
System.out.println("- Error downloading");
92+
e.printStackTrace();
93+
System.exit(1);
94+
}
95+
}
96+
97+
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98+
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99+
String username = System.getenv("MVNW_USERNAME");
100+
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101+
Authenticator.setDefault(new Authenticator() {
102+
@Override
103+
protected PasswordAuthentication getPasswordAuthentication() {
104+
return new PasswordAuthentication(username, password);
105+
}
106+
});
107+
}
108+
URL website = new URL(urlString);
109+
ReadableByteChannel rbc;
110+
rbc = Channels.newChannel(website.openStream());
111+
FileOutputStream fos = new FileOutputStream(destination);
112+
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113+
fos.close();
114+
rbc.close();
115+
}
116+
117+
}

.mvn/wrapper/maven-wrapper.jar

49.5 KB
Binary file not shown.

.mvn/wrapper/maven-wrapper.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
2+
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

README.md

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Spring Security Oauth2 Password JPA Implementation
22
## Overview
33

4-
* In the Spring Security 6 ecosystem, compared to 5, there is a preference for JSON Web Tokens and Keycloak over traditional OAuth2, and for the Authorization Code flow over the Password Grant method. In this context, the OAuth2 Password Grant method has been implemented with the following advantages:
4+
* In the Spring Security 6 ecosystem, compared to 5, there is a preference for Jwt or Keycloak over traditional OAuth2, and for the Authorization Code flow over the Password Grant method. In this context, the OAuth2 Password Grant method has been implemented with the following advantages:
55

6-
* Implemented using JPA.
7-
* Authentication management based on a combination of username, client id, and an extra token (referred to in the source code as APP TOKEN, which receives a unique value from the calling devices).
6+
* Set up access & refresh token API on both ``/oauth2/token`` and on the controller layer, both of which function same.
7+
* Authentication management based on a combination of username, client id, and an extra token (referred to in the source code as ``App-Token``, which receives a unique value from the calling devices).
88
* Separated UserDetails implementation for Admin and Customer roles.
99
* Integration with spring-security-oauth2-authorization-server.
10-
* Provision of MySQL DDL.
10+
* Provision of MySQL DDL, which consists of ``oauth_access_token``, ``oauth_refresh_token`` and ``oauth_client_details``
1111
* Application of Spring Rest Docs.
1212

1313
## Dependencies
@@ -18,4 +18,17 @@
1818
| Backend-Framework | Spring Boot 3.1.2 |
1919
| Main Libraries | Spring Security Authorization Server 1.2.3 |
2020
| Package-Manager | Maven 3.6.3 (mvnw, Dockerfile) |
21-
| RDBMS | Mysql 8.0.17 |
21+
| RDBMS | Mysql 8.0.17 |
22+
23+
## Implementation
24+
25+
#### Import the SQL file in the ``mysql`` folder.
26+
27+
#### The API information is on ``src/main/asciidoc/api-app.adoc``, managed by Spring Rest Doc.
28+
29+
30+
31+
### Running this App with Docker
32+
* Use the following module for Blue-Green deployment:
33+
* https://github.com/Andrew-Kang-G/docker-blue-green-runner
34+
* The above module references this app's Dockerfile and the entrypoint script in the .docker folder.

beforeInstall.sh

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)