Skip to main content

2 Legged OAuth 1.0 with Java Spring REST Client Example

Today I am going to show you how to consume an oAuth 1.0 secured rest service using a java spring rest template class.

We can create a simple standalone class to do this exercise.  so let's start by creating simple java spring application.

1. Let's add a new class to the project as MyOAuthSample.java

2. Create a main method so we can execute the application independently. In the main method we will create an instance of MyOAuthSample class and call the showCourseMode() method.

    public static void main(String[] args) {
        new MyOAuthSample().showCourseMode();
    }


3. Write showCourseMode() method. here we will be using spring provided  OAuthRestTemplate class to call the rest service. This template requires OAuth parameters to create. they are passed via getResouces().

    private void showCourseMode() {
        OAuthRestTemplate authRestTemplate=new OAuthRestTemplate(getResouces());
      }


4. Create getResouces() method as following. Here we will be using BaseProtectedResourceDetails which is an implementation of ProtectedResourceDetails interface. Set consumer key and shared the secret as below.

    private ProtectedResourceDetails getResouces() {
        BaseProtectedResourceDetails resourceDetails=new BaseProtectedResourceDetails();
        resourceDetails.setConsumerKey("yourConsumerKey");
        resourceDetails.setSharedSecret(new SharedConsumerSecretImpl("yourSharedSecret"));
        return resourceDetails;
    }



5. Now let's add a response type object. Here I am creating it as CourseDetailsRestResponse. this class will be used to map the response directly. Here I have added only a single parameter so the response will be only to a single value and other values are skipped.

package com.nuwan.rest.callCourseMgmt;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlType(propOrder = { "courseMode" })
@XmlRootElement(name = "course")
public class CourseDetailsRestResponse {

    private String courseMode;

    @XmlElement
    public String getCourseMode() {
        return courseMode;
    }

    public void setCourseMode(String courseMode) {
        this.courseMode = courseMode;
    }

}


6. Now I will create another method to create the rest URL.

    private URI getUri() {
        URI uri=null;
        try {
            uri=new URI("http://yoururl.com/rest/course/nafshun46086");
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return uri;
    }


7.  Now every thing is ready so we can call the rest service. so add below lines to the end of the  method showCourseMode().

  CourseDetailsRestResponse response=
        authRestTemplate.getForObject(getUri(), CourseDetailsRestResponse.class);
        System.out.println(response.getCourseMode());



Following is the full source code of the project.

MyOAuthSample.java

package com.nuwan.rest.callCourseMgmt;

import java.net.URI;
import java.net.URISyntaxException;

import org.springframework.security.oauth.common.signature.SharedConsumerSecretImpl;
import org.springframework.security.oauth.consumer.BaseProtectedResourceDetails;
import org.springframework.security.oauth.consumer.ProtectedResourceDetails;
import org.springframework.security.oauth.consumer.client.OAuthRestTemplate;

public class MyOAuthSample{

    public static void main(String[] args) {
        System.out.println(mycalsss.class.toString());
        new MyOAuthSample().showCourseMode();

    }

    private void showCourseMode() {
        OAuthRestTemplate authRestTemplate=new OAuthRestTemplate(getResouces());
        CourseDetailsRestResponse response=
        authRestTemplate.getForObject(getUri(), CourseDetailsRestResponse.class);
        System.out.println(response.getCourseMode());
    }

    private URI getUri() {
        URI uri=null;
        try {
            uri=new URI("http://yoururl.com/rest/course/nafshun46086");
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return uri;
    }

    private ProtectedResourceDetails getResouces() {
        BaseProtectedResourceDetails resourceDetails=new BaseProtectedResourceDetails();
        resourceDetails.setConsumerKey("yourConsumerKey");
        resourceDetails.setSharedSecret(new SharedConsumerSecretImpl("yourSharedSecret"));
        return resourceDetails;
    }

}


CourseDetailsRestRespons.

package com.nuwan.rest.callCourseMgmt;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlType(propOrder = { "courseMode" })
@XmlRootElement(name = "course")
public class CourseDetailsRestResponse {

    private String courseMode;

    @XmlElement
    public String getCourseMode() {
        return courseMode;
    }

    public void setCourseMode(String courseMode) {
        this.courseMode = courseMode;
    }

}

Comments

Popular posts from this blog

Oracle Database 12c installation on Ubuntu 16.04

This article describes how to install Oracle 12c 64bit database on Ubuntu 16.04 64bit. Download software  Download the Oracle software from OTN or MOS or get a downloaded zip file. OTN: Oracle Database 12c Release 1 (12.1.0.2) Software (64-bit). edelivery: Oracle Database 12c Release 1 (12.1.0.2) Software (64-bit)   Unpacking  You should have following two files downloaded now. linuxamd64_12102_database_1of2.zip linuxamd64_12102_database_2of2.zip Unzip and copy them to \tmp\databases NOTE: you might have to merge two unzipped folders to create a single folder. Create new groups and users Open a terminal and execute following commands. you might need root permission. groupadd -g 502 oinstall groupadd -g 503 dba groupadd -g 504 oper groupadd -g 505 asmadmin Now create the oracle user useradd -u 502 -g oinstall -G dba,asmadmin,oper -s /bin/bash -m oracle You will prompt to set to password. set a momorable password and write it down. ...

DBCA : No Protocol specified

when trying to execute dbca from linux terminal got this error message. now execute the command xhost, you probably receiving No protocol specified xhost:  unable to open display ":0" issue is your user is not allowed to access the x server. You can use xhost to limit access for X server for security reasons. probably you are logged in as oracle user. switch back to default user and execute xhost again. you should see something like SI:localuser:nuwan solution is adding the oracle to access control list xhost +SI:localuser:oracle now go back to oracle user and try dbca it should be working

Java Multithreading 2021

Thread Thread Is a subprocess that follows a separate execution path, different stack frame and executes independently but they share the same process resources.  Multithreading is the process of executing one or more threads simultaneously that helps in executing multiple tasks at the same time. Advantages less memory fast efficient Supports multitasking Exception in one thread does not affect the other    Thread lifecycle New Runnable Running Non-Runnable Terminated   Ways to create a thread? Extending Thread class Implementing Runnable class   Thread.start() vs Thread.run() Class java.lang.Thread .start() Creates a new thread and the run() method is executed on the newly created thread. Can’t be invoked more than one time otherwise throws java.lang.IllegalStateException.  Interface java.lang.Runnable.run(), No new thread is created and the run() method is executed on the calling thread itself. Multiple invocation is possible   Constructors of a th...