/** * Adds multiple {@link Authorizer}s. */ public HttpAuthServiceBuilder add(Iterable<? extends Authorizer<HttpRequest>> authorizers) { requireNonNull(authorizers, "authorizers"); authorizers.forEach(a -> { requireNonNull(a, "authorizers contains null."); add(a); }); return this; }
/** * Adds a token-based {@link Authorizer}. */ public <T> HttpAuthServiceBuilder addTokenAuthorizer( Function<HttpHeaders, T> tokenExtractor, Authorizer<? super T> authorizer) { requireNonNull(tokenExtractor, "tokenExtractor"); requireNonNull(authorizer, "authorizer"); final Authorizer<HttpRequest> requestAuthorizer = (ctx, req) -> { final T token = tokenExtractor.apply(req.headers()); if (token == null) { return CompletableFuture.completedFuture(false); } return authorizer.authorize(ctx, token); }; add(requestAuthorizer); return this; }
/** * Creates a new HTTP authorization {@link Service} decorator using the specified * {@link Authorizer}s. * * @param authorizers a list of {@link Authorizer}s. */ public static Function<Service<HttpRequest, HttpResponse>, HttpAuthService> newDecorator( Iterable<? extends Authorizer<HttpRequest>> authorizers) { return new HttpAuthServiceBuilder().add(authorizers).newDecorator(); }
.newDecorator(mds) .andThen(new HttpAuthServiceBuilder() .add(new ApplicationTokenAuthorizer(mds::findTokenBySecret) .orElse(new SessionTokenAuthorizer(sessionManager, authCfg.administrators())))
.newDecorator(mds) .andThen(new HttpAuthServiceBuilder() .add(new ApplicationTokenAuthorizer(mds::findTokenBySecret) .orElse(new SessionTokenAuthorizer(sessionManager, authCfg.administrators())))