Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

Azure OAuth2 Client Credentials Grant Flow

See more OAuth2 Examples

Demonstrates how to get an OAuth2 access token for an Azure Registered App using the Client Credentials Grant Flow.

Note: Your Azure app must be registered as a single-tenant app to use client credentials.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpRequest;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.JsonObject;

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.

        Http http = new Http();

        HttpRequest req = new HttpRequest();
        req.addParam("client_secret", "CLIENT_SECRET");
        req.addParam("client_id", "CLIENT_ID");

        // See Understanding Scopes in Azure OAuth2 Client Credentials Flow
        req.addParam("scope", "https://graph.microsoft.com/.default");

        req.addParam("grant_type", "client_credentials");

        // Note: Your Azure app must be registered as a single-tenant app to use client credentials.
        // Use your own tenant ID, for example 4d8fdd66-66d1-43b0-ae5c-e31b4b7de5cd
        String url = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token";

        req.setHttpVerb("POST");
        req.setContentType("application/x-www-form-urlencoded");

        HttpResponse resp = new HttpResponse();
        try {
            http.httpReq(url, req, resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        int statusCode = resp.getStatusCode();
        System.out.println("Response status code = " + statusCode);

        JsonObject json = new JsonObject();
        json.load(resp.getBodyStr());

        json.setEmitCompact(false);
        System.out.println(json.emit());

        // Sample successful output:

        // {
        //   "token_type": "Bearer",
        //   "expires_in": 3599,
        //   "ext_expires_in": 3599,
        //   "access_token": "eyJ0eX...K0jOERg"
        // }

        if (statusCode == 200) {
            json.writeFile("qa_data/tokens/azureClientCredentialsToken.json");
            System.out.println("Success.");
        } else {
            System.out.println("Failed.");
        }
    }
}