List of usage examples for io.vertx.core.json JsonObject put
public JsonObject put(String key, Object value)
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); } }