Skip to content
This repository was archived by the owner on Aug 1, 2025. It is now read-only.

Commit 74bef68

Browse files
auth works for real this time
1 parent cf91987 commit 74bef68

File tree

3 files changed

+13
-26
lines changed

3 files changed

+13
-26
lines changed

src/main/java/org/brapi/test/BrAPITestServer/auth/BrapiTestServerAuthConfig.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.brapi.test.BrAPITestServer.auth;
22

3+
import org.springframework.beans.factory.annotation.Value;
34
import org.springframework.context.annotation.Configuration;
45
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
56
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -11,14 +12,17 @@
1112
@EnableWebSecurity
1213
@EnableGlobalMethodSecurity(prePostEnabled=true)
1314
public class BrapiTestServerAuthConfig extends WebSecurityConfigurerAdapter{
15+
16+
@Value( "${security.oidc_discovery_url}" )
17+
private String oidcDiscoveryUrl;
1418

1519
@Override
1620
protected void configure(HttpSecurity http) throws Exception {
1721
http.csrf().disable().authorizeRequests()
1822
.anyRequest()
1923
.permitAll().and() //TODO secure this
2024
//.authenticated().and()
21-
.addFilter(new BrapiTestServerJWTAuthFilter(authenticationManager()))
25+
.addFilter(new BrapiTestServerJWTAuthFilter(authenticationManager(), oidcDiscoveryUrl))
2226
// this disables session creation on Spring Security
2327
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
2428
}

src/main/java/org/brapi/test/BrAPITestServer/auth/BrapiTestServerJWTAuthFilter.java

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,21 @@
44
import java.io.FileNotFoundException;
55
import java.io.IOException;
66
import java.io.InputStream;
7-
import java.io.StringReader;
87
import java.net.URL;
98
import java.security.GeneralSecurityException;
10-
import java.security.KeyFactory;
11-
import java.security.NoSuchAlgorithmException;
129
import java.security.cert.Certificate;
1310
import java.security.cert.CertificateException;
1411
import java.security.cert.CertificateFactory;
1512
import java.security.interfaces.RSAPublicKey;
16-
import java.security.spec.EncodedKeySpec;
17-
import java.security.spec.InvalidKeySpecException;
18-
import java.security.spec.RSAPublicKeySpec;
19-
import java.security.spec.X509EncodedKeySpec;
20-
import java.time.Duration;
2113
import java.util.ArrayList;
2214
import java.util.Arrays;
2315
import java.util.List;
2416
import javax.servlet.FilterChain;
2517
import javax.servlet.ServletException;
2618
import javax.servlet.http.HttpServletRequest;
2719
import javax.servlet.http.HttpServletResponse;
28-
import javax.xml.bind.DatatypeConverter;
29-
3020
import org.apache.commons.codec.binary.Base64;
31-
import org.apache.http.HttpEntity;
32-
import org.apache.http.ParseException;
33-
import org.apache.http.client.ClientProtocolException;
34-
import org.apache.http.client.HttpClient;
35-
import org.apache.http.client.methods.CloseableHttpResponse;
36-
import org.apache.http.client.methods.HttpGet;
37-
import org.apache.http.impl.client.CloseableHttpClient;
38-
import org.apache.http.impl.client.HttpClients;
39-
import org.apache.http.util.EntityUtils;
21+
import org.springframework.beans.factory.annotation.Value;
4022
import org.springframework.http.HttpStatus;
4123
import org.springframework.security.authentication.AuthenticationManager;
4224
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -47,21 +29,20 @@
4729

4830
import com.auth0.jwt.JWT;
4931
import com.auth0.jwt.algorithms.Algorithm;
50-
import com.auth0.jwt.exceptions.JWTVerificationException;
5132
import com.auth0.jwt.interfaces.DecodedJWT;
5233
import com.auth0.jwt.interfaces.JWTVerifier;
5334
import com.fasterxml.jackson.databind.JsonNode;
5435
import com.fasterxml.jackson.databind.ObjectMapper;
55-
import com.fasterxml.jackson.databind.node.ObjectNode;
56-
import com.google.api.client.util.PemReader;
5736

5837
public class BrapiTestServerJWTAuthFilter extends BasicAuthenticationFilter {
5938
private static final List<String> USER_IDS = Arrays.asList("dummy", "dummyAdmin", "113212610256718182401");
6039
private static final List<String> ADMIN_IDS = Arrays.asList("dummyAdmin", "113212610256718182401");
61-
private static final String OIDC_DISCOVERY_URL = "https://auth.brapi.org/auth/realms/brapi/.well-known/openid-configuration";
6240

63-
public BrapiTestServerJWTAuthFilter(AuthenticationManager authManager) {
41+
private String oidcDiscoveryUrl;
42+
43+
public BrapiTestServerJWTAuthFilter(AuthenticationManager authManager, String oidcDiscoveryUrl) {
6444
super(authManager);
45+
this.oidcDiscoveryUrl = oidcDiscoveryUrl;
6546
}
6647

6748
@Override
@@ -121,7 +102,7 @@ private String validateOAuthToken(HttpServletRequest request) {
121102
String token = request.getHeader("Authorization");
122103
if (token != null) {
123104
token = token.replaceFirst("Bearer ", "");
124-
RSAPublicKey pubKey = getPublicKey(OIDC_DISCOVERY_URL);
105+
RSAPublicKey pubKey = getPublicKey(oidcDiscoveryUrl);
125106

126107
Algorithm algorithm = Algorithm.RSA256(pubKey, null);
127108
JWTVerifier verifier = JWT.require(algorithm)

src/main/resources/application.properties.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ spring.jpa.show-sql=false
1212
spring.jpa.properties.hibernate.hbm2ddl.import_files=sql/crops.sql, sql/lists.sql, sql/locations.sql, sql/people.sql, sql/programs.sql, sql/trials.sql, sql/seasons.sql, sql/studies.sql, sql/breeding_methods.sql, sql/germplasm.sql, sql/attribute_defs.sql, sql/attribute_values.sql, sql/seed_lots.sql, sql/observation_units.sql, sql/crosses.sql, sql/pedigree.sql, sql/events.sql, sql/images.sql, sql/observation_variables.sql, sql/observations.sql, sql/samples.sql, sql/allele_calls.sql, sql/genome_maps.sql, sql/references.sql, sql/vendor.sql
1313

1414
spring.mvc.dispatch-options-request=true
15+
16+
security.oidc_discovery_url=https://example.com/auth/.well-known/openid-configuration

0 commit comments

Comments
 (0)