/** * Set an auth provider to use, any provider configured in options will override this provider. This should be used * when a custom auth provider should be used. * @param provider the auth to use * @return this object */ public io.vertx.rxjava.ext.shell.term.TermServer authProvider(io.vertx.rxjava.ext.auth.AuthProvider provider) { delegate.authProvider(provider.getDelegate()); return this; }
/** * Set an auth provider to use, any provider configured in options will override this provider. This should be used * when a custom auth provider should be used. * @param provider the auth to use * @return this object */ public io.vertx.rxjava.ext.shell.term.TermServer authProvider(io.vertx.rxjava.ext.auth.AuthProvider provider) { delegate.authProvider(provider.getDelegate()); return this; }
protected void startShell(SSHTermOptions options) throws ExecutionException, InterruptedException, TimeoutException { if (server != null) { throw new IllegalStateException(); } server = TermServer.createSSHTermServer(vertx, options); CompletableFuture<Void> fut = new CompletableFuture<>(); server.termHandler(termHandler); ((SSHServer)server).setExecHandler(execHandler); server.authProvider(authProvider); server.listen(ar -> { if (ar.succeeded()) { fut.complete(null); } else { fut.completeExceptionally(ar.cause()); } }); fut.get(10, TimeUnit.SECONDS); }
Async async = context.async(2); server = createServer(context, new HttpTermOptions().setPort(8080)); server.authProvider(authProvider); server.termHandler(term -> { context.assertEquals(1, count.get());
@Test public void testExternalAuthProviderFails(TestContext context) throws Exception { AtomicInteger count = new AtomicInteger(); AuthProvider authProvider = (authInfo, resultHandler) -> { count.incrementAndGet(); resultHandler.handle(Future.failedFuture("not authenticated")); }; Async async = context.async(); server = createServer(context, new HttpTermOptions().setPort(8080)); server.authProvider(authProvider); server.termHandler(term -> { context.fail(); }); server.listen(context.asyncAssertSuccess(server -> { HttpClient client = vertx.createHttpClient(); client.websocket(8080, "localhost", basePath + "/shell/websocket", new CaseInsensitiveHeaders().add("Authorization", "Basic " + Base64.getEncoder().encodeToString("paulo:anothersecret".getBytes())), ws -> { context.fail(); }, err -> { assertEquals(1, count.get()); async.complete(); }); })); }