diff --git a/github/README.MD b/github/README.MD
new file mode 100644
index 0000000..08233ad
--- /dev/null
+++ b/github/README.MD
@@ -0,0 +1,33 @@
+# Spring Boot + OAuth2 GitHub
+
+
+
+
+## Перед запуском
+### Создание OAuth App
+Для запуска понадобиться обзавестить своим **GitHub OAuth App**.
+
+1. Переходим в [Developer settings](https://github.com/settings/developers)
+2. Создём новое OAuth приложение
+ 
+3. Заполняем обязательно следующие поля
+ - **Homepage URL**: `http://127.0.0.1:8080`
+ - **Authorization callback URL**: `http://127.0.0.1:8080/login/oauth2/code/github`
+ 
+4. Сгенерировать новый **Client secrets**
+ 
+ 
+
+### Настройка Spring
+Открываем файл `src/main/resources/application.yml` и указываем там **Client ID** и **Client secrets**:
+
+```yaml
+spring:
+ security:
+ oauth2:
+ client:
+ registration:
+ github:
+ client-id: f9bbf16cc3a93663282f
+ client-secret: 16f203668e25bfe44513d2a7b4925d62bb100783
+```
diff --git a/github/build.gradle b/github/build.gradle
new file mode 100644
index 0000000..af22e3b
--- /dev/null
+++ b/github/build.gradle
@@ -0,0 +1,21 @@
+plugins {
+ id 'org.springframework.boot' version '2.6.6'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
+ id 'java'
+}
+
+group = 'example.oauth2'
+version = '1.0-SNAPSHOT'
+sourceCompatibility = JavaVersion.VERSION_11
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ implementation('org.springframework.boot:spring-boot-starter-web')
+ implementation('org.springframework.boot:spring-boot-starter-thymeleaf')
+
+ implementation('org.springframework.boot:spring-boot-starter-security')
+ implementation('org.springframework.security:spring-security-oauth2-client')
+}
diff --git a/github/docs/1.png b/github/docs/1.png
new file mode 100644
index 0000000..8c5273e
Binary files /dev/null and b/github/docs/1.png differ
diff --git a/github/docs/2.png b/github/docs/2.png
new file mode 100644
index 0000000..a24282e
Binary files /dev/null and b/github/docs/2.png differ
diff --git a/github/docs/3.png b/github/docs/3.png
new file mode 100644
index 0000000..65b3ea4
Binary files /dev/null and b/github/docs/3.png differ
diff --git a/github/docs/4.png b/github/docs/4.png
new file mode 100644
index 0000000..9fcbc85
Binary files /dev/null and b/github/docs/4.png differ
diff --git a/github/docs/github-white.svg b/github/docs/github-white.svg
new file mode 100644
index 0000000..770e017
--- /dev/null
+++ b/github/docs/github-white.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/github/src/main/java/example/oauth2/github/ApplicationGithub.java b/github/src/main/java/example/oauth2/github/ApplicationGithub.java
new file mode 100644
index 0000000..149f92d
--- /dev/null
+++ b/github/src/main/java/example/oauth2/github/ApplicationGithub.java
@@ -0,0 +1,13 @@
+package example.oauth2.github;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ApplicationGithub {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ApplicationGithub.class, args);
+ }
+
+}
diff --git a/github/src/main/java/example/oauth2/github/config/MvcConfig.java b/github/src/main/java/example/oauth2/github/config/MvcConfig.java
new file mode 100644
index 0000000..cfe85a1
--- /dev/null
+++ b/github/src/main/java/example/oauth2/github/config/MvcConfig.java
@@ -0,0 +1,15 @@
+package example.oauth2.github.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class MvcConfig implements WebMvcConfigurer {
+
+ @Override
+ public void addViewControllers(ViewControllerRegistry registry) {
+ registry.addViewController("/").setViewName("index");
+ registry.addViewController("/secret").setViewName("secret");
+ }
+}
diff --git a/github/src/main/java/example/oauth2/github/config/WebSecurityConfig.java b/github/src/main/java/example/oauth2/github/config/WebSecurityConfig.java
new file mode 100644
index 0000000..0bb999c
--- /dev/null
+++ b/github/src/main/java/example/oauth2/github/config/WebSecurityConfig.java
@@ -0,0 +1,24 @@
+package example.oauth2.github.config;
+
+import org.springframework.context.annotation.Configuration;
+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
+@Configuration
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ //@formatter:off
+ http
+ .authorizeRequests()
+ .antMatchers("/").permitAll() //Доступ разрешен всем пользователей
+ .anyRequest().authenticated() //Все остальные страницы требуют аутентификации
+ .and()
+ .oauth2Login()
+ ;
+ //@formatter:on
+ }
+}
diff --git a/github/src/main/resources/application.yml b/github/src/main/resources/application.yml
new file mode 100644
index 0000000..eb53ee4
--- /dev/null
+++ b/github/src/main/resources/application.yml
@@ -0,0 +1,14 @@
+server:
+ address: 127.0.0.1
+ port: 8080
+
+debug: false
+
+spring:
+ security:
+ oauth2:
+ client:
+ registration:
+ github:
+ client-id: f9bbf16cc3a93663282f
+ client-secret: 16f203668e25bfe44513d2a7b4925d62bb100783
diff --git a/github/src/main/resources/templates/index.html b/github/src/main/resources/templates/index.html
new file mode 100644
index 0000000..73f5702
--- /dev/null
+++ b/github/src/main/resources/templates/index.html
@@ -0,0 +1,18 @@
+
+
+
+ GitHub OAuth2 Example
+
+
+
+GitHub OAuth2 Example
+
+
+ Home public page
+ ---> Secret Page <---
+ [ Login GitHub ]
+
+
+
diff --git a/github/src/main/resources/templates/secret.html b/github/src/main/resources/templates/secret.html
new file mode 100644
index 0000000..b5f1ba8
--- /dev/null
+++ b/github/src/main/resources/templates/secret.html
@@ -0,0 +1,12 @@
+
+
+
+ GitHub OAuth2 Example
+
+
+
+GitHub OAuth2 Example
+
+[TOP SECRET PAGE]
+
+
diff --git a/settings.gradle b/settings.gradle
index f2479e2..4c71bac 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,4 @@
rootProject.name = 'spring-oauth2-examples'
include('discord')
+include('github')