Changeset 7453 for TI12-security/trunk


Ignore:
Timestamp:
07/09/10 16:38:04 (9 years ago)
Author:
pjkersha
Message:

Integrating esg-saml attribute query call.

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

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/EsgYadisParser/.classpath

    r7308 r7453  
    1111        <classpathentry kind="lib" path="lib/xercesImpl-2.8.1.jar"/> 
    1212        <classpathentry kind="lib" path="lib/mailapi.jar"/> 
     13        <classpathentry kind="lib" path="/esg-saml/lib/fetched"/> 
     14        <classpathentry kind="src" path="/esg-saml"/> 
     15        <classpathentry kind="lib" path="/esg-saml/dist/esg-saml-1.1.2.2.jar"/> 
     16        <classpathentry kind="lib" path="/esg-saml/dist/esg-saml-common-1.1.2.2.jar" sourcepath="/esg-saml/src/java/main/esg/saml/common"/> 
     17        <classpathentry kind="lib" path="/esg-saml/dist/esg-saml-connector-1.1.2.2.jar"/> 
     18        <classpathentry kind="lib" path="/esg-saml/dist/esg-saml-fe-1.1.2.2.jar"/> 
     19        <classpathentry kind="lib" path="/esg-saml/dist/esg-saml-test-1.1.2.2.jar"/> 
     20        <classpathentry kind="lib" path="/esg-saml/dist"/> 
     21        <classpathentry kind="lib" path="/esg-saml/lib/fetched/opensaml-2.3.2.jar"/> 
     22        <classpathentry kind="lib" path="/esg-saml/lib/fetched/xmltooling-1.2.2.jar"/> 
    1323        <classpathentry kind="output" path="bin"/> 
    1424</classpath> 
  • TI12-security/trunk/EsgYadisParser/.project

    r7308 r7453  
    44        <comment></comment> 
    55        <projects> 
     6                <project>esg-saml</project> 
    67        </projects> 
    78        <buildSpec> 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/openid2emailresolution/OpenId2EmailAddrResolution.java

    r7308 r7453  
    11package org.earthsystemgrid.security.openid2emailresolution; 
    22 
     3import java.io.BufferedReader; 
    34import java.io.IOException; 
     5import java.io.InputStream; 
     6import java.io.InputStreamReader; 
    47import java.net.MalformedURLException; 
    58import java.net.URL; 
     
    1518 
    1619import javax.mail.internet.InternetAddress; 
     20import javax.net.ssl.HttpsURLConnection; 
     21import javax.net.ssl.SSLContext; 
     22import javax.net.ssl.SSLSocketFactory; 
     23import javax.net.ssl.X509TrustManager; 
    1724 
     25import esg.saml.attr.service.impl.SAMLAttributeServiceClientSoapImpl; 
     26import org.opensaml.xml.io.MarshallingException; 
     27 
     28import org.earthsystemgrid.security.DnWhitelistX509TrustMgr; 
     29import org.earthsystemgrid.security.exceptions.DnWhitelistX509TrustMgrInitException; 
    1830import org.earthsystemgrid.security.openid2emailresolution.exceptions.AttributeServiceQueryException; 
    1931import org.earthsystemgrid.security.openid2emailresolution.exceptions.NoMatchingXrdsServiceException; 
     
    2638         
    2739        private String attributeServiceType; 
    28         public static final String DEF_ATTRIBUTE_SERVICE_XRD_SERVICE_TYPE = "urn:esg:security:attribute-service"; 
     40        private DnWhitelistX509TrustMgr x509TrustMgr; 
     41        public static final String DEF_ATTRIBUTE_SERVICE_XRD_SERVICE_TYPE =  
     42                "urn:esg:security:attribute-service"; 
    2943         
    30         public OpenId2EmailAddrResolution(String attributeServiceType) { 
    31                 super(); 
     44        public OpenId2EmailAddrResolution(String attributeServiceType, 
     45                        InputStream propertiesFile) throws YadisRetrievalException { 
     46                 
     47                // Create trust manager with given whitelist and keystore settings 
     48                // read from properties file 
     49                try { 
     50                        x509TrustMgr = new DnWhitelistX509TrustMgr(propertiesFile); 
     51                         
     52                } catch (DnWhitelistX509TrustMgrInitException e) { 
     53                        throw new YadisRetrievalException("Creating trust manager", e); 
     54                } 
     55 
    3256                if (this.attributeServiceType == null) 
    3357                        this.attributeServiceType = DEF_ATTRIBUTE_SERVICE_XRD_SERVICE_TYPE; 
     
    3761        } 
    3862         
    39         public OpenId2EmailAddrResolution() { 
    40                 this(null); 
     63        public OpenId2EmailAddrResolution(InputStream propertiesFile)  
     64        throws YadisRetrievalException { 
     65                this(null, propertiesFile); 
    4166        } 
    4267         
     
    4772                AttributeServiceQueryException { 
    4873                 
    49                 YadisRetrieval yadisRetriever = new YadisRetrieval(); 
     74                YadisRetrieval yadisRetriever = new YadisRetrieval(x509TrustMgr); 
    5075                List<XrdsServiceElem> serviceElems = null; 
    5176                Set<String> targetTypes = new HashSet<String>() {{add(attributeServiceType);}}; 
     
    75100                          
    76101                 // Call Attribute Service querying for e-mail address 
    77                  InternetAddress emailAddr = queryAttributeService(attributeServiceEndpoint); 
     102                 InternetAddress emailAddr = queryAttributeService(attributeServiceEndpoint, 
     103                                 openidURL); 
    78104                 return emailAddr; 
    79105        } 
     
    82108         * Call Attribute Service to retrieve user's e-mail address 
    83109         */ 
    84         protected InternetAddress queryAttributeService(URL attributeServiceEndpoint) 
     110        protected InternetAddress queryAttributeService(URL attributeServiceEndpoint, 
     111                        URL openidURL) throws AttributeServiceQueryException 
    85112        { 
    86                 // TODO: Add Attribute Service call here 
     113                String issuer = "my issuer"; 
     114                SAMLAttributeServiceClientSoapImpl attributeServiceClient =  
     115                        new SAMLAttributeServiceClientSoapImpl(issuer); 
     116                 
     117                // Create query 
     118                String query = null; 
     119                try { 
     120                        query = attributeServiceClient.buildAttributeRequest(openidURL.toString()); 
     121                } catch (MarshallingException e) { 
     122                        throw new AttributeServiceQueryException("Marshalling attribute " + 
     123                                        "query to " + attributeServiceEndpoint + " for OpenID", e);                      
     124                } 
     125                SSLContext ctx = null; 
     126                try { 
     127                        ctx = SSLContext.getInstance("SSL"); 
     128                         
     129                } catch (NoSuchAlgorithmException e) { 
     130                        throw new AttributeServiceQueryException("Getting SSL context", e); 
     131                } 
     132                 
     133                X509TrustManager tm[] = {x509TrustMgr}; 
     134                try { 
     135                        ctx.init(null, tm, null); 
     136                } catch (KeyManagementException e) { 
     137                        throw new AttributeServiceQueryException("Initialising SSL context",  
     138                                                                                                        e); 
     139                } 
     140                 
     141                SSLSocketFactory socketFactory = ctx.getSocketFactory(); 
     142                HttpsURLConnection connection = null; 
     143                try { 
     144                        connection = (HttpsURLConnection) 
     145                                attributeServiceEndpoint.openConnection(); 
     146                } catch (IOException e) { 
     147                        throw new AttributeServiceQueryException("Making connection", e); 
     148                } 
     149                connection.setSSLSocketFactory(socketFactory); 
     150                                 
     151                InputStream ins = null; 
     152                try { 
     153                        ins = connection.getInputStream(); 
     154                } catch (IOException e) { 
     155                        throw new AttributeServiceQueryException("Getting input stream", e); 
     156                } 
     157            InputStreamReader isr = new InputStreamReader(ins); 
     158            BufferedReader in = new BufferedReader(isr); 
     159            StringBuffer buf = new StringBuffer(); 
     160            String inputLine = null; 
     161 
     162            try { 
     163                        while ((inputLine = in.readLine()) != null) 
     164                        { 
     165                            buf.append(inputLine); 
     166                            buf.append(System.getProperty("line.separator")); 
     167                        } 
     168                        in.close(); 
     169                } catch (IOException e) { 
     170                        throw new AttributeServiceQueryException("Reading content", e); 
     171                } 
     172 
     173            return buf.toString(); 
     174                 
    87175                return null; 
    88176        } 
  • TI12-security/trunk/EsgYadisParser/src/org/earthsystemgrid/security/yadis/YadisRetrieval.java

    r7309 r7453  
    5959         
    6060        /** 
     61         * Initialise from an existing trust manager 
     62         * @param x509TrustMgr 
     63         */ 
     64        public YadisRetrieval(X509TrustManager x509TrustMgr) { 
     65                this.x509TrustMgr = x509TrustMgr; 
     66        } 
     67         
     68        /** 
    6169         * Retrieve XRD document from Yadis endpoint 
    6270         *  
Note: See TracChangeset for help on using the changeset viewer.