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

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

Introduction

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

Prototype

public JsonObject put(String key, Object value) 

Source Link

Document

Put an Object into the JSON object with the specified key.

Usage

From source file:org.entcore.auth.controllers.SamlController.java

License:Open Source License

private void loginResult(final HttpServerRequest request, String error) {
    if (federatedAuthenticateError) {
        final JsonObject context = new JsonObject();
        if (error != null && !error.trim().isEmpty()) {
            context.put("error", new JsonObject().put("message",
                    I18n.getInstance().translate(error, getHost(request), I18n.acceptLanguage(request))));
        }/*  w  w  w . j  a v a2 s  .c om*/
        context.put("notLoggedIn", true);
        renderView(request, context, "login.html", null);
    } else {
        redirect(request, LOGIN_PAGE);
    }
}

From source file:org.entcore.auth.controllers.SamlController.java

License:Open Source License

@Override
protected void afterDropSession(JsonObject event, final HttpServerRequest request, UserInfos user,
        final String c) {
    request.headers().remove("Cookie");
    event.put("action", "generate-slo-request");
    event.put("IDP", (String) user.getOtherProperties().get("federatedIDP"));
    if (log.isDebugEnabled()) {
        log.debug("Session metadata : " + event.encodePrettily());
    }//  w  w w  .j  a  v a 2  s .c o  m

    String nameID = event.getString("NameID");
    if (nameID != null && !nameID.isEmpty()) {
        if (softSlo) {
            Matcher academyMatcher = NAME_QUALIFIER_PATTERN.matcher(nameID);
            if (academyMatcher.find()) {
                String nameQualifier = academyMatcher.group(1);
                JsonObject confSoftSlo = config.getJsonObject("soft-slo-redirect");
                if (confSoftSlo != null) {
                    String redirectIDP = confSoftSlo.getString(nameQualifier);
                    if (redirectIDP != null) {
                        redirect(request, redirectIDP, "");
                    } else {
                        log.error("Error loading soft-slo-redirect for IDP : " + nameQualifier);
                        redirect(request, LOGIN_PAGE);
                    }
                } else {
                    log.error("Error loading soft-slo-redirect properties.");
                    redirect(request, LOGIN_PAGE);
                }
            }
        } else {
            // normal slo
            vertx.eventBus().send("saml", event, handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    if (log.isDebugEnabled()) {
                        log.debug("slo request : " + event.body().encodePrettily());
                    }
                    String slo = event.body().getString("slo");
                    try {
                        if (c != null && !c.isEmpty()) {
                            slo = c + URLEncoder.encode(slo, "UTF-8");
                        } else {
                            slo = URLEncoder.encode(slo, "UTF-8");
                        }
                    } catch (UnsupportedEncodingException e) {
                        log.error(e.getMessage(), e);
                    }
                    AuthController.logoutCallback(request, slo, config, eb);
                }
            }));
        }
    } else {
        AuthController.logoutCallback(request, null, config, eb);
    }
}

From source file:org.entcore.auth.controllers.SamlController.java

License:Open Source License

@Post("/saml/selectUser")
public void selectUser(final HttpServerRequest request) {
    request.setExpectMultipart(true);//from   www.j  av  a2  s .  c  om
    request.endHandler(new Handler<Void>() {
        @Override
        public void handle(Void v) {
            final JsonObject j = new JsonObject();
            for (String attr : request.formAttributes().names()) {
                if (isNotEmpty(request.formAttributes().get(attr))) {
                    j.put(attr, request.formAttributes().get(attr));
                }
            }
            final String nameId = j.getString("nameId", "").replaceAll("\\r", "");
            final String sessionIndex = j.getString("sessionIndex");
            try {
                if (j.getString("key", "").equals(HmacSha1
                        .sign(sessionIndex + nameId + j.getString("login") + j.getString("id"), signKey))) {
                    authenticate(j, sessionIndex, nameId, request);
                } else {
                    log.error("Invalid signature for federated user.");
                    redirect(request, LOGIN_PAGE);
                }
            } catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
                log.error("Error validating signature of federated user.", e);
                redirect(request, LOGIN_PAGE);
            }
        }
    });
}

From source file:org.entcore.auth.controllers.SamlController.java

License:Open Source License

private JsonObject getUsersWithSignatures(JsonArray array, String sessionIndex, String nameId)
        throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
    for (Object o : array) {
        if (!(o instanceof JsonObject))
            continue;
        JsonObject j = (JsonObject) o;
        j.put("key", HmacSha1.sign(sessionIndex + nameId + j.getString("login") + j.getString("id"), signKey));
        j.put("nameId", nameId);
        j.put("sessionIndex", sessionIndex);
    }/*from   w w  w  .j  av  a 2s .  c  o m*/
    return new JsonObject().put("users", array);
}

From source file:org.entcore.auth.oauth.OAuthDataHandler.java

License:Open Source License

private void createAuthInfo(String clientId, String userId, String scope, String redirectUri,
        final Handler<AuthInfo> handler) {
    final JsonObject auth = new JsonObject().put("clientId", clientId).put("userId", userId).put("scope", scope)
            .put("createdAt", MongoDb.now()).put("refreshToken", UUID.randomUUID().toString());
    if (redirectUri != null) {
        auth.put("redirectUri", redirectUri).put("code", UUID.randomUUID().toString());
    }//from   ww  w. j a  va 2  s . co m
    mongo.save(AUTH_INFO_COLLECTION, auth, new io.vertx.core.Handler<Message<JsonObject>>() {

        @Override
        public void handle(Message<JsonObject> res) {
            if ("ok".equals(res.body().getString("status"))) {
                auth.put("id", res.body().getString("_id"));
                auth.remove("createdAt");
                ObjectMapper mapper = new ObjectMapper();
                try {
                    handler.handle(mapper.readValue(auth.encode(), AuthInfo.class));
                } catch (IOException e) {
                    handler.handle(null);
                }
            } else {
                handler.handle(null);
            }
        }
    });
}

From source file:org.entcore.auth.oauth.OAuthDataHandler.java

License:Open Source License

@Override
public void createOrUpdateAccessToken(final AuthInfo authInfo, final Handler<AccessToken> handler) {
    if (authInfo != null) {
        final JsonObject query = new JsonObject().put("authId", authInfo.getId());
        mongo.count(ACCESS_TOKEN_COLLECTION, query, new io.vertx.core.Handler<Message<JsonObject>>() {
            @Override/*  ww  w. j  av  a2 s .c  o  m*/
            public void handle(Message<JsonObject> event) {
                if ("ok".equals(event.body().getString("status")) && (event.body().getInteger("count", 1) == 0
                        || isNotEmpty(authInfo.getRefreshToken()))) {
                    final JsonObject token = new JsonObject().put("authId", authInfo.getId())
                            .put("token", UUID.randomUUID().toString()).put("createdOn", MongoDb.now())
                            .put("expiresIn", 3600);
                    if (openIdConnectService != null && authInfo.getScope() != null
                            && authInfo.getScope().contains("openid")) {
                        //"2.0".equals(RequestUtils.getAcceptVersion(getRequest().getHeader("Accept")))) {
                        openIdConnectService.generateIdToken(authInfo.getUserId(), authInfo.getClientId(),
                                new io.vertx.core.Handler<AsyncResult<String>>() {
                                    @Override
                                    public void handle(AsyncResult<String> ar) {
                                        if (ar.succeeded()) {
                                            token.put("id_token", ar.result());
                                            persistToken(token);
                                        } else {
                                            log.error("Error generating id_token.", ar.cause());
                                            handler.handle(null);
                                        }
                                    }
                                });
                    } else {
                        persistToken(token);
                    }
                } else { // revoke existing token and code with same authId
                    mongo.delete(ACCESS_TOKEN_COLLECTION, query);
                    mongo.delete(AUTH_INFO_COLLECTION, new JsonObject().put("_id", authInfo.getId()));
                    handler.handle(null);
                }
            }

            private void persistToken(final JsonObject token) {
                mongo.save(ACCESS_TOKEN_COLLECTION, token, new io.vertx.core.Handler<Message<JsonObject>>() {

                    @Override
                    public void handle(Message<JsonObject> res) {
                        if ("ok".equals(res.body().getString("status"))) {
                            AccessToken t = new AccessToken();
                            t.setAuthId(authInfo.getId());
                            t.setToken(token.getString("token"));
                            t.setCreatedOn(new Date(token.getJsonObject("createdOn").getLong("$date")));
                            t.setExpiresIn(3600);
                            if (token.containsKey("id_token")) {
                                t.setIdToken(token.getString("id_token"));
                            }
                            handler.handle(t);
                        } else {
                            handler.handle(null);
                        }
                    }
                });
            }
        });
    } else {
        handler.handle(null);
    }
}

From source file:org.entcore.auth.oauth.OAuthDataHandler.java

License:Open Source License

@Override
public void getAuthInfoByCode(String code, final Handler<AuthInfo> handler) {
    if (code != null && !code.trim().isEmpty()) {
        JsonObject query = new JsonObject().put("code", code).put("createdAt", new JsonObject().put("$gte",
                new JsonObject().put("$date", System.currentTimeMillis() - CODE_EXPIRES)));
        mongo.findOne(AUTH_INFO_COLLECTION, query, new io.vertx.core.Handler<Message<JsonObject>>() {

            @Override/*from  ww w  .  java 2  s . c  o  m*/
            public void handle(Message<JsonObject> res) {
                JsonObject r = res.body().getJsonObject("result");
                if ("ok".equals(res.body().getString("status")) && r != null && r.size() > 0) {
                    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.oauth.OAuthDataHandler.java

License:Open Source License

@Override
public void getAuthInfoByRefreshToken(String refreshToken, final Handler<AuthInfo> handler) {
    if (refreshToken != null && !refreshToken.trim().isEmpty()) {
        JsonObject query = new JsonObject().put("refreshToken", refreshToken);
        mongo.findOne(AUTH_INFO_COLLECTION, query, new io.vertx.core.Handler<Message<JsonObject>>() {

            @Override//from w ww.j a va  2s . c o  m
            public void handle(Message<JsonObject> res) {
                if ("ok".equals(res.body().getString("status"))) {
                    JsonObject r = res.body().getJsonObject("result");
                    if (r == null) {
                        handler.handle(null);
                        return;
                    }
                    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.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/* w w  w .j a v a  2s  . c o 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

@Override
public void handle(Message<JsonObject> message) {
    final String action = message.body().getString("action", "");
    final String response = message.body().getString("response");
    final String idp = message.body().getString("IDP");
    if (!"generate-slo-request".equals(action) && !"generate-authn-request".equals(action)
            && !"generate-saml-response".equals(action) && (response == null || response.trim().isEmpty())) {
        sendError(message, "invalid.response");
        return;//from  w ww. jav a 2s.c  om
    }
    try {
        switch (action) {
        case "generate-authn-request":
            String sp = message.body().getString("SP");
            String acs = message.body().getString("acs");
            boolean sign = message.body().getBoolean("AuthnRequestsSigned", false);
            if (message.body().getBoolean("SimpleSPEntityID", false)) {
                sendOK(message, generateSimpleSPEntityIDRequest(idp, sp));
            } else {
                sendOK(message, generateAuthnRequest(idp, sp, acs, sign));
            }
            break;
        case "generate-saml-response":
            String serviceProvider = message.body().getString("SP");
            String userId = message.body().getString("userId");
            String nameid = message.body().getString("nameid");
            String host = message.body().getString("host");
            spSSODescriptor = getSSODescriptor(serviceProvider);
            generateSAMLResponse(serviceProvider, userId, nameid, host, message);
            break;
        case "validate-signature":
            sendOK(message, new JsonObject().put("valid", validateSignature(response)));
            break;
        case "decrypt-assertion":
            sendOK(message, new JsonObject().put("assertion", decryptAssertion(response)));
            break;
        case "validate-signature-decrypt":
            final JsonObject res = new JsonObject();
            if (validateSignature(response)) {
                res.put("valid", true).put("assertion", decryptAssertion(response));
            } else {
                res.put("valid", false).put("assertion", (String) null);
            }
            sendOK(message, res);
            break;
        case "generate-slo-request":
            String sessionIndex = message.body().getString("SessionIndex");
            String nameID = message.body().getString("NameID");
            sendOK(message, new JsonObject().put("slo", generateSloRequest(nameID, sessionIndex, idp)));
            break;
        default:
            sendError(message, "invalid.action");
        }
    } catch (Exception e) {
        sendError(message, e.getMessage(), e);
    }
}