List of usage examples for io.vertx.core.json JsonObject getString
public String getString(String key)
From source file:org.entcore.auth.oauth.OAuthDataHandler.java
License:Open Source License
@Override public void getAuthInfoById(String id, final Handler<AuthInfo> handler) { if (id != null && !id.trim().isEmpty()) { JsonObject query = new JsonObject().put("_id", id); mongo.findOne(AUTH_INFO_COLLECTION, query, new io.vertx.core.Handler<Message<JsonObject>>() { @Override/*from w ww . j a va 2s.co m*/ public void handle(Message<JsonObject> res) { if ("ok".equals(res.body().getString("status"))) { JsonObject r = res.body().getJsonObject("result"); r.put("id", r.getString("_id")); r.remove("_id"); r.remove("createdAt"); ObjectMapper mapper = new ObjectMapper(); try { handler.handle(mapper.readValue(r.encode(), AuthInfo.class)); } catch (IOException e) { handler.handle(null); } } else { handler.handle(null); } } }); } else { handler.handle(null); } }
From source file:org.entcore.auth.security.SamlValidator.java
License:Open Source License
/** * Build SAMLResponse and convert it in base64 * * @param serviceProvider serviceProvider name qualifier * @param userId neo4j userID// w ww . j av a2 s . c o m * @param nameId ameId value * @param message message * * * @throws SignatureException * @throws NoSuchAlgorithmException * @throws InvalidKeyException * @throws UnsupportedEncodingException * @throws MarshallingException */ public void generateSAMLResponse(final String serviceProvider, final String userId, final String nameId, final String host, final Message<JsonObject> message) throws SignatureException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, MarshallingException { logger.info("start generating SAMLResponse"); logger.info("SP : " + serviceProvider); final JsonObject idp = config.getJsonObject("saml-entng-idp-nq"); String entngIdpNameQualifierTMP = null; if (idp.containsKey(serviceProvider)) { entngIdpNameQualifierTMP = idp.getString(serviceProvider); } else if (idp.containsKey("default")) { entngIdpNameQualifierTMP = idp.getString(serviceProvider); } final String entngIdpNameQualifier = entngIdpNameQualifierTMP; if (entngIdpNameQualifier == null) { String error = "entngIdpNameQualifier can not be null. You must specify it in auth configuration (saml-entng-idp-nq properties)"; logger.error(error); JsonObject jsonObject = new JsonObject().put("error", error); sendOK(message, jsonObject); } logger.info("entngIdpNameQualifier : " + entngIdpNameQualifier); // -- get spSSODescriptor from serviceProvider id -- if (spSSODescriptor == null) { String error = "error SSODescriptor not found for serviceProvider : " + serviceProvider; logger.error(error); JsonObject jsonObject = new JsonObject().put("error", error); sendOK(message, jsonObject); } // --- TAG Issuer --- final Issuer idpIssuer = createIssuer(entngIdpNameQualifier); // --- TAG Status --- final Status status = createStatus(); final AssertionConsumerService assertionConsumerService = spSSODescriptor .getDefaultAssertionConsumerService(); if (assertionConsumerService == null) { String error = "error : AssertionConsumerService not found"; logger.error(error); sendError(message, error); } // --- TAG AttributeStatement --- createVectors(userId, host, new Handler<Either<String, JsonArray>>() { @Override public void handle(Either<String, JsonArray> event) { if (event.isRight()) { LinkedHashMap<String, List<String>> attributes = new LinkedHashMap<String, List<String>>(); JsonArray vectors = event.right().getValue(); if (vectors == null || vectors.size() == 0) { String error = "error building vectors for user " + userId; logger.error(error); sendError(message, error); } else { for (int i = 0; i < vectors.size(); i++) { List<String> vectorsValue = new ArrayList<>(); String vectorType = ""; JsonObject vectorsJsonObject = (vectors.getJsonObject(i)); for (Iterator<String> iter = (vectors.getJsonObject(i)).fieldNames().iterator(); iter .hasNext();) { vectorType = iter.next(); if (attributes.containsKey(vectorType)) { vectorsValue = attributes.get(vectorType); } vectorsValue.add(((JsonObject) vectorsJsonObject).getString(vectorType)); } attributes.put(vectorType, vectorsValue); } } AttributeStatement attributeStatement = createAttributeStatement(attributes); // --- TAG Assertion --- Assertion assertion = null; try { assertion = generateAssertion(entngIdpNameQualifier, serviceProvider, nameId, assertionConsumerService.getLocation(), userId); } catch (Exception e) { logger.error(e.getMessage(), e); sendError(message, e.getMessage(), e); } if (assertion == null) { String error = "error building assertion"; logger.error(error); sendError(message, error); } assertion.getAttributeStatements().add(attributeStatement); // -- attribute Destination (acs) -- String destination = assertionConsumerService.getLocation(); // --- Build response -- Response response = createResponse(new DateTime(), idpIssuer, status, assertion, destination); Signature signature = null; try { signature = createSignature(); } catch (Throwable e) { logger.error(e.getMessage(), e); sendError(message, e.getMessage()); } //response.setSignature(signature); assertion.setSignature(signature); ResponseMarshaller marshaller = new ResponseMarshaller(); Element element = null; try { element = marshaller.marshall(response); } catch (MarshallingException e) { logger.error(e.getMessage(), e); sendError(message, e.getMessage(), e); } if (signature != null) { try { Signer.signObject(signature); } catch (org.opensaml.xml.signature.SignatureException e) { logger.error(e.getMessage(), e); sendError(message, e.getMessage(), e); } } StringWriter rspWrt = new StringWriter(); XMLHelper.writeNode(element, rspWrt); debug("response : " + rspWrt.toString()); JsonObject jsonObject = new JsonObject(); String base64Response = Base64.getEncoder().encodeToString(rspWrt.toString().getBytes()); //, Base64.DONT_BREAK_LINES); debug("base64Response : " + base64Response); jsonObject.put("SAMLResponse64", base64Response); jsonObject.put("destination", destination); sendOK(message, jsonObject); } else { String error = "error bulding vectors for user " + userId + " :"; logger.error(error); logger.error(event.left().getValue()); sendError(message, error); } } }); }
From source file:org.entcore.auth.services.impl.AbstractSSOProvider.java
License:Open Source License
protected void executeMultiVectorQuery(String query, JsonObject params, final Assertion assertion, final Handler<Either<String, Object>> handler) { query += (RETURN_QUERY + ", s.name as structureName"); Neo4j.getInstance().execute(query, params, Neo4jResult.validResultHandler(new Handler<Either<String, JsonArray>>() { @Override//w w w .j a va 2s . c om public void handle(final Either<String, JsonArray> event) { if (event.isRight()) { JsonArray ids = new fr.wseduc.webutils.collections.JsonArray(); final Set<String> userIds = new HashSet<>(); final JsonArray users = event.right().getValue(); for (Object o : users) { if (!(o instanceof JsonObject)) continue; JsonObject j = (JsonObject) o; if (j.getBoolean("blockedProfile", false)) { handler.handle(new Either.Left<String, Object>("blocked.profile")); return; } userIds.add(j.getString("id")); if (Utils.isNotEmpty(j.getString("id")) && !j.getBoolean("federated", false)) { ids.add(j.getString("id")); } } if (ids.size() > 0) { String query = "MATCH (u:User) WHERE u.id IN {ids} SET u.federated = true "; JsonObject params = new JsonObject().put("ids", ids); if (assertion != null && assertion.getIssuer() != null && assertion.getIssuer().getValue() != null && !assertion.getIssuer().getValue().trim().isEmpty()) { query += ", u.federatedIDP = {idp} "; params.put("idp", assertion.getIssuer().getValue()); } Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event2) { if (userIds.size() == 1) { handler.handle( new Either.Right<String, Object>(users.getJsonObject(0))); } else { handler.handle(new Either.Right<String, Object>(users)); } } }); } else { if (userIds.size() == 1) { handler.handle(new Either.Right<String, Object>(users.getJsonObject(0))); } else { handler.handle(new Either.Right<String, Object>(users)); } } } else { handler.handle(new Either.Left<String, Object>(event.left().getValue())); } } })); }
From source file:org.entcore.auth.services.impl.DefaultOpendIdConnectService.java
License:Open Source License
@Override public void executeFederate(JsonObject payload, Handler<Either<String, Object>> handler) { if (iss.equals(payload.getString("iss")) && payload.getLong("exp", 0l) > (System.currentTimeMillis() / 1000)) { AbstractSSOProvider.executeFederateQuery("MATCH (u:User { externalId : {sub}}) ", payload, null, setFederated, Neo4j.getInstance(), handler); } else {/*from ww w . ja v a2 s.co m*/ handler.handle(new Either.Left<String, Object>("invalid.openid.payload")); } }
From source file:org.entcore.auth.services.impl.DefaultOpenIdServiceProviderFactory.java
License:Open Source License
public DefaultOpenIdServiceProviderFactory(Vertx vertx, JsonObject domains) { for (String domain : domains.fieldNames()) { JsonObject c = domains.getJsonObject(domain); OpenIdConnectServiceProvider provider; if ("France-Connect".equals(c.getString("provider"))) { provider = new FranceConnectServiceProvider(c.getString("iss")); } else {//from ww w . jav a 2 s.c om provider = new DefaultOpendIdConnectService(c.getString("iss")); } provider.setSetFederated(c.getBoolean("set-federated", true)); services.put(domain, provider); try { OpenIdConnectClient oic = new OpenIdConnectClient(new URI(c.getString("uri")), c.getString("clientId"), c.getString("secret"), c.getString("authorizeUrn"), c.getString("tokenUrn"), c.getString("redirectUri"), vertx, 16, c.getString("certsUri")); oic.setUserInfoUrn(c.getString("userInfoUrn")); oic.setLogoutUri(c.getString("logoutUri")); oic.setBasic(c.getBoolean("basic-to-get-token", true)); openIdConnectClients.put(domain, oic); } catch (URISyntaxException e) { log.error("Invalid openid server uri", e); } } }
From source file:org.entcore.auth.services.impl.DefaultServiceProviderFactory.java
License:Open Source License
public DefaultServiceProviderFactory(JsonObject confSP) { if (confSP != null) { for (String attr : confSP.fieldNames()) { try { services.put(attr, (SamlServiceProvider) Class.forName(confSP.getString(attr)).newInstance()); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | ClassCastException e) { logger.error("Error loading saml service provider.", e); }/*www . j a va 2 s.c om*/ } } }
From source file:org.entcore.auth.services.impl.FranceConnectServiceProvider.java
License:Open Source License
@Override public void executeFederate(final JsonObject payload, final Handler<Either<String, Object>> handler) { if (iss.equals(payload.getString("iss")) && payload.getLong("exp", 0l) > (System.currentTimeMillis() / 1000) && isNotEmpty(payload.getString("sub"))) { neo4j.execute(QUERY_SUB_FC, payload, validUniqueResultHandler(new Handler<Either<String, JsonObject>>() { @Override/*from w ww. j a v a 2 s .c o m*/ public void handle(final Either<String, JsonObject> event) { if (event.isRight() && event.right().getValue().getBoolean("blockedProfile", false)) { handler.handle(new Either.Left<String, Object>("blocked.profile")); } else if (event.isRight() && event.right().getValue().size() > 0) { handler.handle(new Either.Right<String, Object>(event.right().getValue())); } else { federateWithPivot(payload, handler); } } })); } else { handler.handle(new Either.Left<String, Object>("invalid.openid.payload")); } }
From source file:org.entcore.auth.services.impl.FranceConnectServiceProvider.java
License:Open Source License
@Override public void mappingUser(String login, final String password, final JsonObject payload, final Handler<Either<String, Object>> handler) { final JsonObject params = new JsonObject().put("login", login).put("password", password); neo4j.execute(QUERY_MAPPING_FC, params, validUniqueResultHandler(new Handler<Either<String, JsonObject>>() { @Override//from w ww .jav a 2 s . c om public void handle(Either<String, JsonObject> event) { if (event.isRight()) { JsonObject res = event.right().getValue(); boolean success = password.equals(res.getString("activationCode")); if (!success && isNotEmpty(res.getString("password"))) { try { switch (res.getString("password").length()) { case 32: // md5 success = res.getString("password").equals(Md5.hash(password)); break; case 64: // sha-256 success = res.getString("password").equals(Sha256.hash(password)); break; default: // BCrypt success = BCrypt.checkpw(password, res.getString("password")); } } catch (NoSuchAlgorithmException e) { handler.handle(new Either.Left<String, Object>(e.getMessage())); } } if (success) { params.put("setFederated", setFederated); neo4j.execute(QUERY_SET_MAPPING_FC, params.put("sub", payload.getString("sub")), validUniqueResultHandler(new Handler<Either<String, JsonObject>>() { @Override public void handle(final Either<String, JsonObject> event) { if (event.isRight() && event.right().getValue().getBoolean("blockedProfile", false)) { handler.handle(new Either.Left<String, Object>("blocked.profile")); } else if (event.isRight()) { handler.handle( new Either.Right<String, Object>(event.right().getValue())); } else { handler.handle( new Either.Left<String, Object>("invalid.openid.payload")); } } })); } } else { handler.handle(new Either.Left<String, Object>(event.left().getValue())); } } })); }
From source file:org.entcore.blog.controllers.BlogController.java
License:Open Source License
@Get("/list/all") @SecuredAction("blog.list") public void list(final HttpServerRequest request) { getUserInfos(eb, request, new Handler<UserInfos>() { @Override/*from w w w . ja v a 2 s.com*/ public void handle(final UserInfos user) { if (user != null) { final Integer page; try { page = (request.params().get("page") != null) ? Integer.parseInt(request.params().get("page")) : null; } catch (NumberFormatException e) { badRequest(request, e.getMessage()); return; } final String search = request.params().get("search"); blog.list(user, page, search, new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isLeft()) { arrayResponseHandler(request).handle(event); ; return; } final JsonArray blogs = event.right().getValue(); if (blogs.size() < 1) { renderJson(request, new JsonArray()); return; } final AtomicInteger countdown = new AtomicInteger(blogs.size()); final Handler<Void> finalHandler = new Handler<Void>() { public void handle(Void v) { if (countdown.decrementAndGet() <= 0) { renderJson(request, blogs); } } }; for (Object blogObj : blogs) { final JsonObject blog = (JsonObject) blogObj; postService.list(blog.getString("_id"), PostService.StateType.PUBLISHED, user, null, 2, null, new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isRight()) { blog.put("fetchPosts", event.right().getValue()); } finalHandler.handle(null); } }); } } }); } else { unauthorized(request); } } }); }
From source file:org.entcore.blog.controllers.BlogController.java
License:Open Source License
@Get("/linker") public void listBlogsIds(final HttpServerRequest request) { getUserInfos(eb, request, new Handler<UserInfos>() { @Override//from ww w . j a v a 2s . c om public void handle(final UserInfos user) { if (user != null) { blog.list(user, null, null, new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isLeft()) { arrayResponseHandler(request).handle(event); return; } final JsonArray blogs = event.right().getValue(); if (blogs.size() < 1) { renderJson(request, new JsonArray()); return; } final AtomicInteger countdown = new AtomicInteger(blogs.size()); final Handler<Void> finalHandler = new Handler<Void>() { public void handle(Void v) { if (countdown.decrementAndGet() <= 0) { renderJson(request, blogs); } } }; for (Object blogObj : blogs) { final JsonObject blog = (JsonObject) blogObj; postService.list(blog.getString("_id"), PostService.StateType.PUBLISHED, user, null, 0, null, new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isRight()) { blog.put("fetchPosts", event.right().getValue()); } finalHandler.handle(null); } }); } } }); } else { unauthorized(request); } } }); }