Fixing Yannick's problem
This commit is contained in:
parent
688ff3cedd
commit
c915a96535
6 changed files with 50 additions and 32 deletions
|
@ -6,5 +6,6 @@
|
||||||
<classpathentry exported="true" kind="lib" path="mysql-connector-java-8.0.28.jar"/>
|
<classpathentry exported="true" kind="lib" path="mysql-connector-java-8.0.28.jar"/>
|
||||||
<classpathentry exported="true" kind="lib" path="password4j-1.6.3.jar"/>
|
<classpathentry exported="true" kind="lib" path="password4j-1.6.3.jar"/>
|
||||||
<classpathentry exported="true" kind="lib" path="slf4j-api-2.0.6.jar"/>
|
<classpathentry exported="true" kind="lib" path="slf4j-api-2.0.6.jar"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="jose4j-0.9.3.jar"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -11,6 +11,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
public class PuzzleResponse implements Response {
|
public class PuzzleResponse implements Response {
|
||||||
private final DatabaseRepository databaseRepo;
|
private final DatabaseRepository databaseRepo;
|
||||||
|
@ -20,7 +21,7 @@ public class PuzzleResponse implements Response {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
HttpUtil.skipHeaders(reader);
|
HttpUtil.skipHeaders(reader);
|
||||||
|
|
||||||
int puzzleId = Integer.parseInt(matcher.group(1));
|
int puzzleId = Integer.parseInt(matcher.group(1));
|
||||||
|
|
|
@ -8,6 +8,7 @@ import be.jeffcheasey88.peeratcode.webserver.HttpReader;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
import be.jeffcheasey88.peeratcode.webserver.HttpUtil;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
import be.jeffcheasey88.peeratcode.webserver.HttpWriter;
|
||||||
import be.jeffcheasey88.peeratcode.webserver.Response;
|
import be.jeffcheasey88.peeratcode.webserver.Response;
|
||||||
|
import be.jeffcheasey88.peeratcode.webserver.User;
|
||||||
|
|
||||||
public class Result implements Response{
|
public class Result implements Response{
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ public class Result implements Response{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exec(Matcher matcher, HttpReader reader, HttpWriter writer) throws Exception {
|
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
int puzzle = Integer.parseInt(matcher.group(1));
|
int puzzle = Integer.parseInt(matcher.group(1));
|
||||||
|
|
||||||
int score = this.repo.getScore(0, puzzle);
|
int score = this.repo.getScore(0, puzzle);
|
||||||
|
|
|
@ -3,7 +3,13 @@ package be.jeffcheasey88.peeratcode.webserver;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
|
||||||
import org.jose4j.jwk.RsaJsonWebKey;
|
import org.jose4j.jwk.RsaJsonWebKey;
|
||||||
|
import org.jose4j.jwk.RsaJwkGenerator;
|
||||||
|
import org.jose4j.jws.AlgorithmIdentifiers;
|
||||||
|
import org.jose4j.jwt.JwtClaims;
|
||||||
|
import org.jose4j.jwt.consumer.JwtConsumer;
|
||||||
|
import org.jose4j.jwt.consumer.JwtConsumerBuilder;
|
||||||
|
|
||||||
public class Client extends Thread{
|
public class Client extends Thread{
|
||||||
|
|
||||||
|
@ -25,10 +31,28 @@ public class Client extends Thread{
|
||||||
String[] headers = reader.readLine().split("\\s");
|
String[] headers = reader.readLine().split("\\s");
|
||||||
System.out.println(Arrays.toString(headers));
|
System.out.println(Arrays.toString(headers));
|
||||||
|
|
||||||
User user = new User(HttpUtil.readAutorization(reader));
|
router.exec(headers[0], headers[1], isLogin(reader), reader, writer);
|
||||||
router.exec(headers[0], headers[1], user, reader, writer);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private User isLogin(HttpReader reader){
|
||||||
|
try {
|
||||||
|
JwtConsumer jwtConsumer = new JwtConsumerBuilder()
|
||||||
|
.setRequireExpirationTime()
|
||||||
|
.setAllowedClockSkewInSeconds(30)
|
||||||
|
.setRequireSubject()
|
||||||
|
.setExpectedIssuer("Issuer")
|
||||||
|
.setExpectedAudience("Audience")
|
||||||
|
.setVerificationKey(this.router.getWebKey().getKey())
|
||||||
|
.setJwsAlgorithmConstraints(
|
||||||
|
ConstraintType.PERMIT, AlgorithmIdentifiers.RSA_USING_SHA256)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
JwtClaims jwtClaims = jwtConsumer.processToClaims(HttpUtil.readAutorization(reader));
|
||||||
|
return new User(jwtClaims);
|
||||||
|
}catch(Exception e){}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -4,13 +4,18 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
|
import org.jose4j.jwk.RsaJsonWebKey;
|
||||||
|
import org.jose4j.jwk.RsaJwkGenerator;
|
||||||
|
|
||||||
public class Router{
|
public class Router{
|
||||||
|
|
||||||
private List<Response> responses;
|
private List<Response> responses;
|
||||||
private Response noFileFound;
|
private Response noFileFound;
|
||||||
|
private RsaJsonWebKey rsaJsonWebKey;
|
||||||
|
|
||||||
public Router(){
|
public Router() throws Exception{
|
||||||
this.responses = new ArrayList<>();
|
this.responses = new ArrayList<>();
|
||||||
|
this.rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(Response response){
|
public void register(Response response){
|
||||||
|
@ -34,4 +39,7 @@ public class Router{
|
||||||
if(noFileFound != null) noFileFound.exec(null, user, reader, writer);
|
if(noFileFound != null) noFileFound.exec(null, user, reader, writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RsaJsonWebKey getWebKey(){
|
||||||
|
return this.rsaJsonWebKey;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,39 +1,22 @@
|
||||||
package be.jeffcheasey88.peeratcode.webserver;
|
package be.jeffcheasey88.peeratcode.webserver;
|
||||||
|
|
||||||
import org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
|
|
||||||
import org.jose4j.jwe.JsonWebEncryption;
|
|
||||||
import org.jose4j.jwk.JsonWebKey;
|
|
||||||
import org.jose4j.jwk.RsaJsonWebKey;
|
|
||||||
import org.jose4j.jwk.RsaJwkGenerator;
|
|
||||||
import org.jose4j.jws.AlgorithmIdentifiers;
|
|
||||||
import org.jose4j.jwt.JwtClaims;
|
import org.jose4j.jwt.JwtClaims;
|
||||||
import org.jose4j.jwt.consumer.ErrorCodes;
|
|
||||||
import org.jose4j.jwt.consumer.InvalidJwtException;
|
|
||||||
import org.jose4j.jwt.consumer.JwtConsumer;
|
|
||||||
import org.jose4j.jwt.consumer.JwtConsumerBuilder;
|
|
||||||
import org.jose4j.lang.JoseException;
|
|
||||||
|
|
||||||
public class User {
|
public class User {
|
||||||
|
|
||||||
private final String username;
|
private String username;
|
||||||
|
private int id;
|
||||||
|
|
||||||
public User(final RsaJsonWebKey rsaJsonWebKey, final String jwt) throws InvalidJwtException {
|
public User(JwtClaims jwtClaims){
|
||||||
JwtConsumer jwtConsumer = new JwtConsumerBuilder()
|
this.username = (String) jwtClaims.getClaimValue("username");
|
||||||
.setRequireExpirationTime()
|
this.id = (int) jwtClaims.getClaimValue("id");
|
||||||
.setAllowedClockSkewInSeconds(30)
|
|
||||||
.setRequireSubject()
|
|
||||||
.setExpectedIssuer("Issuer")
|
|
||||||
.setExpectedAudience("Audience")
|
|
||||||
.setVerificationKey(rsaJsonWebKey.getKey())
|
|
||||||
.setJwsAlgorithmConstraints(
|
|
||||||
ConstraintType.PERMIT, AlgorithmIdentifiers.RSA_USING_SHA256)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
JwtClaims jwtClaims = jwtConsumer.processToClaims(jwt);
|
|
||||||
username = (String) jwtClaims.getClaimValue("username");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUsername() {
|
public String getUsername(){
|
||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getId(){
|
||||||
|
return this.id;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue