Back to Examples

HTTP client - OAuth2 password grant type

The http:Client can connect to a service that is secured with the OAuth2 password grant type by adding the Authorization: Bearer <token> header to each request. The required configurations for this grant type can be specified in the auth field of the client configuration. Use this grant type when you need to exchange the user's credentials for an access token.

import ballerina/http;
import ballerina/oauth2;
import ballerina/io;

type Album readonly & record {
    string title;
    string artist;
};

public function main() returns error? {
    // Defines the HTTP client to call the OAuth2 secured APIs.
    http:Client albumClient = check new ("localhost:9090",
        auth = {
            tokenUrl: "https://localhost:9445/oauth2/token",
            username: "admin",
            password: "admin",
            clientId: "FlfJYKBD2c925h4lkycqNZlC2l4a",
            clientSecret: "PJz0UhTJMrHOo68QQNpvnqAY_3Aa",
            scopes: "admin",
            refreshConfig: oauth2:INFER_REFRESH_CONFIG,
            clientConfig: {
                secureSocket: {
                    cert: "../resource/path/to/public.crt"
                }
            }
        },
        secureSocket = {
            cert: "../resource/path/to/public.crt"
        }
    );
    Album[] payload = check albumClient->/albums;
    io:println(payload);
}

Prerequisites

Run the client program by executing the command below.

$ bal run http_client_oauth2_password_grant_type.bal[{"title":"Blue Train","artist":"John Coltrane"},{"title":"Jeru","artist":"Gerry Mulligan"}]

Related links

PreviousOAuth2 client credentials grant type
NextOAuth2 refresh token grant type