Initial commit, working server
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package no.asprusten.sykkelaksjon.security;
|
||||
|
||||
import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod;
|
||||
import org.pac4j.core.authorization.authorizer.DefaultAuthorizers;
|
||||
import org.pac4j.core.config.Config;
|
||||
import org.pac4j.http.client.direct.HeaderClient;
|
||||
import org.pac4j.oidc.client.OidcClient;
|
||||
import org.pac4j.oidc.config.OidcConfiguration;
|
||||
import org.pac4j.springframework.config.Pac4jSecurityConfig;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Configuration
|
||||
public class SecurityConfig extends Pac4jSecurityConfig {
|
||||
|
||||
@Value("${sykkelaksjon.openid.discoveryURI}")
|
||||
private String discoveryURI;
|
||||
|
||||
@Value("${sykkelaksjon.openid.clientId}")
|
||||
private String clientId;
|
||||
|
||||
@Bean
|
||||
public Config config() {
|
||||
final var config = new OidcConfiguration()
|
||||
.setDiscoveryURI(discoveryURI)
|
||||
.setClientId(clientId);
|
||||
|
||||
OidcClient client = new OidcClient(config);
|
||||
client.setCallbackUrl("notused");
|
||||
client.init();
|
||||
|
||||
HeaderClient headerClient = new HeaderClient("Authorization", "Bearer ", client.getProfileCreator());
|
||||
return new Config(headerClient);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInterceptors(final InterceptorRegistry registry) {
|
||||
addSecurity(registry, "HeaderClient").addPathPatterns("/api/**").excludePathPatterns("/api/openid").excludeHttpMethods(List.of(HttpMethod.OPTIONS));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package no.asprusten.sykkelaksjon.security;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
@ControllerAdvice
|
||||
public class ServerExceptionHandler {
|
||||
public static class InvalidUserException extends Exception {}
|
||||
|
||||
@ResponseStatus(HttpStatus.FORBIDDEN)
|
||||
@ExceptionHandler(InvalidUserException.class)
|
||||
public void handleInvalidUser() {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user