diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/ClientDbFilter.java b/gms/src/main/java/it/inaf/ia2/gms/authn/ClientDbFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..578926ce9edcd5efb979699a7c8395ff02821e24
--- /dev/null
+++ b/gms/src/main/java/it/inaf/ia2/gms/authn/ClientDbFilter.java
@@ -0,0 +1,24 @@
+package it.inaf.ia2.gms.authn;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+public class ClientDbFilter implements Filter {
+
+    private static final String CLIENT_DB = "client_db";
+
+    @Override
+    public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc) throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest) req;
+        String clientDb = request.getParameter(CLIENT_DB);
+        if (clientDb != null) {
+            request.getSession().setAttribute(CLIENT_DB, clientDb);
+        }
+        fc.doFilter(req, res);
+    }
+}
diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/CustomIdTokenConverter.java b/gms/src/main/java/it/inaf/ia2/gms/authn/CustomIdTokenConverter.java
index ee5d1e5436631efebcd672b3bcd8691b8a8ad078..96f262cd7b25ffa43f106045f18339a728b579ca 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/authn/CustomIdTokenConverter.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/authn/CustomIdTokenConverter.java
@@ -26,6 +26,11 @@ public class CustomIdTokenConverter extends DefaultUserAuthenticationConverter {
         String idTokenString = (String) map.get("id_token");
         String accessTokenString = (String) map.get("access_token");
 
+        // Needed for Franco's version: access_token is equal to id_token
+        if (accessTokenString == null) {
+            accessTokenString = idTokenString;
+        }
+
         OAuth2AccessToken token = jwkTokenStore.readAccessToken(idTokenString);
         OAuth2AccessToken accessToken = jwkTokenStore.readAccessToken(accessTokenString);
         String refreshToken = (String) map.get("refresh_token");
diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java b/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java
index aa1dd23e3beed7d5682d5b11b9d07c8317fa6471..ca50bb835e0d57ad9611bbea34e09d36d71f7f54 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java
@@ -75,6 +75,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
         web.ignoring().antMatchers("/ws/jwt/**", "/error", "/logout", "/invited-registration", "/help/**");
     }
 
+    @Bean
+    public FilterRegistrationBean clientDbFilter() {
+        FilterRegistrationBean bean = new FilterRegistrationBean();
+        bean.setFilter(new ClientDbFilter());
+        bean.addUrlPatterns("/*");
+        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
+        return bean;
+    }
+
     /**
      * Checks JWT for web services.
      */
diff --git a/gms/src/main/java/it/inaf/ia2/gms/rap/RapClient.java b/gms/src/main/java/it/inaf/ia2/gms/rap/RapClient.java
index 5d8b2bde72af492fdd3886076d83182e95ce48aa..1b3d79268d8f85acf19a410169fa31170b2440c5 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/rap/RapClient.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/rap/RapClient.java
@@ -9,6 +9,10 @@ import java.util.Map;
 import java.util.Set;
 import java.util.function.Function;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import org.apache.commons.codec.binary.Base64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.ParameterizedTypeReference;
@@ -26,6 +30,8 @@ import org.springframework.web.client.RestTemplate;
 @Component
 public class RapClient {
 
+    private static final Logger LOG = LoggerFactory.getLogger(RapClient.class);
+
     @Value("${rap.ws-url}")
     private String rapBaseUrl;
 
@@ -41,6 +47,11 @@ public class RapClient {
     @Value("${security.oauth2.client.scope}")
     private String scope;
 
+    /* Use basic auth instead of JWT when asking for users 
+     * Needed for Franco's version. */
+    @Value("${rap.ws.basic-auth}")
+    private boolean basicAuth;
+
     @Autowired
     private HttpServletRequest request;
 
@@ -116,7 +127,21 @@ public class RapClient {
 
         HttpHeaders headers = new HttpHeaders();
         headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
-        if (request.getSession(false) != null) {
+
+        if (basicAuth) { // Franco's version
+            String auth = clientId + ":" + clientSecret;
+            String encodedAuth = Base64.encodeBase64String(auth.getBytes());
+            headers.add("Authorization", "Basic " + encodedAuth);
+
+            HttpSession session = request.getSession(false);
+            if (session != null) {
+                String clientDb = (String) session.getAttribute("client_db");
+                if (clientDb != null) {
+                    headers.add("client_db", clientDb);
+                    LOG.debug("client_db=" + clientDb);
+                }
+            }
+        } else if (request.getSession(false) != null) {
             headers.add("Authorization", "Bearer " + sessionData.getAccessToken());
         } else {
             // from JWT web service
diff --git a/gms/src/main/resources/application.properties b/gms/src/main/resources/application.properties
index b096d0556af21413fe6a10d3b3833e5a8f92ef9d..c0b7369f43be795450a44cf3ed950037b589cf52 100644
--- a/gms/src/main/resources/application.properties
+++ b/gms/src/main/resources/application.properties
@@ -6,25 +6,26 @@ server.error.whitelabel.enabled=false
 
 security.oauth2.client.client-id=gms
 security.oauth2.client.client-secret=gms-secret
-security.oauth2.client.access-token-uri=http://localhost/rap-ia2/auth/oauth2/token
-security.oauth2.client.user-authorization-uri=http://localhost/rap-ia2/auth/oauth2/authorize
-security.oauth2.resource.token-info-uri=http://localhost/rap-ia2/auth/oauth2/check_token
-security.oauth2.client.scope=openid,email,profile,read:rap
-security.oauth2.resource.jwk.key-set-uri=http://localhost/rap-ia2/auth/oidc/jwks
+security.oauth2.client.access-token-uri=http://localhost/franco/fake-rap/token.php
+security.oauth2.client.user-authorization-uri=http://localhost/franco/fake-rap/index.php
+security.oauth2.resource.token-info-uri=http://localhost/franco/fake-rap/check-token.php
+security.oauth2.client.scope=openid,email,profile
+security.oauth2.resource.jwk.key-set-uri=http://localhost/franco/fake-rap/jwks.php
 
 logging.level.it.inaf=TRACE
 logging.level.org.springframework.security=DEBUG
 logging.level.org.springframework.jdbc=TRACE
 logging.level.org.springframework.web=TRACE
 
-spring.datasource.url=jdbc:postgresql://localhost:5432/gms2
+spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/postgres
 spring.datasource.username=gms
 spring.datasource.password=gms
 
-rap.ws-url=http://localhost/rap-ia2/ws
+rap.ws-url=http://localhost/franco/fake-rap/get-users.php
+rap.ws.basic-auth=true
 support.contact.label=IA2 team
 support.contact.email=ia2@inaf.it
 
 # For development only:
 spring.profiles.active=dev
-cors.allowed.origin=http://localhost:8080
+cors.allowed.origin=http://localhost