/** * 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(); }
/** * Adds an OAuth1a {@link Authorizer}. */ public HttpAuthServiceBuilder addOAuth1a(Authorizer<? super OAuth1aToken> authorizer) { return addTokenAuthorizer(AuthTokenExtractors.OAUTH1A, requireNonNull(authorizer, "authorizer")); }
/** * 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; }
/** * Returns a newly-created {@link HttpAuthService} based on the {@link Authorizer}s added to this builder. */ public HttpAuthService build(Service<HttpRequest, HttpResponse> delegate) { return new HttpAuthService(requireNonNull(delegate, "delegate"), authorizer(), successHandler, failureHandler); }
/** * 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; }
/** * Returns a newly-created decorator that decorates a {@link Service} with a new {@link HttpAuthService} * based on the {@link Authorizer}s added to this builder. */ public Function<Service<HttpRequest, HttpResponse>, HttpAuthService> newDecorator() { final Authorizer<HttpRequest> authorizer = authorizer(); final AuthSuccessHandler<HttpRequest, HttpResponse> successHandler = this.successHandler; final AuthFailureHandler<HttpRequest, HttpResponse> failureHandler = this.failureHandler; return service -> new HttpAuthService(service, authorizer, successHandler, failureHandler); }
decorator = MetadataServiceInjector .newDecorator(mds) .andThen(new HttpAuthServiceBuilder() .add(new ApplicationTokenAuthorizer(mds::findTokenBySecret) .orElse(new SessionTokenAuthorizer(sessionManager, authCfg.administrators()))) .newDecorator()); } else { decorator = MetadataServiceInjector
/** * Adds an HTTP basic {@link Authorizer}. */ public HttpAuthServiceBuilder addBasicAuth(Authorizer<? super BasicToken> authorizer) { return addTokenAuthorizer(AuthTokenExtractors.BASIC, requireNonNull(authorizer, "authorizer")); }
decorator = MetadataServiceInjector .newDecorator(mds) .andThen(new HttpAuthServiceBuilder() .add(new ApplicationTokenAuthorizer(mds::findTokenBySecret) .orElse(new SessionTokenAuthorizer(sessionManager, authCfg.administrators()))) .newDecorator()); } else { decorator = MetadataServiceInjector
/** * Adds an OAuth2 {@link Authorizer}. */ public HttpAuthServiceBuilder addOAuth2(Authorizer<? super OAuth2Token> authorizer) { return addTokenAuthorizer(AuthTokenExtractors.OAUTH2, requireNonNull(authorizer, "authorizer")); }
/** * Adds an OAuth2 {@link Authorizer} for the given {@code header}. */ public HttpAuthServiceBuilder addOAuth2(Authorizer<? super OAuth2Token> authorizer, AsciiString header) { return addTokenAuthorizer(new OAuth2TokenExtractor(requireNonNull(header, "header")), requireNonNull(authorizer, "authorizer")); }
/** * Adds an HTTP basic {@link Authorizer} for the given {@code header}. */ public HttpAuthServiceBuilder addBasicAuth(Authorizer<? super BasicToken> authorizer, AsciiString header) { return addTokenAuthorizer(new BasicTokenExtractor(requireNonNull(header, "header")), requireNonNull(authorizer, "authorizer")); }
/** * Adds an OAuth1a {@link Authorizer} for the given {@code header}. */ public HttpAuthServiceBuilder addOAuth1a(Authorizer<? super OAuth1aToken> authorizer, AsciiString header) { return addTokenAuthorizer(new OAuth1aTokenExtractor(requireNonNull(header, "header")), requireNonNull(authorizer, "authorizer")); }