@Override
protected AuthProvider setupAuthenticationRoutes() {
JsonObject keycloackConfig = AppGlobals.get().getConfig().getJsonObject("keycloack");
OAuth2Auth authWeb = KeycloakAuth.create(AppGlobals.get().getVertx(), keycloackConfig);
OAuth2Auth authApi = KeycloakAuth.create(AppGlobals.get().getVertx(), OAuth2FlowType.PASSWORD, keycloackConfig);
OAuth2AuthHandler authHandler = OAuth2AuthHandler.create((OAuth2Auth) authWeb, "http://localhost:9000/callback");
Router router = AppGlobals.get().getRouter();
AuthProvider authProvider = AuthProvider.newInstance(authWeb.getDelegate());
router.route().handler(UserSessionHandler.create(authProvider));
authHandler.setupCallback(router.get("/callback"));
JWTAuth jwtAuth = JWTAuth.create(AppGlobals.get().getVertx(), new JWTAuthOptions(new JsonObject()
.put("keyStore", AppGlobals.get().getConfig().getJsonObject("keystore"))));
AppGlobals.get().setGlobal(JWTAuth.class, jwtAuth);
JWTAuthHandler jwtAuthHandler = JWTAuthHandler.create(jwtAuth, "/wiki/api/token");
router.route().handler(ctx -> {
if(!ctx.request().uri().startsWith("/wiki/api/"))
authHandler.handle(ctx);
else
jwtAuthHandler.handle(ctx);
});
return AuthProvider.newInstance(authApi.getDelegate());
}