added basic spring boot security
This commit is contained in:
@ -8,7 +8,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = 'de.jottyfan.bico'
|
group = 'de.jottyfan.bico'
|
||||||
version = '0.0.4'
|
version = '0.0.5'
|
||||||
|
|
||||||
description = """BibleClassOrganizer"""
|
description = """BibleClassOrganizer"""
|
||||||
|
|
||||||
@ -46,8 +46,10 @@ dependencies {
|
|||||||
implementation 'org.springframework.boot:spring-boot-starter-jooq'
|
implementation 'org.springframework.boot:spring-boot-starter-jooq'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||||
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
||||||
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:latest.release'
|
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:latest.release'
|
||||||
|
implementation 'org.springframework.security:spring-security-oauth2-client'
|
||||||
|
|
||||||
implementation 'org.webjars:bootstrap:5.3.1'
|
implementation 'org.webjars:bootstrap:5.3.1'
|
||||||
implementation 'org.webjars.npm:bootstrap-icons:1.10.5'
|
implementation 'org.webjars.npm:bootstrap-icons:1.10.5'
|
||||||
|
@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
|
|||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -11,6 +12,7 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
|
@EnableWebSecurity
|
||||||
public class Main extends SpringBootServletInitializer {
|
public class Main extends SpringBootServletInitializer {
|
||||||
@Override
|
@Override
|
||||||
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
||||||
|
@ -17,7 +17,7 @@ import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
public class DatabaseConfiguration {
|
public class DatabaseConfig {
|
||||||
@Autowired
|
@Autowired
|
||||||
private DataSource dataSource;
|
private DataSource dataSource;
|
||||||
|
|
34
src/main/java/de/jottyfan/bico/config/SecurityConfig.java
Normal file
34
src/main/java/de/jottyfan/bico/config/SecurityConfig.java
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package de.jottyfan.bico.config;
|
||||||
|
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.security.authentication.AuthenticationEventPublisher;
|
||||||
|
import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
|
import org.springframework.security.core.userdetails.User;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
|
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jotty
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSecurity
|
||||||
|
public class SecurityConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(UserDetailsService.class)
|
||||||
|
InMemoryUserDetailsManager imudm() {
|
||||||
|
return new InMemoryUserDetailsManager(User.withUsername("user").password("{noop}password").roles("USER").build());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(AuthenticationEventPublisher.class)
|
||||||
|
DefaultAuthenticationEventPublisher daep(ApplicationEventPublisher delegate) {
|
||||||
|
return new DefaultAuthenticationEventPublisher(delegate);
|
||||||
|
}
|
||||||
|
}
|
@ -9,17 +9,5 @@ spring.datasource.password = ${db.password}
|
|||||||
|
|
||||||
server.servlet.context-path = ${my.context-path:/BiCO}
|
server.servlet.context-path = ${my.context-path:/BiCO}
|
||||||
|
|
||||||
# security
|
|
||||||
spring.security.oauth2.client.registration.keycloak.client-id = ${keycloak.client-id}
|
|
||||||
spring.security.oauth2.client.registration.keycloak.scope = openid
|
|
||||||
spring.security.oauth2.client.registration.keycloak.authorization-grant-type = authorization_code
|
|
||||||
spring.security.oauth2.client.registration.keycloak.redirect-uri = ${keycloak.redirect-uri}
|
|
||||||
spring.security.oauth2.client.provider.keycloak.issuer-uri = ${keycloak.issuer-uri}
|
|
||||||
spring.security.oauth2.client.provider.keycloak.authorization-uri = ${keycloak.openid-url}/auth
|
|
||||||
spring.security.oauth2.client.provider.keycloak.token-uri = ${keycloak.openid-url}/token
|
|
||||||
spring.security.oauth2.client.provider.keycloak.user-info-uri = ${keycloak.openid-url}/userinfo
|
|
||||||
spring.security.oauth2.client.provider.keycloak.jwk-set-uri = ${keycloak.openid-url}/certs
|
|
||||||
spring.security.oauth2.client.provider.keycloak.user-name-attribute = preferred_username
|
|
||||||
|
|
||||||
# for development only
|
# for development only
|
||||||
server.port = 8081
|
server.port = 8081
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
toggleDarkMode = function() {
|
toggleDarkMode = function() {
|
||||||
var oldValue = $("html").attr("data-bs-theme");
|
var oldValue = $("html").attr("data-bs-theme");
|
||||||
var newValue = oldValue == "dark" ? "light" : "dark";
|
var newValue = oldValue == "dark" ? "light" : "dark";
|
||||||
var updateUrl = /*[[@{/updateTheme}]]*/ 'updateTheme';
|
var updateUrl = /*[[@{/updateTheme}]]*/ '/BiCO/updateTheme';
|
||||||
updateUrl = updateUrl + "/" + newValue;
|
updateUrl = updateUrl + "/" + newValue;
|
||||||
$("html").attr("data-bs-theme", newValue);
|
$("html").attr("data-bs-theme", newValue);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -28,11 +28,14 @@
|
|||||||
<ul layout:fragment="header"></ul>
|
<ul layout:fragment="header"></ul>
|
||||||
<ul class="nav navbar-nav ms-auto">
|
<ul class="nav navbar-nav ms-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="https://gitlab.com/jottyfan/bico/-/issues" class="btn btn-outline-secondary" target="_blank" th:text="${'v' + @manifestBean.getVersion()}"></a>
|
<a href="https://git.jottyfan.de/church/BiCO" class="btn btn-outline-secondary" target="_blank" th:text="${'v' + @manifestBean.getVersion()}"></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="#" class="btn btn-outline-secondary" onclick="toggleDarkMode()"><i class="bi bi-moon"></i></a>
|
<a href="#" class="btn btn-outline-secondary" onclick="toggleDarkMode()"><i class="bi bi-moon"></i></a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a th:href="@{/logout}" class="btn btn-outline-secondary">abmelden</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
Reference in New Issue
Block a user