X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Faaf%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Faaf%2FTestConnectivity.java;h=0b1238ab2807f9dc97ae5b282a73e6d80cb5a52d;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=101fd6077a2740adc6de6d8e688e6438bba47d6d;hpb=a20accc73189d8e5454cd26049c0e6fae75da16f;p=aaf%2Fauthz.git diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/TestConnectivity.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/TestConnectivity.java index 101fd607..0b1238ab 100644 --- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/TestConnectivity.java +++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/TestConnectivity.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -30,274 +30,284 @@ import java.net.URI; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import org.onap.aaf.cadi.Access.Level; import org.onap.aaf.cadi.CadiException; import org.onap.aaf.cadi.Locator; +import org.onap.aaf.cadi.Locator.Item; import org.onap.aaf.cadi.LocatorException; import org.onap.aaf.cadi.PropAccess; import org.onap.aaf.cadi.SecuritySetter; -import org.onap.aaf.cadi.Access.Level; -import org.onap.aaf.cadi.Locator.Item; import org.onap.aaf.cadi.aaf.v2_0.AAFLocator; import org.onap.aaf.cadi.client.Future; import org.onap.aaf.cadi.config.Config; import org.onap.aaf.cadi.config.SecurityInfoC; +import org.onap.aaf.cadi.configure.Agent; import org.onap.aaf.cadi.http.HBasicAuthSS; import org.onap.aaf.cadi.http.HClient; import org.onap.aaf.cadi.http.HX509SS; +import org.onap.aaf.cadi.locator.SingleEndpointLocator; import org.onap.aaf.cadi.oauth.HRenewingTokenSS; +import org.onap.aaf.cadi.util.FixURIinfo; import org.onap.aaf.misc.env.APIException; public class TestConnectivity { - - public static void main(String[] args) { - if(args.length<1) { - System.out.println("Usage: ConnectivityTester []"); - } else { - print(true,"START OF CONNECTIVITY TESTS",new Date().toString(),System.getProperty("user.name"), - "Note: All API Calls are /authz/perms/user/"); - - if(!args[0].contains(Config.CADI_PROP_FILES+'=')) { - args[0]=Config.CADI_PROP_FILES+'='+args[0]; - } - - PropAccess access = new PropAccess(args); - String aaflocate; - if(args.length>1) { - aaflocate = "https://" + args[1] + "/locate"; - access.setProperty(Config.AAF_LOCATE_URL, "https://" + args[1]); - } else { - aaflocate = access.getProperty(Config.AAF_LOCATE_URL); - if(aaflocate==null) { - print(true,"Properties must contain ",Config.AAF_LOCATE_URL); - } - } - - try { - SecurityInfoC si = SecurityInfoC.instance(access, HttpURLConnection.class); - - List> lss = loadSetters(access,si); - ///////// - print(true,"Test Connections driven by AAFLocator"); - URI serviceURI = new URI(aaflocate+"/AAF_NS.service/2.0"); - - for(URI uri : new URI[] { - serviceURI, - new URI(aaflocate+"/AAF_NS.service:2.0"), - new URI(aaflocate+"/AAF_NS.service"), - new URI(aaflocate+"/AAF_NS.gw:2.0"), - new URI(aaflocate+"/AAF_NS.token:2.0"), - new URI(aaflocate+"/AAF_NS.certman:2.0"), - new URI(aaflocate+"/AAF_NS.hello") - }) { - Locator locator = new AAFLocator(si, uri); - try { - connectTest(locator, uri); - } catch (Exception e) { - e.printStackTrace(); - System.err.flush(); - } - } - - ///////// - print(true,"Test Service driven by AAFLocator"); - Locator locator = new AAFLocator(si,new URI(aaflocate+"/AAF_NS.service:2.0")); - for(SecuritySetter ss : lss) { - permTest(locator,ss); - } - - ///////// - print(true,"Test Proxy Access driven by AAFLocator"); - locator = new AAFLocator(si, new URI(aaflocate+"/AAF_NS.gw:2.0/proxy")); - for(SecuritySetter ss : lss) { - permTest(locator,ss); - } - - ////////// - print(true,"Test essential BasicAuth Service call, driven by AAFLocator"); - for(SecuritySetter ss : lss) { - if(ss instanceof HBasicAuthSS) { - basicAuthTest(new AAFLocator(si, new URI(aaflocate+"/AAF_NS.service:2.0")),ss); - } - } - - } catch(Exception e) { - e.printStackTrace(System.err); - } finally { - print(true,"END OF TESTS"); - } - } - } - - private static List> loadSetters(PropAccess access, SecurityInfoC si) { - print(true,"Load Security Setters from Configuration Information"); - String user = access.getProperty(Config.AAF_APPID); - - ArrayList> lss = new ArrayList>(); - - - try { - HBasicAuthSS hbass = new HBasicAuthSS(si,true); - if(hbass==null || hbass.getID()==null) { - access.log(Level.INFO, "BasicAuth Information is not available in configuration, BasicAuth tests will not be conducted... Continuing"); - } else { - access.log(Level.INFO, "BasicAuth Information found with ID",hbass.getID(),". BasicAuth tests will be performed."); - lss.add(hbass); - } - } catch (Exception e) { - access.log(Level.INFO, "BasicAuth Security Setter constructor threw exception: \"",e.getMessage(),"\". BasicAuth tests will not be performed"); - } - - try { - HX509SS hxss = new HX509SS(user,si); - if(hxss==null || hxss.getID()==null) { - access.log(Level.INFO, "X509 (Client certificate) Information is not available in configuration, X509 tests will not be conducted... Continuing"); - } else { - access.log(Level.INFO, "X509 (Client certificate) Information found with ID",hxss.getID(),". X509 tests will be performed."); - lss.add(hxss); - } - } catch (Exception e) { - access.log(Level.INFO, "X509 (Client certificate) Security Setter constructor threw exception: \"",e.getMessage(),"\". X509 tests will not be performed"); - } - - String tokenURL = access.getProperty(Config.AAF_OAUTH2_TOKEN_URL); - String locateURL=access.getProperty(Config.AAF_LOCATE_URL); - if(tokenURL==null || (tokenURL.contains("/locate/") && locateURL!=null)) { - tokenURL=locateURL+"/locate/AAF_NS.token:2.0/token"; - } - - try { - HRenewingTokenSS hrtss = new HRenewingTokenSS(access, tokenURL); - access.log(Level.INFO, "AAF OAUTH2 Information found with ID",hrtss.getID(),". AAF OAUTH2 tests will be performed."); - lss.add(hrtss); - } catch (Exception e) { - access.log(Level.INFO, "AAF OAUTH2 Security Setter constructor threw exception: \"",e.getMessage(),"\". AAF OAUTH2 tests will not be conducted... Continuing"); - } - - tokenURL = access.getProperty(Config.AAF_ALT_OAUTH2_TOKEN_URL); - if(tokenURL==null) { - access.log(Level.INFO, "AAF Alternative OAUTH2 requires",Config.AAF_ALT_OAUTH2_TOKEN_URL, "OAuth2 tests to", tokenURL, "will not be conducted... Continuing"); - } else { - try { - HRenewingTokenSS hrtss = new HRenewingTokenSS(access, tokenURL); - access.log(Level.INFO, "ALT OAUTH2 Information found with ID",hrtss.getID(),". ALT OAUTH2 tests will be performed."); - lss.add(hrtss); - } catch (Exception e) { - access.log(Level.INFO, "ALT OAUTH2 Security Setter constructor threw exception: \"",e.getMessage(),"\". ALT OAuth2 tests to", tokenURL, " will not be conducted... Continuing"); - } - } - - return lss; - } - - private static void print(Boolean strong, String ... args) { - PrintStream out = System.out; - out.println(); - if(strong) { - for(int i=0;i<70;++i) { - out.print('='); - } - out.println(); - } - for(String s : args) { - out.print(strong?"== ":"------ "); - out.print(s); - if(!strong) { - out.print(" ------"); - } - out.println(); - } - if(strong) { - for(int i=0;i<70;++i) { - out.print('='); - } - } - out.println(); - } - - private static void connectTest(Locator dl, URI locatorURI) throws LocatorException { - URI uri; - Socket socket; - print(false,"TCP/IP Connect test to all Located Services for " + locatorURI.toString() ); - for(Item li = dl.first();li!=null;li=dl.next(li)) { - if((uri = dl.get(li)) == null) { - System.out.println("Locator Item empty"); - } else { - try { - socket = new Socket(); - socket.connect(new InetSocketAddress(uri.getHost(), uri.getPort()),3000); - System.out.printf("Can Connect a Socket to %s %d\n",uri.getHost(),uri.getPort()); - try { - socket.close(); - } catch (IOException e1) { - System.out.printf("Could not close Socket Connection: %s\n",e1.getMessage()); - } - } catch (IOException e) { - System.out.printf("Cannot Connect a Socket to %s %d: %s\n",uri.getHost(),uri.getPort(),e.getMessage()); - } - } - } - } - - private static void permTest(Locator dl, SecuritySetter ss) { - try { - URI uri = dl.get(dl.best()); - if(uri==null) { - System.out.print("No URI available using " + ss.getClass().getSimpleName()); - System.out.println(); - return; - } else { - System.out.print("Resolved to: " + uri + " using " + ss.getClass().getSimpleName()); - } - if(ss instanceof HRenewingTokenSS) { - System.out.println(" " + ((HRenewingTokenSS)ss).tokenURL()); - } else { - System.out.println(); - } - HClient client = new HClient(ss, uri, 3000); - client.setMethod("GET"); - String user = ss.getID(); - if(user.indexOf('@')<0) { - user+="@isam.att.com"; - } - client.setPathInfo("/authz/perms/user/"+user); - client.send(); - Future future = client.futureReadString(); - if(future.get(7000)) { - System.out.println(future.body()); - } else { - if(future.code()==401 && ss instanceof HX509SS) { - System.out.println(" Authentication denied with 401 for Certificate.\n\t" - + "This means Certificate isn't valid for this environment, and has attempted another method of Authentication"); - } else { - System.out.println(future.code() + ":" + future.body()); - } - } - } catch (CadiException | LocatorException | APIException e) { - e.printStackTrace(); - } - } - - - private static void basicAuthTest(Locator dl, SecuritySetter ss) { - try { - URI uri = dl.get(dl.best()); - System.out.println("Resolved to: " + uri); - HClient client = new HClient(ss, uri, 3000); - client.setMethod("GET"); - client.setPathInfo("/authn/basicAuth"); - client.addHeader("Accept", "text/plain"); - client.send(); - - - Future future = client.futureReadString(); - if(future.get(7000)) { - System.out.println("BasicAuth Validated"); - } else { - System.out.println("Failure " + future.code() + ":" + future.body()); - } - } catch (CadiException | LocatorException | APIException e) { - e.printStackTrace(); - } - } + + private static Map aaf_urls; + + + public static void main(String[] args) { + if (args.length<1) { + System.out.println("Usage: ConnectivityTester []"); + } else { + print(true,"START OF CONNECTIVITY TESTS",new Date().toString(),System.getProperty("user.name"), + "Note: All API Calls are /authz/perms/user/"); + + if (!args[0].contains(Config.CADI_PROP_FILES+'=')) { + args[0]=Config.CADI_PROP_FILES+'='+args[0]; + } + + PropAccess access = new PropAccess(args); + try { + SecurityInfoC si = SecurityInfoC.instance(access, HttpURLConnection.class); + aaf_urls = Agent.loadURLs(access); + + List> lss = loadSetters(access,si); + ///////// + String directAAFURL = aaf_urls.get(Config.AAF_URL); + if(directAAFURL!=null && !(directAAFURL.contains("/locate/") || directAAFURL.contains("AAF_LOCATE_URL"))) { + print(true,"Test Connections by non-located aaf_url"); + Locator locator = new SingleEndpointLocator(directAAFURL); + connectTest(locator,new URI(directAAFURL)); + + SecuritySetter ss = si.defSS; + permTest(locator,ss); + } else { + ///////// + print(true,"Test Connections driven by AAFLocator"); + String serviceURI = aaf_urls.get(Config.AAF_URL); + + for (String url : new String[] { + serviceURI, + aaf_urls.get(Config.AAF_OAUTH2_TOKEN_URL), + aaf_urls.get(Config.AAF_OAUTH2_INTROSPECT_URL), + aaf_urls.get(Config.AAF_URL_CM), + aaf_urls.get(Config.AAF_URL_GUI), + aaf_urls.get(Config.AAF_URL_FS), + aaf_urls.get(Config.AAF_URL_HELLO) + }) { + URI uri = new URI(url); + Locator locator = new AAFLocator(si, uri); + try { + connectTest(locator, uri); + } catch (Exception e) { + e.printStackTrace(); + System.err.flush(); + } + } + + ///////// + print(true,"Test Service for Perms driven by AAFLocator"); + Locator locator = new AAFLocator(si,new URI(serviceURI)); + for (SecuritySetter ss : lss) { + permTest(locator,ss); + } + + ////////// + print(true,"Test essential BasicAuth Service call, driven by AAFLocator"); + boolean hasBath=false; + for (SecuritySetter ss : lss) { + if (ss instanceof HBasicAuthSS) { + hasBath=true; + basicAuthTest(new AAFLocator(si, new URI(serviceURI)),ss); + } + } + if(!hasBath) { + System.out.println("No User/Password to test"); + } + } + + } catch (Exception e) { + e.printStackTrace(System.err); + } finally { + print(true,"END OF TESTS"); + } + } + } + + + private static List> loadSetters(PropAccess access, SecurityInfoC si) { + print(true,"Load Security Setters from Configuration Information"); + String user = access.getProperty(Config.AAF_APPID); + + ArrayList> lss = new ArrayList<>(); + + + try { + HBasicAuthSS hbass = new HBasicAuthSS(si,true); + if (hbass==null || hbass.getID()==null) { + access.log(Level.INFO, "BasicAuth Information is not available in configuration, BasicAuth tests will not be conducted... Continuing"); + } else { + access.log(Level.INFO, "BasicAuth Information found with ID",hbass.getID(),". BasicAuth tests will be performed."); + lss.add(hbass); + } + } catch (Exception e) { + access.log(Level.INFO, "BasicAuth Security Setter constructor threw exception: \"",e.getMessage(),"\". BasicAuth tests will not be performed"); + } + + try { + HX509SS hxss = new HX509SS(user,si); + if (hxss==null || hxss.getID()==null) { + access.log(Level.INFO, "X509 (Client certificate) Information is not available in configuration, X509 tests will not be conducted... Continuing"); + } else { + access.log(Level.INFO, "X509 (Client certificate) Information found with ID",hxss.getID(),". X509 tests will be performed."); + lss.add(hxss); + } + } catch (Exception e) { + access.log(Level.INFO, "X509 (Client certificate) Security Setter constructor threw exception: \"",e.getMessage(),"\". X509 tests will not be performed"); + } + + String tokenURL = aaf_urls.get(Config.AAF_OAUTH2_TOKEN_URL); + + try { + HRenewingTokenSS hrtss = new HRenewingTokenSS(access, tokenURL); + access.log(Level.INFO, "AAF OAUTH2 Information found with ID",hrtss.getID(),". AAF OAUTH2 tests will be performed."); + lss.add(hrtss); + } catch (Exception e) { + access.log(Level.INFO, "AAF OAUTH2 Security Setter constructor threw exception: \"",e.getMessage(),"\". AAF OAUTH2 tests will not be conducted... Continuing"); + } + + tokenURL = access.getProperty(Config.AAF_ALT_OAUTH2_TOKEN_URL); + if (tokenURL==null) { + access.log(Level.INFO, "AAF Alternative OAUTH2 requires",Config.AAF_ALT_OAUTH2_TOKEN_URL, "OAuth2 tests to", tokenURL, "will not be conducted... Continuing"); + } else { + try { + HRenewingTokenSS hrtss = new HRenewingTokenSS(access, tokenURL); + access.log(Level.INFO, "ALT OAUTH2 Information found with ID",hrtss.getID(),". ALT OAUTH2 tests will be performed."); + lss.add(hrtss); + } catch (Exception e) { + access.log(Level.INFO, "ALT OAUTH2 Security Setter constructor threw exception: \"",e.getMessage(),"\". ALT OAuth2 tests to", tokenURL, " will not be conducted... Continuing"); + } + } + + return lss; + } + + private static void print(Boolean strong, String ... args) { + PrintStream out = System.out; + out.println(); + if (strong) { + for (int i=0;i<70;++i) { + out.print('='); + } + out.println(); + } + for (String s : args) { + out.print(strong?"== ":"------ "); + out.print(s); + if (!strong) { + out.print(" ------"); + } + out.println(); + } + if (strong) { + for (int i=0;i<70;++i) { + out.print('='); + } + } + out.println(); + } + + private static void connectTest(Locator dl, URI locatorURI) throws LocatorException { + URI uri; + Socket socket; + print(false,"TCP/IP Connect test to all Located Services for " + locatorURI.toString() ); + for (Item li = dl.first();li!=null;li=dl.next(li)) { + if ((uri = dl.get(li)) == null) { + System.out.println("Locator Item empty"); + } else { + System.out.printf("Located %s using %s\n",uri.toString(), locatorURI.toString()); + socket = new Socket(); + try { + FixURIinfo fui = new FixURIinfo(uri); + try { + socket.connect(new InetSocketAddress(fui.getHost(), fui.getPort()),3000); + System.out.printf("Can Connect a Socket to %s %d\n",fui.getHost(),fui.getPort()); + } catch (IOException e) { + System.out.printf("Cannot Connect a Socket to %s %d: %s\n",fui.getHost(),fui.getPort(),e.getMessage()); + } + } finally { + try { + socket.close(); + } catch (IOException e1) { + System.out.printf("Could not close Socket Connection: %s\n",e1.getMessage()); + } + } + } + } + } + + private static void permTest(Locator dl, SecuritySetter ss) { + try { + URI uri = dl.get(dl.best()); + if (uri==null) { + System.out.print("No URI available using " + ss.getClass().getSimpleName()); + System.out.println(); + return; + } else { + System.out.print("Resolved to: " + uri + " using " + ss.getClass().getSimpleName()); + } + if (ss instanceof HRenewingTokenSS) { + System.out.println(" " + ((HRenewingTokenSS)ss).tokenURL()); + } else { + System.out.println(); + } + HClient client = new HClient(ss, uri, 3000); + client.setMethod("GET"); + String user = ss.getID(); + + String pathInfo = "/authz/perms/user/"+user; + client.setPathInfo(pathInfo); + System.out.println(pathInfo); + + client.send(); + Future future = client.futureReadString(); + if (future.get(7000)) { + System.out.println(future.body()); + } else { + if (future.code()==401 && ss instanceof HX509SS) { + System.out.println(" Authentication denied with 401 for Certificate.\n\t" + + "This means Certificate isn't valid for this environment, and has attempted another method of Authentication"); + } else { + System.out.println(future.code() + ":" + future.body()); + } + } + } catch (CadiException | LocatorException | APIException e) { + e.printStackTrace(); + } + } + + + private static void basicAuthTest(Locator dl, SecuritySetter ss) { + try { + URI uri = dl.get(dl.best()); + System.out.println("Resolved to: " + uri); + HClient client = new HClient(ss, uri, 3000); + client.setMethod("GET"); + client.setPathInfo("/authn/basicAuth"); + client.addHeader("Accept", "text/plain"); + client.send(); + + + Future future = client.futureReadString(); + if (future.get(7000)) { + System.out.println("BasicAuth Validated"); + } else { + System.out.println("Failure " + future.code() + ":" + future.body()); + } + } catch (CadiException | LocatorException | APIException e) { + e.printStackTrace(); + } + } }