Add authorization for admin
This commit is contained in:
parent
3cf19c23cb
commit
9c3957398f
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,6 +13,7 @@ build/
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
.gigaide
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
@ -8,10 +8,15 @@ import com.nimbusds.jose.proc.SecurityContext
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.context.annotation.Configuration
|
||||
import org.springframework.core.annotation.Order
|
||||
import org.springframework.http.MediaType
|
||||
import org.springframework.jdbc.core.JdbcTemplate
|
||||
import org.springframework.security.config.Customizer
|
||||
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.configurers.ExceptionHandlingConfigurer
|
||||
import org.springframework.security.core.userdetails.User
|
||||
import org.springframework.security.core.userdetails.UserDetailsService
|
||||
import org.springframework.security.crypto.factory.PasswordEncoderFactories
|
||||
import org.springframework.security.oauth2.jwt.JwtDecoder
|
||||
import org.springframework.security.oauth2.server.authorization.client.JdbcRegisteredClientRepository
|
||||
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository
|
||||
@ -20,24 +25,48 @@ import org.springframework.security.oauth2.server.authorization.config.annotatio
|
||||
import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings
|
||||
import org.springframework.security.provisioning.InMemoryUserDetailsManager
|
||||
import org.springframework.security.web.SecurityFilterChain
|
||||
import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint
|
||||
import org.springframework.security.web.util.matcher.MediaTypeRequestMatcher
|
||||
import java.security.KeyPair
|
||||
import java.security.KeyPairGenerator
|
||||
import java.security.interfaces.RSAPrivateKey
|
||||
import java.security.interfaces.RSAPublicKey
|
||||
import java.util.*
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableWebSecurity
|
||||
@EnableWebSecurity(debug = true)
|
||||
class SecurityConfig {
|
||||
|
||||
@Bean
|
||||
fun registeredClientRepository(operations: JdbcTemplate): RegisteredClientRepository {
|
||||
return JdbcRegisteredClientRepository(operations)
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(1)
|
||||
@Throws(Exception::class)
|
||||
@Throws(java.lang.Exception::class)
|
||||
fun authorizationServerSecurityFilterChain(http: HttpSecurity): SecurityFilterChain {
|
||||
val authorizationServer = OAuth2AuthorizationServerConfigurer.authorizationServer()
|
||||
val authorizationServerConfigurer =
|
||||
OAuth2AuthorizationServerConfigurer.authorizationServer()
|
||||
|
||||
http
|
||||
.securityMatcher(authorizationServer.endpointsMatcher)
|
||||
.with(authorizationServer) {}
|
||||
.securityMatcher(authorizationServerConfigurer.endpointsMatcher)
|
||||
.with(
|
||||
authorizationServerConfigurer
|
||||
) { authorizationServer: OAuth2AuthorizationServerConfigurer ->
|
||||
authorizationServer
|
||||
.oidc(Customizer.withDefaults())
|
||||
} // Enable OpenID Connect 1.0 <- potentially should be deleted
|
||||
|
||||
.authorizeHttpRequests { it.anyRequest().authenticated() }
|
||||
.exceptionHandling { exceptions: ExceptionHandlingConfigurer<HttpSecurity?> ->
|
||||
exceptions
|
||||
.defaultAuthenticationEntryPointFor(
|
||||
LoginUrlAuthenticationEntryPoint("/login"),
|
||||
MediaTypeRequestMatcher(MediaType.TEXT_HTML)
|
||||
)
|
||||
}
|
||||
|
||||
return http.build()
|
||||
}
|
||||
@ -46,20 +75,26 @@ class SecurityConfig {
|
||||
@Order(2)
|
||||
@Throws(Exception::class)
|
||||
fun defaultSecurityFilterChain(http: HttpSecurity): SecurityFilterChain {
|
||||
http.csrf { it.disable() }
|
||||
http
|
||||
.authorizeHttpRequests { it.anyRequest().authenticated() }
|
||||
.formLogin(Customizer.withDefaults())
|
||||
|
||||
return http.build()
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun userDetailsService(): UserDetailsService {
|
||||
return InMemoryUserDetailsManager()
|
||||
val encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder()
|
||||
val userDetails = User.builder()
|
||||
.passwordEncoder(encoder::encode)
|
||||
.username("admin")
|
||||
.password("admin")
|
||||
.roles("USER")
|
||||
.build()
|
||||
|
||||
return InMemoryUserDetailsManager(userDetails)
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun registeredClientRepository(operations: JdbcTemplate): RegisteredClientRepository {
|
||||
return JdbcRegisteredClientRepository(operations)
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun jwkSource(): JWKSource<SecurityContext> {
|
||||
|
Loading…
Reference in New Issue
Block a user