Example usage for io.vertx.core.json JsonObject getString

List of usage examples for io.vertx.core.json JsonObject getString

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getString.

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

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);
            }
        }
    });
}