List of usage examples for io.vertx.core.json JsonArray stream
public Stream<Object> stream()
From source file:io.flowly.auth.router.UserRouter.java
License:Open Source License
private JsonObject getAuthenticatedUser(JsonObject user) { if (!user.getBoolean(User.AUTHENTICATED)) { return user; }//from w w w . j a va2s . c o m JsonObject claims = new JsonObject().put("sub", user.getString(User.USER_ID)).put("permissions", user.remove(Permission.EFFECTIVE_PERMISSIONS)); JsonArray directMemberships = (JsonArray) user.remove(User.DIRECT_MEMBERSHIPS); if (directMemberships != null) { claims.put(ObjectKeys.GURU, directMemberships.stream().anyMatch(m -> { JsonObject group = (JsonObject) m; String groupId = group.getString(Group.GROUP_ID); return groupId != null && groupId.equals(ObjectKeys.ADMIN_GROUP_ID); })); } return user.put("token", authProvider.generateToken(claims, new JWTOptions())); }
From source file:io.nitor.api.backend.auth.SetupAzureAdConnectAuth.java
License:Apache License
public static void setupAzureAd(JsonObject adAuth, Router router, String publicURI, boolean virtualHost, CookieSessionHandler sessionHandler, HttpClient httpClient) { final String callbackPath = adAuth.getString("callbackPath", "/oidc/callback"); String redirectUri = publicURI + callbackPath; adAuth.put("redirectUri", redirectUri); String path = adAuth.getString("route", "/*"); List<GraphQuery> graphQueries = new ArrayList<>(); JsonArray queryNodes = adAuth.getJsonArray("graphQueries"); if (queryNodes == null) { graphQueries.add(new GraphQuery(adAuth, "https://graph.microsoft.com/beta/me?$expand=memberOf")); } else {/*from w w w . ja v a2 s . c om*/ queryNodes.stream().map(JsonObject.class::cast).map(GraphQuery::new).forEach(graphQueries::add); } Set<String> forbiddenHeaders = graphQueries.stream().flatMap(gq -> gq.headerMappings.keySet().stream()) .collect(toSet()); logger.info("Graph queries: " + graphQueries.stream().map(gq -> gq.graphQueryURI).collect(Collectors.joining(", "))); logger.info("Headers: " + forbiddenHeaders); HashMap<String, Pattern> requiredHeaderMatchers = new HashMap<>(); adAuth.getJsonObject("requiredHeaders", new JsonObject()).forEach(mapping -> requiredHeaderMatchers .put(mapping.getKey(), Pattern.compile(mapping.getValue().toString()))); RedirectTokenService redirectTokenService = new RedirectTokenService(sessionHandler.getCookieConverter()); Handler<RoutingContext> securityHandler = authHandler(adAuth, forbiddenHeaders, requiredHeaderMatchers, publicURI, virtualHost, sessionHandler, redirectUri, redirectTokenService); router.get(FORBIDDEN_PATH).handler(ctx -> errorWithLogoutLink(ctx, FORBIDDEN)); router.get(UNAUTHORIZED_PATH).handler(ctx -> errorWithLogoutLink(ctx, UNAUTHORIZED)); router.get(callbackPath).handler(validateAuthCallback(adAuth, httpClient, sessionHandler, graphQueries, redirectUri, redirectTokenService)); if (virtualHost) { router.options(PROXY_AUTH_REDIRECT_AFTER).handler(SetupAzureAdConnectAuth::optionsHandler); router.route(PROXY_AUTH_REDIRECT_AFTER).handler(ctx -> { // phase 3: executed when returning to virtual domain with cookie and original url inside token // -> jump to original locatin and set the cookie String token = ctx.request().getParam("t"); Map<String, String> params = redirectTokenService.getParameters(ctx, token); if (params == null) { ctx.reroute(GET, UNAUTHORIZED_PATH); logger.warn("phase3: Could not decrypt parameters from 't'"); return; } String originalUrl = params.get("u"); String originalHost = getUriHostName(originalUrl); String host = getUriHostName(ctx.request().host()); if (originalHost != null && originalHost.equals(host)) { ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, originalUrl) .putHeader(SET_COOKIE, params.get("c")).end(); } else { logger.warn("phase3: original host from cookie " + originalHost + " does not match request host " + host); ctx.reroute(GET, FORBIDDEN_PATH); } }); } router.route(path).handler(securityHandler); if (virtualHost) { router.options(PROXY_AUTH_REDIRECT_BEFORE).handler(SetupAzureAdConnectAuth::optionsHandler); router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(securityHandler); router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(ctx -> { // phase 2: executed when returning from authentication server with valid cookie // -> jump to original virtual host domain and pass the original url and auth cookie inside token String token = ctx.request().getParam("t"); Map<String, String> params = redirectTokenService.getParameters(ctx, token); if (params == null) { ctx.reroute(GET, UNAUTHORIZED_PATH); logger.warn("phase2: Could not decrypt parameters from 't'"); return; } String originalUrl = params.get("u"); String originalHost = getUriHostNamePort(originalUrl); if (originalUrl == null || !originalUrl.startsWith("https://")) { ctx.reroute(GET, FORBIDDEN_PATH); logger.warn( "phase2: original url from cookie " + originalUrl + " does not start with https://"); return; } Cookie cookie = sessionHandler.getAuthCookie(ctx.cookies()); params.put("c", cookie.encode()); String newToken = redirectTokenService.createToken(ctx, params); StringBuilder sb = new StringBuilder(); sb.append("https://").append(originalHost).append(PROXY_AUTH_REDIRECT_AFTER).append("?t=") .append(urlEncode(newToken)); ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, sb).end(); }); } }
From source file:io.nitor.api.backend.session.Encryptor.java
License:Apache License
private byte[] generateSecret(JsonArray secretGenerator) { try {/*from w w w . j a v a2 s. c o m*/ Process p = new ProcessBuilder() .command(secretGenerator.stream().map(Object::toString).collect(toList())) .redirectErrorStream(true).start(); byte[] inputData; try (InputStream in = p.getInputStream()) { inputData = toBytes(in); } p.destroy(); MessageDigest digest = MessageDigest.getInstance("SHA-512"); return digest.digest(inputData); } catch (IOException | NoSuchAlgorithmException e) { throw new RuntimeException("Failed to execute secret generator", e); } }
From source file:org.eclipse.hono.authorization.impl.InMemoryAuthorizationService.java
License:Open Source License
private Set<Permission> toSet(final JsonArray array) { return array.stream().filter(element -> element instanceof String).map(element -> (String) element) .map(Permission::valueOf).collect(Collectors.<Permission>toSet()); }
From source file:org.eclipse.hono.service.auth.device.AbstractDeviceCredentials.java
License:Open Source License
private boolean validate(final JsonArray secretsOnRecord) { return secretsOnRecord.stream().filter(obj -> obj instanceof JsonObject).anyMatch(obj -> { final JsonObject candidateSecret = (JsonObject) obj; return isInValidityPeriod(candidateSecret, Instant.now()) && matchesCredentials(candidateSecret); });/*from w ww .ja v a 2 s . co m*/ }
From source file:org.eclipse.hono.service.tenant.BaseTenantService.java
License:Open Source License
/** * Check the request payload for validity. * * @param payload The payload to check./*from w w w . j ava 2 s. c o m*/ * @return boolean The result of the check : {@link Boolean#TRUE} if the payload is valid, {@link Boolean#FALSE} otherwise. * @throws NullPointerException If the payload is {@code null}. */ private boolean isValidRequestPayload(final JsonObject payload) { final Object adaptersObj = payload.getValue(TenantConstants.FIELD_ADAPTERS); if (adaptersObj == null) { // all adapters enabled with default config return true; } else if (adaptersObj instanceof JsonArray) { final JsonArray adapters = (JsonArray) adaptersObj; if (adapters.size() == 0) { // if given, adapters config array must not be empty return false; } else { return !adapters.stream().anyMatch(obj -> { return !(obj instanceof JsonObject) || !((JsonObject) obj).containsKey(TenantConstants.FIELD_ADAPTERS_TYPE); }); } } else { // malformed payload return false; } }
From source file:org.eclipse.hono.util.TenantObject.java
License:Open Source License
/** * Sets the configuration information for this tenant's * configured adapters.//from w ww .j av a2s .c om * * @param configurations The configuration properties for this tenant's * configured adapters or {@code null} in order to * remove any existing configuration. * @return This tenant for command chaining. */ @JsonIgnore public TenantObject setAdapterConfigurations(final JsonArray configurations) { if (configurations == null) { this.adapterConfigurations = null; } else { this.adapterConfigurations = new HashMap<>(); configurations.stream().filter(obj -> JsonObject.class.isInstance(obj)).forEach(config -> { addAdapterConfiguration((JsonObject) config); }); } return this; }
From source file:org.entcore.common.share.impl.GenericShareService.java
License:Open Source License
protected void getNotifyMembers(Handler<Either<String, JsonObject>> handler, JsonArray oldShared, JsonArray members, Function<Object, String> f) { JsonArray notifyMembers;//w w w. jav a2 s . c o m if (oldShared != null && oldShared.size() > 0 && members != null && members.size() > 0) { final Set<String> oldMembersIds = oldShared.stream().map(f).collect(Collectors.toSet()); notifyMembers = new JsonArray(); for (Object o : members) { final JsonObject j = (JsonObject) o; final String memberId = getOrElse(j.getString("groupId"), j.getString("userId")); if (!oldMembersIds.contains(memberId)) { notifyMembers.add(j); } } } else { notifyMembers = members; } handler.handle(new Either.Right<>(new JsonObject().put("notify-timeline-array", notifyMembers))); }
From source file:org.entcore.directory.services.impl.UserbookRepositoryEvents.java
License:Open Source License
@Override public void deleteUsers(JsonArray users) { String query = "MATCH (u:UserBook)-[r]-(n) " + "WHERE (n:Hobby OR n:UserBook) AND NOT(u<--(:User)) " + "DETACH DELETE u, r, n"; StatementsBuilder b = new StatementsBuilder().add(query); query = "MATCH (p:UserAppConf) " + "WHERE NOT(p<--(:User)) " + "DETACH DELETE p"; b.add(query);// w ww .jav a 2s . co m b.add("MATCH (sb:ShareBookmark) WHERE NOT(sb<--(:User)) DELETE sb"); Neo4j.getInstance().executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if (!"ok".equals(event.body().getString("status"))) { log.error("Error deleting userbook data : " + event.body().encode()); } } }); List<String> userIds = users.stream().filter(u -> u instanceof JsonObject) .map(u -> ((JsonObject) u).getString("id")).collect(Collectors.toList()); userBookService.cleanAvatarCache(userIds, res -> { if (!res) { log.error("Error cleaning avatars for ids : " + StringUtils.join(userIds, " ")); } }); }
From source file:org.etourdot.vertx.marklogic.http.impl.response.BulkResponse.java
License:Open Source License
@Override public void process() { response.bodyHandler(buffer -> {/*from w w w . j a va 2 s.com*/ final JsonObject jsonResponse = buffer.toJsonObject(); if (jsonResponse.containsKey("documents")) { JsonArray docs = jsonResponse.getJsonArray("documents"); docs.stream().forEach(doc -> documents.add(Document.create((JsonObject) doc))); } this.endHandler.handle(this); }); }