@Override public void start() throws Exception { HttpServer server = vertx.createHttpServer(); server.requestStream().toFlowable().subscribe(req -> { HttpServerResponse resp = req.response(); String contentType = req.getHeader("Content-Type"); if (contentType != null) { resp.putHeader("Content-Type", contentType); } resp.setChunked(true); req.toFlowable().subscribe( resp::write, err -> {}, resp::end ); }); server.listen(8080); } }
String scheme = request.getHeader(HttpHeaders.X_FORWARDED_PROTO); if (scheme != null && !scheme.isEmpty()) { builder.scheme(scheme); String host = request.getHeader(HttpHeaders.X_FORWARDED_HOST); if (host != null && !host.isEmpty()) { handleHost(builder, host); String forwardedPath = request.getHeader(X_FORWARDED_PREFIX); if (forwardedPath != null && !forwardedPath.isEmpty()) {
String scheme = request.getHeader(HttpHeaders.X_FORWARDED_PROTO); if (scheme != null && !scheme.isEmpty()) { builder.scheme(scheme); String host = request.getHeader(HttpHeaders.X_FORWARDED_HOST); if (host != null && !host.isEmpty()) { handleHost(builder, host); String forwardedPath = request.getHeader(X_FORWARDED_PREFIX); if (forwardedPath != null && !forwardedPath.isEmpty()) {
protected Maybe<String> extractAccessTokenFromRequest(RoutingContext context) { //Extract first from Authorization Header final String authorization = context.request().getHeader(HttpHeaders.AUTHORIZATION); if(authorization!=null) { if(!authorization.trim().startsWith(AccessToken.BEARER_TYPE+" ")) { return Maybe.error(new InvalidRequestException("The access token must be sent using the Authorization header with as value \"Bearer xxxx\"")); } return Maybe.just(authorization.replaceFirst(AccessToken.BEARER_TYPE+" ","")); } //Extract from query parameter. final String accessToken = context.request().getParam(AccessToken.ACCESS_TOKEN); if(!Strings.isNullOrEmpty(accessToken)) { return Maybe.just(accessToken); } return Maybe.error(new InvalidRequestException("An access token is required")); } }
protected Maybe<String> extractAccessTokenFromRequest(RoutingContext context) { //Extract first from Authorization Header final String authorization = context.request().getHeader(HttpHeaders.AUTHORIZATION); if(authorization!=null) { if(!authorization.trim().startsWith(AccessToken.BEARER_TYPE+" ")) { return Maybe.error(new InvalidRequestException("The access token must be sent using the Authorization header with as value \"Bearer xxxx\"")); } return Maybe.just(authorization.replaceFirst(AccessToken.BEARER_TYPE+" ","")); } //Extract from query parameter. final String accessToken = context.request().getParam(AccessToken.ACCESS_TOKEN); if(!Strings.isNullOrEmpty(accessToken)) { return Maybe.just(accessToken); } return Maybe.error(new InvalidRequestException("An access token is required")); } }
@Override protected AuthProvider setupAuthenticationRoutes() { AppGlobals globals = AppGlobals.get(); AuthProvider auth = ShiroAuth.create(globals.getVertx(), new ShiroAuthOptions() .setType(ShiroAuthRealmType.PROPERTIES) .setConfig(new JsonObject() .put("properties_path", globals.getConfig().getString("security_definitions")))); globals.getRouter().route().handler(UserSessionHandler.create(auth)); JsonObject keyStoreOptions = new JsonObject().put("keyStore", globals.getConfig().getJsonObject("keystore")); // attempt to load a Key file JWTAuth jwtAuth = JWTAuth.create(globals.getVertx(), new JWTAuthOptions(keyStoreOptions)); JWTAuthHandler jwtAuthHandler = JWTAuthHandler.create(jwtAuth); globals.setGlobal(JWTAuth.class, jwtAuth); globals.getRouter().route().handler(context -> { // only filter if we have a header, otherwise it will try to force auth, regardless if whether // we want auth if(context.request().getHeader(HttpHeaders.AUTHORIZATION) != null) jwtAuthHandler.handle(context); else context.next(); }); return auth; }