enhancement on fixing GN authentication

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@179499 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2019-05-21 16:37:27 +00:00
parent 8f7dbc486e
commit e44a57bb4e
1 changed files with 46 additions and 8 deletions

View File

@ -171,17 +171,55 @@ public class GeonetworkResolver {
try {
GeonetworkAccessParameter gntwAccess = new GeonetworkAccessParameter(scope);
//GeonetworkInstance gnInstance = gntwAccess.getGeonetworkInstance(true, null,null);
GeonetworkInstance gnInstance = getGeonetworkInstanceForScope(scope, null, null);
GeonetworkInstance gnInstance = getGeonetworkInstanceForScope(scope);
logger.info("set scope provider "+scope);
ScopeProvider.instance.set(scope);
Account account = gnInstance.getAccount();
Version version = gnInstance.getVersion();
String geonetworkUrl = gnInstance.getEndPoint();
Configuration config = gnInstance.getConfig()!=null?gnInstance.getConfig():null;
if(account==null || account.getUser()==null || account.getPassword()==null || config==null) {
logger.info("Loading GN istance and configurations via Geonetwork Library...");
logger.info("set scope provider "+scope);
ScopeProvider.instance.set(scope);
config = gnInstance.getGeonetworkPublisher().getConfiguration();
account = config.getScopeConfiguration().getAccounts().get(Type.CKAN);
version = config.getGeoNetworkVersion();
geonetworkUrl = config.getGeoNetworkEndpoint();
}
logger.info("set scope provider "+scope);
ScopeProvider.instance.set(scope);
logger.info("SCOPE: {}, CKAN user used is: {}",scope, account.getUser(), account.getPassword());
logger.info("SCOPE: {}, GN EndPoint: {}",scope, geonetworkUrl);
// GeonetworkInstance gnInstance = getGeonetworkInstanceForScope(scope);
// ScopeProvider.instance.set(scope);
HTTPCallsUtils httpUtils = new HTTPCallsUtils();
if(visibility.equals(VISIBILITY.PRV.name())){
if(account.getUser()!=null){
switch (version) {
case DUE:
boolean authorized = GNAuthentication.login(httpUtils, geonetworkUrl, account.getUser(), account.getPassword());
logger.info("Authorized on GN2 "+geonetworkUrl +" ? "+authorized);
break;
default:
httpUtils = new HTTPCallsUtils(account.getUser(), account.getPassword());
logger.info("Authorized on GN3 via HTTCallsUtils...");
break;
}
}else {
logger.warn("I'm not able to perform authentication, the user read from config with "+Type.CKAN+" is null");
}
}
//Configuration config = gnInstance.getGeonetworkPublisher().getConfiguration();
//String geonetworkUrl = config.getGeoNetworkEndpoint();
String geonetworkUrl = gnInstance.getEndPoint();
// String geonetworkUrl = gnInstance.getEndPoint();
String baseURL = remainPath==null ||remainPath.isEmpty()?geonetworkUrl+"/"+CSW_SERVER:geonetworkUrl+"/"+CSW_SERVER+remainPath;
logger.info("The base URL is: "+baseURL);
String queryString = req.getQueryString()==null || req.getQueryString().isEmpty()?"":"?"+req.getQueryString();
@ -418,9 +456,9 @@ public class GeonetworkResolver {
//I'M LOADING THE GN CONFIGURATIONS (ENDPOINT, USER, PWD AND SO ON..) FROM GN LIBRARY BY GENERAL CONSTRUCTOR THAT PERFORMS AUTHENTICATION ON GN,
//THEN THE CONGIGURATIONS LAODED, USER TO PERFORM AUTHENTICATION AND SO ON ARE MANAGE VIA HTTP_CLIENTS.
GeonetworkInstance gnInstance = getGeonetworkInstanceForScope(scope);
logger.info("set scope provider "+scope);
ScopeProvider.instance.set(scope);
GeonetworkInstance gnInstance = getGeonetworkInstanceForScope(scope, GeonetworkLoginLevel.CKAN, AccountType.CKAN);
Account account = gnInstance.getAccount();
Version version = gnInstance.getVersion();
String geonetworkUrl = gnInstance.getEndPoint();
@ -635,7 +673,7 @@ public class GeonetworkResolver {
* @return the geonetwork instance for scope
* @throws Exception the exception
*/
protected GeonetworkInstance getGeonetworkInstanceForScope(String scope, GeonetworkLoginLevel loginLevel, AccountType accountType) throws Exception{
protected GeonetworkInstance getGeonetworkInstanceForScope(String scope) throws Exception{
logger.info("Trying to read the {} from cache for scope: {}",GeonetworkInstance.class.getSimpleName(), scope);
GeonetworkInstance geoInstance;