Changeset 7293 for TI12-security


Ignore:
Timestamp:
06/08/10 13:41:00 (9 years ago)
Author:
pjkersha
Message:

Incomplete - task 12: ESG Yadis identity service discovery

Location:
TI12-security/trunk/EsgYadisParser
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/EsgYadisParser

    • Property svn:ignore set to
      javamail-1.4.3
      javamail-1.4.3.zip
  • TI12-security/trunk/EsgYadisParser/.classpath

    r7275 r7293  
    1010        <classpathentry kind="lib" path="lib/openid4java-0.9.5.jar" sourcepath="openid4java-0.9.5.593/src"/> 
    1111        <classpathentry kind="lib" path="lib/xercesImpl-2.8.1.jar"/> 
     12        <classpathentry kind="lib" path="lib/mailapi.jar"/> 
    1213        <classpathentry kind="output" path="bin"/> 
    1314</classpath> 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/openid2emailresolution/OpenId2EmailAddressResolver.java

    r7275 r7293  
    1111import java.util.List; 
    1212import java.util.Set; 
     13 
     14import javax.mail.internet.InternetAddress; 
    1315 
    1416import org.earthsystemgrid.security.yadis.YadisRetrieval; 
     
    3234        } 
    3335         
    34         public String resolve(URL openidURL) 
     36        public InternetAddress resolve(URL openidURL) 
    3537        { 
    3638                YadisRetrieval yadisRetriever = new YadisRetrieval(); 
     
    7678                          
    7779                         // Call Attribute Service querying for e-mail address 
    78                          String emailAddr = queryAttributeService(attributeServiceEndpoint); 
     80                         InternetAddress emailAddr = queryAttributeService(attributeServiceEndpoint); 
     81                         return emailAddr 
    7982                } 
    8083        } 
    8184         
    82         protected String queryAttributeService(URL attributeServiceEndpoint) 
     85        protected InternetAddress queryAttributeService(URL attributeServiceEndpoint) 
    8386        { 
    8487                return null; 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/Xrds.java

    r7290 r7293  
    6565    public static final String OPENID_ELEM_DELEGATE = "Delegate"; 
    6666       
    67     protected Document parseXmlInput(String input) throws DiscoveryException 
     67    protected Document parseXmlInput(String input) throws XrdsParseException 
    6868    { 
    6969        if (input == null) 
    70             throw new DiscoveryException("Cannot read XML message", 
    71                 OpenIDException.XRDS_DOWNLOAD_ERROR); 
     70            throw new XrdsParseException("No XML message set"); 
    7271 
    7372        try 
     
    7877            dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); 
    7978            dbf.setAttribute(JAXP_SCHEMA_SOURCE, new Object[] { 
    80                 Discovery.class.getResourceAsStream(XRD_SCHEMA), 
    81                 Discovery.class.getResourceAsStream(XRDS_SCHEMA), 
     79                this.getClass().getResourceAsStream(XRD_SCHEMA), 
     80                this.getClass().getResourceAsStream(XRDS_SCHEMA), 
    8281            }); 
    8382            DocumentBuilder builder = dbf.newDocumentBuilder(); 
     
    10099        catch (ParserConfigurationException e) 
    101100        { 
    102             throw new DiscoveryException("Parser configuration error", 
    103                     OpenIDException.XRDS_PARSING_ERROR, e); 
     101            throw new XrdsParseException("Parser configuration error", e); 
    104102        } 
    105103        catch (SAXException e) 
    106104        { 
    107             throw new DiscoveryException("Error parsing XML document", 
    108                     OpenIDException.XRDS_PARSING_ERROR, e); 
     105            throw new XrdsParseException("Error parsing XML document", e); 
    109106        } 
    110107        catch (IOException e) 
    111108        { 
    112             throw new DiscoveryException("Error reading XRDS document", 
    113                     OpenIDException.XRDS_DOWNLOAD_ERROR, e); 
    114         } 
    115     } 
    116  
    117     protected Map extractElementsByParent(String ns, String elem, Set parents, Document document) 
     109            throw new XrdsParseException("Error reading XRDS document", e); 
     110        } 
     111    } 
     112 
     113    protected Map extractElementsByParent(String ns, String elem, Set parents,  
     114                Document document) 
    118115    { 
    119116        Map result = new HashMap(); 
     
    124121            if (node == null || !parents.contains(node.getParentNode())) continue; 
    125122 
    126             String localId = node.getFirstChild() != null && node.getFirstChild().getNodeType() == Node.TEXT_NODE ? 
     123            String localId = node.getFirstChild() != null &&  
     124                node.getFirstChild().getNodeType() == Node.TEXT_NODE ? 
    127125                node.getFirstChild().getNodeValue() : null; 
    128126 
     
    132130    } 
    133131     
    134     protected void addServiceType(Map serviceTypes, Node serviceNode, String type) 
     132    protected void addServiceType(Map serviceTypes, Node serviceNode,  
     133                String type) 
    135134    { 
    136135        Set types = (Set) serviceTypes.get(serviceNode); 
     
    151150                return Integer.parseInt(priority.getNodeValue()); 
    152151            else 
    153                 return XrdsServiceEndpoint.LOWEST_PRIORITY; 
     152                return XrdsServiceElem.LOWEST_PRIORITY; 
    154153        } 
    155154 
     
    159158    public List parse(String input, Set targetTypes) throws XrdsParseException 
    160159    { 
    161  
    162160        Document document = parseXmlInput(input); 
    163161 
     
    247245     
    248246    // Parse Yadis document extracting the given target types 
    249     public List parse(String yadisDocContent, Set targetTypes) throws  
    250         DiscoveryException 
    251     { 
    252         this.targetTypes = targetTypes; 
    253                 System.out.println("target types: " + targetTypes.toString()); 
    254         return parse(yadisDocContent); 
    255     } 
    256      
    257     // Select all Target types in the Yadis document 
    258         public List parse(String yadisDocContent) throws DiscoveryException 
    259         { 
    260                 List endpoints; 
    261                 endpoints = parseXrds(yadisDocContent, null); 
    262                 System.out.println("Parsed endpoints: " + endpoints); 
    263                 return endpoints; 
    264         } 
     247    public List parse(String yadisDocContent) throws XrdsParseException 
     248    { 
     249        return parse(yadisDocContent, null); 
     250    } 
    265251     
    266252        /** 
     253         * TODO: move this test harness to unit tests 
    267254         * @param args 
    268255         * @throws IOException  
     
    270257         * @throws ParserConfigurationException  
    271258         * @throws XPathExpressionException  
    272          * @throws DiscoveryException  
     259         * @throws XrdsParseException  
    273260         */ 
    274261        public static void main(String[] args) throws ParserConfigurationException,  
    275262                SAXException,  
    276                 IOException, XPathExpressionException, DiscoveryException { 
     263                IOException, XPathExpressionException, XrdsParseException { 
    277264                                         
    278265        String yadisDocFilePath = "/home/pjkersha/workspace/EsgYadisParser/data/yadis.xml"; 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/YadisRetrieval.java

    r7275 r7293  
    1010import java.security.NoSuchAlgorithmException; 
    1111import java.security.cert.CertificateException; 
     12import java.util.Arrays; 
     13import java.util.HashSet; 
    1214import java.util.List; 
    1315import java.util.Set; 
     
    1921 
    2022import org.earthsystemgrid.security.yadis.YadisTrustManager; 
     23import org.earthsystemgrid.security.yadis.exception.XrdsParseException; 
     24import org.earthsystemgrid.security.yadis.exception.YadisRetrievalException; 
    2125import org.openid4java.discovery.DiscoveryException; 
    2226import org.openid4java.discovery.xrds.XrdsServiceEndpoint; 
    2327 
    2428 
    25 public class YadisRetrieval extends YadisParser 
     29/* 
     30 * Retrieve a Yadis document and parse it returning the required service 
     31 * elements 
     32 *  
     33 * @author pjkershaw 
     34 */ 
     35public class YadisRetrieval 
    2636{        
    2737        public static String retrieve(URL yadisURL) throws IOException,  
     
    2939                KeyStoreException 
    3040        { 
    31 //              X509TrustManager xtm = new YadisTrustManager(null, null, null); 
    32 //              X509TrustManager tm[] = {xtm}; 
    33 //              SSLContext ctx = SSLContext.getInstance("SSL"); 
    34 //              ctx.init(null, tm, null); 
    35 //              SSLSocketFactory socketFactory = ctx.getSocketFactory(); 
     41                // Experimenting with Trust Manager for whitelisting 
     42                X509TrustManager xtm = new YadisTrustManager(null, null, null); 
     43                X509TrustManager tm[] = {xtm}; 
     44                SSLContext ctx = SSLContext.getInstance("SSL"); 
     45                ctx.init(null, tm, null); 
     46                SSLSocketFactory socketFactory = ctx.getSocketFactory(); 
    3647 
    3748                HttpsURLConnection connection = (HttpsURLConnection) 
    3849                                                                                                        yadisURL.openConnection(); 
    39 //              connection.setSSLSocketFactory(socketFactory); 
     50                connection.setSSLSocketFactory(socketFactory); 
    4051                                 
    4152                InputStream ins = connection.getInputStream(); 
     
    5768        // Retrieve and parse Yadis document returning the services it references 
    5869        public List retrieveAndParse(URL yadisURL, Set targetTypes) throws  
    59                 DiscoveryException, KeyManagementException, NoSuchAlgorithmException,  
    60                 CertificateException, KeyStoreException, IOException 
     70                XrdsParseException, YadisRetrievalException 
    6171        { 
    62                 String yadisDocContent = retrieve(yadisURL); 
     72                String yadisDocContent; 
     73                try { 
     74                        yadisDocContent = retrieve(yadisURL); 
     75                } catch (KeyManagementException e) { 
     76                        throw new YadisRetrievalException("Error retrieving " + yadisURL, e); 
     77                } catch (NoSuchAlgorithmException e) { 
     78                        throw new YadisRetrievalException("Error retrieving " + yadisURL, e); 
     79                } catch (CertificateException e) { 
     80                        throw new YadisRetrievalException("Error retrieving " + yadisURL, e); 
     81                } catch (KeyStoreException e) { 
     82                        throw new YadisRetrievalException("Error retrieving " + yadisURL, e); 
     83                } catch (IOException e) { 
     84                        throw new YadisRetrievalException("Error retrieving " + yadisURL, e); 
     85                } 
    6386 
    64                 List services; 
    65                 services = parse(yadisDocContent, targetTypes); 
    66                 return services; 
     87                Xrds xrdsDoc = new Xrds(); 
     88                List serviceElems = xrdsDoc.parse(yadisDocContent, targetTypes); 
     89                return serviceElems; 
    6790        } 
    6891         
     
    7194                YadisRetrieval yadis = new YadisRetrieval(); 
    7295                 
    73                 URL yadisURL = new URL("https://ceda.ac.uk/openid/Philip.Kershaw"); 
    74 //              URL yadisURL = new URL("https://localhost:7443/openid/PJKershaw"); 
     96//              URL yadisURL = new URL("https://ceda.ac.uk/openid/Philip.Kershaw"); 
     97                URL yadisURL = new URL("https://localhost:7443/openid/PJKershaw"); 
    7598                String content = null; 
    7699                try { 
     
    91114                System.out.println(content); 
    92115                 
    93                 List<XrdsServiceEndpoint> serviceEndpoints = null; 
     116                List<XrdsServiceElem> serviceElems = null; 
     117                String elem [] = {"urn:esg:security:attribute-service"}; 
     118                Set<String> targetTypes = new HashSet(Arrays.asList(elem)); 
    94119                try { 
    95                         serviceEndpoints = yadis.retrieveAndParse(yadisURL, null); 
    96                 } catch (KeyManagementException e) { 
     120                        serviceElems = yadis.retrieveAndParse(yadisURL, targetTypes); 
     121                         
     122                } catch (XrdsParseException e) { 
    97123                        // TODO Auto-generated catch block 
    98124                        e.printStackTrace(); 
    99                 } catch (DiscoveryException e) { 
    100                         // TODO Auto-generated catch block 
    101                         e.printStackTrace(); 
    102                 } catch (NoSuchAlgorithmException e) { 
    103                         // TODO Auto-generated catch block 
    104                         e.printStackTrace(); 
    105                 } catch (CertificateException e) { 
    106                         // TODO Auto-generated catch block 
    107                         e.printStackTrace(); 
    108                 } catch (KeyStoreException e) { 
     125                } catch (YadisRetrievalException e) { 
    109126                        // TODO Auto-generated catch block 
    110127                        e.printStackTrace(); 
    111128                } 
    112129                 
    113                 for (XrdsServiceEndpoint serviceEndPoint : serviceEndpoints) 
    114                         System.out.println(serviceEndPoint); 
     130                for (XrdsServiceElem serviceElem : serviceElems) 
     131                        System.out.println(serviceElem); 
    115132        } 
    116133} 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/exception/XrdsException.java

    r7289 r7293  
    33public class XrdsException extends Exception { 
    44 
     5        public XrdsException(String message, Exception e) { 
     6                super(message, e); 
     7        } 
     8 
     9        public XrdsException(String message) { 
     10                super(message); 
     11        } 
     12 
    513} 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/exception/XrdsParseException.java

    r7289 r7293  
    11package org.earthsystemgrid.security.yadis.exception; 
     2 
     3import javax.xml.parsers.ParserConfigurationException; 
    24 
    35 
    46public class XrdsParseException extends XrdsException { 
    57 
     8        public XrdsParseException(String message, Exception e) { 
     9                super(message, e); 
     10        } 
     11 
     12        public XrdsParseException(String message) { 
     13                super(message); 
     14        } 
     15 
    616} 
Note: See TracChangeset for help on using the changeset viewer.