Search in sources :

Example 1 with DefaultOAuthURLStreamHandlerFactory

use of org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory in project spring-security-oauth by spring-projects.

the class GoogleOAuthTests method testGetRequestToken.

/**
 * tests getting a request token.
 */
@Test
public void testGetRequestToken() throws Exception {
    CoreOAuthConsumerSupport support = new CoreOAuthConsumerSupport();
    support.setStreamHandlerFactory(new DefaultOAuthURLStreamHandlerFactory());
    InMemoryProtectedResourceDetailsService service = new InMemoryProtectedResourceDetailsService();
    HashMap<String, ProtectedResourceDetails> detailsStore = new HashMap<String, ProtectedResourceDetails>();
    BaseProtectedResourceDetails googleDetails = new BaseProtectedResourceDetails();
    googleDetails.setRequestTokenURL("https://www.google.com/accounts/OAuthGetRequestToken");
    googleDetails.setAccessTokenURL("https://www.google.com/accounts/OAuthAuthorizeToken");
    googleDetails.setConsumerKey("anonymous");
    googleDetails.setSharedSecret(new SharedConsumerSecretImpl("anonymous"));
    googleDetails.setId("google");
    googleDetails.setUse10a(true);
    googleDetails.setSignatureMethod(HMAC_SHA1SignatureMethod.SIGNATURE_NAME);
    googleDetails.setRequestTokenHttpMethod("GET");
    HashMap<String, String> additional = new HashMap<String, String>();
    additional.put("scope", "http://picasaweb.google.com/data");
    googleDetails.setAdditionalParameters(additional);
    detailsStore.put(googleDetails.getId(), googleDetails);
    service.setResourceDetailsStore(detailsStore);
    support.setProtectedResourceDetailsService(service);
// uncomment to see a request to google.
// see http://code.google.com/apis/accounts/docs/OAuth_ref.html
// and http://jira.codehaus.org/browse/OAUTHSS-37
// OAuthConsumerToken token = support.getUnauthorizedRequestToken("google", "urn:mycallback");
// System.out.println(token.getValue());
// System.out.println(token.getSecret());
}
Also used : SharedConsumerSecretImpl(org.springframework.security.oauth.common.signature.SharedConsumerSecretImpl) DefaultOAuthURLStreamHandlerFactory(org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory) HashMap(java.util.HashMap) CoreOAuthConsumerSupport(org.springframework.security.oauth.consumer.client.CoreOAuthConsumerSupport) Test(org.junit.Test)

Example 2 with DefaultOAuthURLStreamHandlerFactory

use of org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory in project spring-security-oauth by spring-projects.

the class CoreOAuthConsumerSupportTests method testReadResouce.

/**
 * readResouce
 */
@Test
public void testReadResouce() throws Exception {
    OAuthConsumerToken token = new OAuthConsumerToken();
    URL url = new URL("http://myhost.com/resource?with=some&query=params&too");
    final ConnectionProps connectionProps = new ConnectionProps();
    final ByteArrayInputStream inputStream = new ByteArrayInputStream(new byte[0]);
    final HttpURLConnectionForTestingPurposes connectionMock = new HttpURLConnectionForTestingPurposes(url) {

        @Override
        public void setRequestMethod(String method) throws ProtocolException {
            connectionProps.method = method;
        }

        @Override
        public void setDoOutput(boolean dooutput) {
            connectionProps.doOutput = dooutput;
        }

        @Override
        public void connect() throws IOException {
            connectionProps.connected = true;
        }

        @Override
        public OutputStream getOutputStream() throws IOException {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            connectionProps.outputStream = out;
            return out;
        }

        @Override
        public int getResponseCode() throws IOException {
            return connectionProps.responseCode;
        }

        @Override
        public String getResponseMessage() throws IOException {
            return connectionProps.responseMessage;
        }

        @Override
        public InputStream getInputStream() throws IOException {
            return inputStream;
        }

        @Override
        public String getHeaderField(String name) {
            return connectionProps.headerFields.get(name);
        }
    };
    CoreOAuthConsumerSupport support = new CoreOAuthConsumerSupport() {

        @Override
        public URL configureURLForProtectedAccess(URL url, OAuthConsumerToken accessToken, ProtectedResourceDetails details, String httpMethod, Map<String, String> additionalParameters) throws OAuthRequestFailedException {
            try {
                return new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getFile(), new StreamHandlerForTestingPurposes(connectionMock));
            } catch (MalformedURLException e) {
                throw new RuntimeException(e);
            }
        }

        @Override
        public String getOAuthQueryString(ProtectedResourceDetails details, OAuthConsumerToken accessToken, URL url, String httpMethod, Map<String, String> additionalParameters) {
            return "POSTBODY";
        }
    };
    support.setStreamHandlerFactory(new DefaultOAuthURLStreamHandlerFactory());
    when(details.getAuthorizationHeaderRealm()).thenReturn("realm1");
    when(details.isAcceptsAuthorizationHeader()).thenReturn(true);
    when(details.getAdditionalRequestHeaders()).thenReturn(null);
    try {
        support.readResource(details, url, "POST", token, null, null);
        fail("shouldn't have been a valid response code.");
    } catch (OAuthRequestFailedException e) {
    // fall through...
    }
    assertFalse(connectionProps.doOutput);
    assertEquals("POST", connectionProps.method);
    assertTrue(connectionProps.connected);
    connectionProps.reset();
    when(details.getAuthorizationHeaderRealm()).thenReturn(null);
    when(details.isAcceptsAuthorizationHeader()).thenReturn(true);
    when(details.getAdditionalRequestHeaders()).thenReturn(null);
    connectionProps.responseCode = 400;
    connectionProps.responseMessage = "Nasty";
    try {
        support.readResource(details, url, "POST", token, null, null);
        fail("shouldn't have been a valid response code.");
    } catch (OAuthRequestFailedException e) {
    // fall through...
    }
    assertFalse(connectionProps.doOutput);
    assertEquals("POST", connectionProps.method);
    assertTrue(connectionProps.connected);
    connectionProps.reset();
    when(details.getAuthorizationHeaderRealm()).thenReturn(null);
    when(details.isAcceptsAuthorizationHeader()).thenReturn(true);
    when(details.getAdditionalRequestHeaders()).thenReturn(null);
    connectionProps.responseCode = 401;
    connectionProps.responseMessage = "Bad Realm";
    connectionProps.headerFields.put("WWW-Authenticate", "realm=\"goodrealm\"");
    try {
        support.readResource(details, url, "POST", token, null, null);
        fail("shouldn't have been a valid response code.");
    } catch (InvalidOAuthRealmException e) {
    // fall through...
    }
    assertFalse(connectionProps.doOutput);
    assertEquals("POST", connectionProps.method);
    assertTrue(connectionProps.connected);
    connectionProps.reset();
    when(details.getAuthorizationHeaderRealm()).thenReturn(null);
    when(details.isAcceptsAuthorizationHeader()).thenReturn(true);
    when(details.getAdditionalRequestHeaders()).thenReturn(null);
    connectionProps.responseCode = 200;
    connectionProps.responseMessage = "Congrats";
    assertSame(inputStream, support.readResource(details, url, "GET", token, null, null));
    assertFalse(connectionProps.doOutput);
    assertEquals("GET", connectionProps.method);
    assertTrue(connectionProps.connected);
    connectionProps.reset();
    when(details.getAuthorizationHeaderRealm()).thenReturn(null);
    when(details.isAcceptsAuthorizationHeader()).thenReturn(false);
    when(details.getAdditionalRequestHeaders()).thenReturn(null);
    connectionProps.responseCode = 200;
    connectionProps.responseMessage = "Congrats";
    assertSame(inputStream, support.readResource(details, url, "POST", token, null, null));
    assertEquals("POSTBODY", new String(((ByteArrayOutputStream) connectionProps.outputStream).toByteArray()));
    assertTrue(connectionProps.doOutput);
    assertEquals("POST", connectionProps.method);
    assertTrue(connectionProps.connected);
    connectionProps.reset();
}
Also used : MalformedURLException(java.net.MalformedURLException) DefaultOAuthURLStreamHandlerFactory(org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory) InvalidOAuthRealmException(org.springframework.security.oauth.consumer.InvalidOAuthRealmException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OAuthRequestFailedException(org.springframework.security.oauth.consumer.OAuthRequestFailedException) URL(java.net.URL) OAuthConsumerToken(org.springframework.security.oauth.consumer.OAuthConsumerToken) ByteArrayInputStream(java.io.ByteArrayInputStream) HashMap(java.util.HashMap) Map(java.util.Map) TreeMap(java.util.TreeMap) ProtectedResourceDetails(org.springframework.security.oauth.consumer.ProtectedResourceDetails) Test(org.junit.Test)

Example 3 with DefaultOAuthURLStreamHandlerFactory

use of org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory in project spring-security-oauth by spring-projects.

the class CoreOAuthConsumerSupportTests method testConfigureURLForProtectedAccess.

/**
 * configureURLForProtectedAccess
 */
@Test
public void testConfigureURLForProtectedAccess() throws Exception {
    CoreOAuthConsumerSupport support = new CoreOAuthConsumerSupport() {

        // Inherited.
        @Override
        public String getOAuthQueryString(ProtectedResourceDetails details, OAuthConsumerToken accessToken, URL url, String httpMethod, Map<String, String> additionalParameters) {
            return "myquerystring";
        }
    };
    support.setStreamHandlerFactory(new DefaultOAuthURLStreamHandlerFactory());
    OAuthConsumerToken token = new OAuthConsumerToken();
    URL url = new URL("https://myhost.com/somepath?with=some&query=params&too");
    when(details.isAcceptsAuthorizationHeader()).thenReturn(true);
    assertEquals("https://myhost.com/somepath?with=some&query=params&too", support.configureURLForProtectedAccess(url, token, details, "GET", null).toString());
    when(details.isAcceptsAuthorizationHeader()).thenReturn(false);
    assertEquals("https://myhost.com/somepath?myquerystring", support.configureURLForProtectedAccess(url, token, details, "GET", null).toString());
    assertEquals("https://myhost.com/somepath?with=some&query=params&too", support.configureURLForProtectedAccess(url, token, details, "POST", null).toString());
    assertEquals("https://myhost.com/somepath?with=some&query=params&too", support.configureURLForProtectedAccess(url, token, details, "PUT", null).toString());
}
Also used : DefaultOAuthURLStreamHandlerFactory(org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory) HashMap(java.util.HashMap) Map(java.util.Map) TreeMap(java.util.TreeMap) URL(java.net.URL) ProtectedResourceDetails(org.springframework.security.oauth.consumer.ProtectedResourceDetails) OAuthConsumerToken(org.springframework.security.oauth.consumer.OAuthConsumerToken) Test(org.junit.Test)

Aggregations

HashMap (java.util.HashMap)3 Test (org.junit.Test)3 DefaultOAuthURLStreamHandlerFactory (org.springframework.security.oauth.consumer.net.DefaultOAuthURLStreamHandlerFactory)3 URL (java.net.URL)2 Map (java.util.Map)2 TreeMap (java.util.TreeMap)2 OAuthConsumerToken (org.springframework.security.oauth.consumer.OAuthConsumerToken)2 ProtectedResourceDetails (org.springframework.security.oauth.consumer.ProtectedResourceDetails)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 MalformedURLException (java.net.MalformedURLException)1 SharedConsumerSecretImpl (org.springframework.security.oauth.common.signature.SharedConsumerSecretImpl)1 InvalidOAuthRealmException (org.springframework.security.oauth.consumer.InvalidOAuthRealmException)1 OAuthRequestFailedException (org.springframework.security.oauth.consumer.OAuthRequestFailedException)1 CoreOAuthConsumerSupport (org.springframework.security.oauth.consumer.client.CoreOAuthConsumerSupport)1