Skip to main content

Retrieving OAM OAuth access token through Java

Create a OAuth client in OAM. Encode the username and password of the client in "username:password" format. This can be achieved from https://www.base64encode.org/ site.

Once OAuth client is created it can be checked using below command:

curl -i -H 'Authorization: Basic <Encoded Username:Password>' -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST http://<OAM_host>:14100/ms_oauth/oauth2/endpoints/oauthservice/tokens -d 'grant_type=password&username=<OAM_Admin>&password=<OAM_Admin_Pwd>'  

If the response is 200 and access token is retrieved then OAuth service is working fine.

Same access token can be retrieved using below sample code :


import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import org.json.JSONObject;
import java.net.HttpURLConnection;
import java.net.URL;

public class CheckRest {

public static void main(String[] args) {
URL url;
try {

url = new URL("http://<OAM_Host>:14100/ms_oauth/oauth2/endpoints/oauthservice/tokens");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
httpCon.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
httpCon.setRequestProperty("Authorization","Basic b21zc2NsaWVudDpPcmFjbGUxMjM=");
httpCon.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
String urlParameters = "grant_type=password&username=<OAM_Admin>&password=<OAM_Admin_Pwd>";

// Send post request
httpCon.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(httpCon.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();

int responseCode = httpCon.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(new InputStreamReader(
httpCon.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) 
{
response.append(inputLine);
}
in.close();

// print result
System.out.println(response.toString());
JSONObject results = new JSONObject(response.toString());
results.get("access_token");
System.out.println("access token = " + results.get("access_token"));

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

Comments

  1. Hi! Do you have some tutorial about how to configure this in OAM?
    Tks!

    ReplyDelete

Post a Comment