Sample code for 30+ languages & platforms
Java

Azure REST API Access Token

See more Azure OAuth2 Examples

Demonstrates how to request an Azure REST API OAUTH2 access token.

Note: In order to access resources a Service Principal needs to be created in your Tenant. It is really convenient to do it via AZ CLI:

az ad sp create-for-rbac --name [APP_NAME] --password [CLIENT_SECRET]

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Rest;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Rest rest = new Rest();

        // URL: https://login.microsoftonline.com/TENANT_ID/oauth2/token
        boolean bTls = true;
        int port = 443;
        boolean bAutoReconnect = true;
        try {
            rest.connect("login.microsoftonline.com", port, bTls, bAutoReconnect);
        } catch (ChilkatException e) {
            System.out.println("ConnectFailReason: " + rest.getConnectFailReason());
            System.out.println(e.getLastErrorText());
            return;
        }

        // Add query params to the request.
        rest.addQueryParam("grant_type", "client_credentials");
        rest.addQueryParam("client_id", "APP_ID");
        rest.addQueryParam("client_secret", "CLIENT_SECRET");
        // Note: The resource must match the API for which you're using the access token..
        rest.addQueryParam("resource", "https://management.azure.com/");

        String strResponseBody;
        try {
            strResponseBody = rest.fullRequestFormUrlEncoded("POST", "/TENANT_ID/oauth2/token");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        int respStatusCode = rest.getResponseStatusCode();
        if (respStatusCode >= 400) {
            System.out.println("Response Status Code = " + respStatusCode);
            System.out.println("Response Header:");
            System.out.println(rest.getResponseHeader());
            System.out.println("Response Body:");
            System.out.println(strResponseBody);
            return;
        }

        JsonObject json = new JsonObject();
        json.load(strResponseBody);
        json.setEmitCompact(false);
        System.out.println(json.emit());

        // The result is an access token such as the following:

        // {
        //   "token_type": "Bearer",
        //   "expires_in": "3600",
        //   "ext_expires_in": "3600",
        //   "expires_on": "1557864616",
        //   "not_before": "1557860716",
        //   "resource": "https://management.azure.com/",
        //   "access_token": "eyJ0eXAiOiJKV1QiL ... 20UFDDOHEyUg"
        // }

        // We'll save this JSON to a file for other examples to use..
        json.writeFile("qa_data/tokens/azureToken.json");
    }
}