List of usage examples for io.vertx.core.json JsonObject getString
public String getString(String key)
From source file:org.eclipse.hono.service.auth.impl.FileBasedAuthenticationService.java
License:Open Source License
@Override public void verifyPlain(final String authzid, final String username, final String password, Handler<AsyncResult<HonoUser>> authenticationResultHandler) { if (username == null || username.isEmpty()) { authenticationResultHandler.handle(Future.failedFuture("missing username")); } else if (password == null || password.isEmpty()) { authenticationResultHandler.handle(Future.failedFuture("missing password")); } else {//from ww w . ja v a 2 s .c o m JsonObject user = getUser(username, AuthenticationConstants.MECHANISM_PLAIN); if (user == null) { log.debug("no such user [{}]", username); authenticationResultHandler.handle(Future.failedFuture("unauthorized")); } else if (password.equals(user.getString("password"))) { verify(username, user, authzid, authenticationResultHandler); } else { log.debug("password mismatch"); authenticationResultHandler.handle(Future.failedFuture("unauthorized")); } } }
From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java
License:Open Source License
/** * Processes a credentials request message received via the Vertx event bus. * /*w w w .j av a2 s . co m*/ * @param regMsg The message. */ public final void processCredentialsMessage(final Message<JsonObject> regMsg) { final JsonObject body = regMsg.body(); if (body == null) { log.debug("credentials request did not contain body - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return; } final String tenantId = body.getString(RequestResponseApiConstants.FIELD_TENANT_ID); final String subject = body.getString(MessageHelper.SYS_PROPERTY_SUBJECT); final JsonObject payload = getRequestPayload(body); if (tenantId == null) { log.debug("credentials request did not contain tenantId - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return; } else if (subject == null) { log.debug("credentials request did not contain subject - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return; } else if (payload == null) { log.debug( "credentials request contained invalid or no payload at all (expected json format) - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return; } switch (subject) { case OPERATION_GET: processCredentialsMessageGetOperation(regMsg, tenantId, payload); break; case OPERATION_ADD: processCredentialsMessageAddOperation(regMsg, tenantId, payload); break; case OPERATION_UPDATE: processCredentialsMessageUpdateOperation(regMsg, tenantId, payload); break; case OPERATION_REMOVE: processCredentialsMessageRemoveOperation(regMsg, tenantId, payload); break; default: log.debug("operation [{}] not supported", subject); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); } }
From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java
License:Open Source License
private void processCredentialsMessageGetOperation(final Message<JsonObject> regMsg, final String tenantId, final JsonObject payload) { final String type = payload.getString(FIELD_TYPE); if (type == null) { log.debug("credentials get request did not contain type in payload - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return;//from ww w. jav a2 s . com } final String authId = payload.getString(FIELD_AUTH_ID); if (authId == null) { log.debug("credentials get request did not contain authId in payload - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return; } log.debug("getting credentials [{}:{}] of tenant [{}]", type, authId, tenantId); getCredentials(tenantId, type, authId, result -> reply(regMsg, result)); }
From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java
License:Open Source License
private void processCredentialsMessageRemoveOperation(final Message<JsonObject> regMsg, final String tenantId, final JsonObject payload) { final String deviceId = payload.getString(FIELD_DEVICE_ID); if (deviceId == null) { log.debug("credentials remove request did not contain device-id in payload - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return;//from w w w. j a v a2s . c o m } final String type = payload.getString(FIELD_TYPE); if (type == null) { log.debug("credentials remove request did not contain type in payload - not supported"); reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null)); return; } final String authId = payload.getString(FIELD_AUTH_ID); removeCredentials(tenantId, deviceId, type, authId, result -> reply(regMsg, result)); }
From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java
License:Open Source License
/** * Sends a response to a credentials request over the Vertx event bus. * /*ww w .j a v a 2 s .com*/ * @param request The message to respond to. * @param result The credentials result that should be conveyed in the response. */ protected final void reply(final Message<JsonObject> request, final CredentialsResult<JsonObject> result) { final JsonObject body = request.body(); final String tenantId = body.getString(RequestResponseApiConstants.FIELD_TENANT_ID); final String deviceId = body.getString(RequestResponseApiConstants.FIELD_DEVICE_ID); request.reply(CredentialsConstants.getServiceReplyAsJson(tenantId, deviceId, result)); }
From source file:org.eclipse.hono.service.credentials.CredentialsHttpEndpoint.java
License:Open Source License
private void addCredentials(final RoutingContext ctx) { final JsonObject payload = (JsonObject) ctx.get(KEY_REQUEST_BODY); final String deviceId = payload.getString(CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID); final String authId = payload.getString(CredentialsConstants.FIELD_AUTH_ID); final String type = payload.getString(CredentialsConstants.FIELD_TYPE); final String tenantId = getTenantParam(ctx); logger.debug("adding credentials [tenant: {}, device-id: {}, auth-id: {}, type: {}]", tenantId, deviceId, authId, type);// ww w. j ava 2 s . c om final JsonObject requestMsg = EventBusMessage .forOperation(CredentialsConstants.CredentialsAction.add.toString()).setTenant(tenantId) .setDeviceId(deviceId).setJsonPayload(payload).toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx, status -> status == HttpURLConnection.HTTP_CREATED, httpServerResponse -> httpServerResponse.putHeader(HttpHeaders.LOCATION, String.format("/%s/%s/%s/%s", CredentialsConstants.CREDENTIALS_ENDPOINT, tenantId, authId, type)))); }
From source file:org.eclipse.hono.service.credentials.CredentialsHttpEndpoint.java
License:Open Source License
private void updateCredentials(final RoutingContext ctx) { final JsonObject payload = (JsonObject) ctx.get(KEY_REQUEST_BODY); final String deviceId = payload.getString(CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID); final String authId = payload.getString(CredentialsConstants.FIELD_AUTH_ID); final String type = payload.getString(CredentialsConstants.FIELD_TYPE); final String tenantId = getTenantParam(ctx); final String authIdFromUri = getAuthIdParam(ctx); final String typeFromUri = getTypeParam(ctx); // auth-id and type from URI must match payload if (!authIdFromUri.equals(authId)) { ctx.response().setStatusMessage("Non-matching authentication identifier"); ctx.fail(HttpURLConnection.HTTP_BAD_REQUEST); } else if (!typeFromUri.equals(type)) { ctx.response().setStatusMessage("Non-matching credentials type"); ctx.fail(HttpURLConnection.HTTP_BAD_REQUEST); } else {/*from w w w . ja v a 2 s . c o m*/ logger.debug("updating credentials [tenant: {}, device-id: {}, auth-id: {}, type: {}]", tenantId, deviceId, authId, type); final JsonObject requestMsg = EventBusMessage .forOperation(CredentialsConstants.CredentialsAction.update.toString()).setTenant(tenantId) .setDeviceId(deviceId).setJsonPayload(payload).toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx)); } }
From source file:org.eclipse.hono.service.credentials.impl.FileBasedCredentialsService.java
License:Open Source License
protected void loadCredentialsData() { if (filename != null) { final FileSystem fs = vertx.fileSystem(); log.debug("trying to load credentials information from file {}", filename); if (fs.existsBlocking(filename)) { final AtomicInteger credentialsCount = new AtomicInteger(); fs.readFile(filename, readAttempt -> { if (readAttempt.succeeded()) { JsonArray allObjects = new JsonArray(new String(readAttempt.result().getBytes())); for (Object obj : allObjects) { JsonObject tenant = (JsonObject) obj; String tenantId = tenant.getString(FIELD_TENANT); Map<String, JsonArray> credentialsMap = new HashMap<>(); for (Object credentialsObj : tenant.getJsonArray(ARRAY_CREDENTIALS)) { JsonObject credentials = (JsonObject) credentialsObj; JsonArray authIdCredentials; if (credentialsMap.containsKey(credentials.getString(FIELD_AUTH_ID))) { authIdCredentials = credentialsMap.get(credentials.getString(FIELD_AUTH_ID)); } else { authIdCredentials = new JsonArray(); }//from w w w. ja v a2s. c o m authIdCredentials.add(credentials); credentialsMap.put(credentials.getString(FIELD_AUTH_ID), authIdCredentials); credentialsCount.incrementAndGet(); } credentials.put(tenantId, credentialsMap); } log.info("successfully loaded {} credentials from file [{}]", credentialsCount.get(), filename); } else { log.warn("could not load credentials from file [{}]", filename, readAttempt.cause()); } }); } else { log.debug("credentials file {} does not exist (yet)", filename); } } }
From source file:org.eclipse.hono.service.credentials.impl.FileBasedCredentialsService.java
License:Open Source License
protected CredentialsResult getCredentialsResult(final String tenantId, final String authId, final String type) { JsonObject data = getCredentials(tenantId, authId, type); if (data != null) { JsonObject resultPayload = getResultPayload(data.getString(FIELD_DEVICE_ID), data.getString(FIELD_TYPE), data.getString(FIELD_AUTH_ID), data.getBoolean(FIELD_ENABLED), data.getJsonArray(FIELD_SECRETS)); return CredentialsResult.from(HTTP_OK, resultPayload); } else {// w w w . ja v a 2s. c om return CredentialsResult.from(HTTP_NOT_FOUND); } }
From source file:org.eclipse.hono.service.credentials.impl.FileBasedCredentialsService.java
License:Open Source License
private JsonObject getCredentials(final String tenantId, final String authId, final String type) { Objects.nonNull(tenantId);/*w w w . j a va 2s. c om*/ Objects.nonNull(authId); Objects.nonNull(type); final Map<String, JsonArray> credentialsForTenant = credentials.get(tenantId); if (credentialsForTenant != null) { JsonArray authIdCredentials = credentialsForTenant.get(authId); if (authIdCredentials == null) { return null; } for (Object authIdCredentialEntry : authIdCredentials) { JsonObject authIdCredential = (JsonObject) authIdCredentialEntry; // return the first matching type entry for this authId if (type.equals(authIdCredential.getString(FIELD_TYPE))) { return authIdCredential; } } } return null; }