Changeset 7294 for TI12-security


Ignore:
Timestamp:
06/08/10 14:17:08 (9 years ago)
Author:
pjkersha
Message:

Incomplete - task 12: ESG Yadis identity service discovery

  • Writing class to wrap Yadis and SAML attribute service calls.
Location:
TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security
Files:
4 added
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/openid2emailresolution/OpenId2EmailAddressResolver.java

    r7293 r7294  
    88import java.security.NoSuchAlgorithmException; 
    99import java.security.cert.CertificateException; 
     10import java.util.Collections; 
    1011import java.util.HashSet; 
    1112import java.util.List; 
     
    1415import javax.mail.internet.InternetAddress; 
    1516 
     17import org.earthsystemgrid.security.openid2emailresolution.exceptions.AttributeServiceQueryException; 
     18import org.earthsystemgrid.security.openid2emailresolution.exceptions.NoMatchingXrdsServiceException; 
     19import org.earthsystemgrid.security.yadis.XrdsServiceElem; 
    1620import org.earthsystemgrid.security.yadis.YadisRetrieval; 
    17 import org.openid4java.discovery.DiscoveryException; 
    18 import org.openid4java.discovery.xrds.XrdsServiceEndpoint; 
     21import org.earthsystemgrid.security.yadis.exception.XrdsParseException; 
     22import org.earthsystemgrid.security.yadis.exception.YadisRetrievalException; 
    1923 
    2024public class OpenId2EmailAddressResolver { 
    2125         
    22         private Set targetTypes; 
    23         public static final String attributeServiceType = "urn:esg:security:attribute-service"; 
     26        private String attributeServiceType; 
     27        public static final String DEF_ATTRIBUTE_SERVICE_XRD_SERVICE_TYPE = "urn:esg:security:attribute-service"; 
     28         
     29        OpenId2EmailAddressResolver(String attributeServiceType) { 
     30                super(); 
     31                if (this.attributeServiceType == null) 
     32                        this.attributeServiceType = DEF_ATTRIBUTE_SERVICE_XRD_SERVICE_TYPE; 
     33                else 
     34                        this.attributeServiceType = attributeServiceType; 
    2435 
    25         OpenId2EmailAddressResolver(Set targetTypes) 
    26         { 
    27                 super(); 
    28                 if (targetTypes == null) 
    29                 { 
    30                         targetTypes = new HashSet() {{ 
    31                                 add(attributeServiceType); 
    32                         }}; 
    33                 } 
    3436        } 
    3537         
    36         public InternetAddress resolve(URL openidURL) 
    37         { 
     38        public InternetAddress resolve(URL openidURL) throws  
     39                NoMatchingXrdsServiceException,  
     40                XrdsParseException,  
     41                YadisRetrievalException,  
     42                AttributeServiceQueryException { 
     43                 
    3844                YadisRetrieval yadisRetriever = new YadisRetrieval(); 
    39                 List<XrdsServiceEndpoint> serviceEndpoints = null; 
    40                 try { 
    41                         serviceEndpoints = yadisRetriever.retrieveAndParse(openidURL,  
    42                                                                                                                            targetTypes); 
    43                                                  
    44                 } catch (KeyManagementException e) { 
    45                         // TODO Auto-generated catch block 
    46                         e.printStackTrace(); 
    47                 } catch (DiscoveryException e) { 
    48                         // TODO Auto-generated catch block 
    49                         e.printStackTrace(); 
    50                 } catch (NoSuchAlgorithmException e) { 
    51                         // TODO Auto-generated catch block 
    52                         e.printStackTrace(); 
    53                 } catch (CertificateException e) { 
    54                         // TODO Auto-generated catch block 
    55                         e.printStackTrace(); 
    56                 } catch (KeyStoreException e) { 
    57                         // TODO Auto-generated catch block 
    58                         e.printStackTrace(); 
    59                 } catch (IOException e) { 
    60                         // TODO Auto-generated catch block 
    61                         e.printStackTrace(); 
    62                 } 
     45                List<XrdsServiceElem> serviceElems = null; 
     46                Set<String> targetTypes = new HashSet<String>() {{add(attributeServiceType);}}; 
    6347                 
    64                 if (serviceEndpoints == null || serviceEndpoints.isEmpty()) 
    65                         return null; 
     48                serviceElems = yadisRetriever.retrieveAndParse(openidURL, targetTypes); 
     49                 
     50                if (serviceElems == null || serviceElems.isEmpty()) 
     51                        throw new NoMatchingXrdsServiceException("No matching XRDS " +  
     52                                        "service element returned for OpenID URI: " + openidURL); 
     53                 
     54                // Sort into Priority order making use of XrdsServiceElem's compareTo 
     55                // logic 
     56                Collections.sort(serviceElems); 
    6657                 
    6758                // Get Attribute Service URI from service endpoint 
    68                 for (XrdsServiceEndpoint serviceEndpoint: serviceEndpoints) 
    69                 { 
    70                         URL attributeServiceEndpoint; 
     59                for (XrdsServiceElem serviceEndpoint: serviceElems) { 
     60                        URL attributeServiceEndpoint = null; 
    7161                        try { 
    7262                                attributeServiceEndpoint = new URL(serviceEndpoint.getUri()); 
    7363                        } catch (MalformedURLException e) { 
    74                                 // TODO Auto-generated catch block 
    75                                 e.printStackTrace(); 
    76                                 return null; 
     64                                throw new AttributeServiceQueryException("Attribute Service " + 
     65                                                "URI " + attributeServiceEndpoint + " is invalid", e); 
    7766                        } 
    7867                          
    7968                         // Call Attribute Service querying for e-mail address 
    8069                         InternetAddress emailAddr = queryAttributeService(attributeServiceEndpoint); 
    81                          return emailAddr 
     70                         return emailAddr; 
    8271                } 
     72                return null; 
    8373        } 
    8474         
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/XrdsDoc.java

    r7293 r7294  
    4545 * @author pjkershaw 
    4646 */ 
    47 public class Xrds { 
    48     private static final Log _log = LogFactory.getLog(Xrds.class); 
     47public class XrdsDoc { 
     48    private static final Log _log = LogFactory.getLog(XrdsDoc.class); 
    4949    private static final boolean DEBUG = _log.isDebugEnabled(); 
    5050     
     
    264264                                         
    265265        String yadisDocFilePath = "/home/pjkersha/workspace/EsgYadisParser/data/yadis.xml"; 
    266                 Xrds yadisParser = new Xrds(); 
     266                XrdsDoc yadisParser = new XrdsDoc(); 
    267267                StringBuffer contents = new StringBuffer(); 
    268268 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/YadisRetrieval.java

    r7293 r7294  
    8585                } 
    8686 
    87                 Xrds xrdsDoc = new Xrds(); 
     87                XrdsDoc xrdsDoc = new XrdsDoc(); 
    8888                List serviceElems = xrdsDoc.parse(yadisDocContent, targetTypes); 
    8989                return serviceElems; 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/exception/YadisRetrievalException.java

    r7293 r7294  
    1010                super(message); 
    1111        } 
    12  
    13  
    1412} 
Note: See TracChangeset for help on using the changeset viewer.