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

Popular posts from this blog

Developing Prepopulate Adapter with OIM 11g R2

1.      Prepopulate Adapter in OIM uses the plugin point oracle.iam.request.plugins.PrePopulationAdapte r. 2.      Write the Java code which returns the value which has to be populated on the form. 3.      This code will implement the plugin point oracle.iam.request.plugins.PrePopulationAdapte r. Code Snippet: - package com.oracle.oim.utility.eventhandler; import java.io.Serializable; import java.util.Iterator; import java.util.List; import java.util.logging.Logger; import oracle.iam.identity.exception.NoSuchUserException; import oracle.iam.identity.exception.UserLookupException; import oracle.iam.identity.usermgmt.api.UserManager; import oracle.iam.identity.usermgmt.vo.User; import oracle.iam.platform.Platform; import oracle.iam.platform.authz.exception.AccessDeniedException; import oracle.iam.request.exception.RequestServiceException; import oracle.iam.request.vo.Beneficiary; import oracle.iam.request.vo.RequestData; public c

OIM Tuning

Application Module tuning is a critical setting which will affect the UI performance. Following are the recommended application module settings for OIM and these are already set out-of-box (OOB) in later releases of OIM 11g R2. Ensure that these settings are implemented as recommended in your environment. -Djbo.ampool.doampooling=true -Djbo.ampool.minavailablesize=1 -Djbo.ampool.maxavailablesize=120 -Djbo.recyclethreshold=60 - Djbo.ampool.timetolive=-1 -Djbo.load.components.lazily=true - Djbo.doconnectionpooling=true -Djbo.txn.disconnect_level=1 - Djbo.connectfailover=false -Djbo.max.cursors=5 - Doracle.jdbc.implicitStatementCacheSize=5 - Doracle.jdbc.maxCachedBufferSize=19 open DOMAIN_HOME/bin/setDomainEnv.sh file for the WebLogic Server instance.find these lines: JAVA_OPTIONS="${JAVA_OPTIONS}" export JAVA_OPTIONS and change it to: JAVA_OPTIONS="-Djbo.ampool.doampooling=true -Djbo.ampool.minavailablesize=1 -Djbo.ampool.maxavailablesize=120 -D

What is Application Instance

Application instance is a provisionable entity. It is a combination of IT resource instance (target connectivity and connector configuration) and resource object (provisioning mechanism) . Creating and managing application instances are performed by using the Oracle Identity System Administration. Once Created Application Instance can be requested from the catalog. Application instances can be connected or disconnected.  Connected application  instance -It has a connector defined for the provisioning of entities. Account is created in the target system real time in case of connected Application Instance. Disconnected  application instance - It is used for the provisioning of a disconnected resource, for which  a connector is not defined, and therefore, the provisioning is performed manually by the administrator. A mail trigger system can also be attached which sends the account creation/modification/deletion mails to the application owner.