backend json validation added
This commit is contained in:
parent
84006bd941
commit
6cf8537818
|
@ -11,9 +11,10 @@ public class JwksDeserializer implements JsonDeserializer<Jwks> {
|
|||
throws JsonParseException {
|
||||
|
||||
JsonObject jsonObject = jsonElement.getAsJsonObject();
|
||||
System.out.println("json object" + jsonObject);
|
||||
if (jsonObject == null) throw new JsonParseException("Jwks not valid.");
|
||||
JsonArray jsonArray = jsonObject.getAsJsonArray("keys");
|
||||
System.out.println("json array" + jsonArray);
|
||||
|
||||
if (jsonArray == null ) throw new JsonParseException("Jwks not valid.");
|
||||
|
||||
Jwks jwks = new Jwks();
|
||||
Key[] keys = new Key[jsonArray.size()];
|
||||
|
@ -22,10 +23,21 @@ public class JwksDeserializer implements JsonDeserializer<Jwks> {
|
|||
for (int i = 0; i < jsonArray.size(); i++) {
|
||||
key = new Key();
|
||||
JsonElement je = jsonArray.get(i);
|
||||
|
||||
if (je == null) throw new JsonParseException("Jwks not valid.");
|
||||
if (je.getAsJsonObject().get("kty")==null) throw new JsonParseException("Jwks not valid.");
|
||||
key.setKty(je.getAsJsonObject().get("kty").getAsString());
|
||||
|
||||
if (je.getAsJsonObject().get("e")==null) throw new JsonParseException("Jwks not valid.");
|
||||
key.setE(je.getAsJsonObject().get("e").getAsString());
|
||||
|
||||
if (je.getAsJsonObject().get("kid")==null) throw new JsonParseException("Jwks not valid.");
|
||||
key.setKid(je.getAsJsonObject().get("kid").getAsString());
|
||||
|
||||
if (je.getAsJsonObject().get("alg")==null) throw new JsonParseException("Jwks not valid.");
|
||||
key.setAlg(je.getAsJsonObject().get("alg").getAsString());
|
||||
|
||||
if (je.getAsJsonObject().get("n")==null) throw new JsonParseException("Jwks not valid.");
|
||||
key.setN(je.getAsJsonObject().get("n").getAsString());
|
||||
keys[i] = key;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.dnetlib.openaire.usermanagement;
|
|||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonParseException;
|
||||
import eu.dnetlib.openaire.user.pojos.RegisteredService;
|
||||
import eu.dnetlib.openaire.usermanagement.utils.RegisteredServicesUtils;
|
||||
import eu.dnetlib.openaire.usermanagement.utils.TokenUtils;
|
||||
|
@ -68,7 +69,8 @@ public class RegisterServiceServlet extends HttpServlet {
|
|||
|
||||
if (keyType.equals("uri")) {
|
||||
jwksUri = request.getParameter("uri");
|
||||
UrlValidator urlValidator = new UrlValidator();
|
||||
String[] schemes = {"https"};
|
||||
UrlValidator urlValidator = new UrlValidator(schemes);
|
||||
if (!urlValidator.isValid(jwksUri)){
|
||||
System.out.println("Not valid? " + jwksUri);
|
||||
request.getSession().setAttribute("msg_key_uri_error_display", "display:block");
|
||||
|
@ -76,10 +78,15 @@ public class RegisterServiceServlet extends HttpServlet {
|
|||
}
|
||||
} else {
|
||||
jwksString = request.getParameter("value");
|
||||
Gson gson = new GsonBuilder().registerTypeAdapter(Jwks.class, new JwksDeserializer()).create();
|
||||
jwks = gson.fromJson(jwksString, Jwks.class);
|
||||
if (jwks.getKeys()==null || jwks.getKeys().length==0) {
|
||||
System.out.println("Something wrong with the keys.");
|
||||
try {
|
||||
Gson gson = new GsonBuilder().registerTypeAdapter(Jwks.class, new JwksDeserializer()).create();
|
||||
jwks = gson.fromJson(jwksString, Jwks.class);
|
||||
if (jwks.getKeys() == null || jwks.getKeys().length == 0) {
|
||||
System.out.println("Something wrong with the keys.");
|
||||
request.getSession().setAttribute("msg_key_value_error_display", "display:block");
|
||||
canProceed = false;
|
||||
}
|
||||
} catch (JsonParseException jpe) {
|
||||
request.getSession().setAttribute("msg_key_value_error_display", "display:block");
|
||||
canProceed = false;
|
||||
}
|
||||
|
@ -131,7 +138,7 @@ public class RegisterServiceServlet extends HttpServlet {
|
|||
request.getSession().setAttribute("key_radio", keyType);
|
||||
request.getSession().setAttribute("uri", jwksUri);
|
||||
request.getSession().setAttribute("value", jwksString);
|
||||
|
||||
|
||||
response.sendRedirect("./registerService");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -140,16 +140,16 @@
|
|||
<div class="uk-margin">
|
||||
<label class="uk-form-label" for="form-horizontal-text">Public Key Set</label>
|
||||
|
||||
<label><input class="uk-radio" type="radio" name="key_radio" value="value" checked>By Value</label>
|
||||
<label><input class="uk-radio" type="radio" name="key_radio" value="uri">By URI</label><br>
|
||||
<label><input class="uk-radio" type="radio" name="key_radio" value="value" ${(key_radio == 'value' || key_radio == '') ? 'checked' : ''} >By Value</label>
|
||||
<label><input class="uk-radio" type="radio" name="key_radio" value="uri" ${key_radio == 'uri' ? 'checked' : ''} >By URI</label><br>
|
||||
|
||||
<div id="value_input">
|
||||
<span class="msg_key_value_error uk-text-danger uk-text-small uk-float-left" style='${msg_key_value_error_display}'>Please provide a valid JSON.</span>
|
||||
<textarea id="value" name="value" type="textarea" placeholder='{"keys":[]}' class="form-control uk-textarea" rows="10">{"keys":[]}</textarea>
|
||||
<textarea id="value" name="value" type="textarea" placeholder='{"keys":[]}' class="form-control uk-textarea" rows="10" value=${value}></textarea>
|
||||
</div>
|
||||
<div id="uri_input" style="display:none;">
|
||||
<span class="msg_key_uri_error uk-text-danger uk-text-small uk-float-left" style='${msg_key_uri_error_display}'>Please provide a valid URI (do not forget the protocol! https://...)</span>
|
||||
<input id="uri" name="uri" type="text" placeholder="https://" class="form-control" value="${jwksUri}">
|
||||
<input id="uri" name="uri" type="text" placeholder="https://" class="form-control" value=${uri}>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="uk-margin-remove-top">
|
||||
|
|
Loading…
Reference in New Issue