11 Jan 2021

Implementing OAuth in Maltego: A Short Guide

Maltego Team

OAuth is an open standard for authorization which allows a resource provider (RP) to request access to a user’s resources from an identity provider (IDP) subject to the user’s approval. It is useful when a service needs to utilize the resources of another service. For example, the Maltego Standard Transforms read a user’s LinkedIn feed on their behalf without sharing login credentials with Maltego.

In Maltego, we use OAuth to allow our users to log into third-party providers with their credentials and have an access token returned to the tool. This access token can then be sent to the Transform Server, which in turn can request information from the provider on behalf of the Maltego user.

Maltego LinkedIn OAuth

OAuth in Maltego is mostly used by clients who use or develop custom Maltego Transform integrations and would like to add user authorization functionality to their Transforms.

Currently, Maltego supports OAuth 2.0. However, OAuth 1.0a is still supported for backward compatibility purposes. There are different grant types which change the OAuth flow. Maltego natively supports the Authorization Code Grant flow.

Let’s have a look at how we can use OAuth in Maltego.

Integrating OAuth in Maltego 🔗︎

Initially, users must develop Transforms which use OAuth. This way, the Maltego Desktop Client will acquire the OAuth token on behalf of the user, encrypt it using the customer defined public key, and send it to the Transforms for further use. The diagram below illustrates the process.

OAuth Workflow

Steps to Integrating OAuth in Maltego 🔗︎

  1. Configure the required OAuth Setup (App Develop Credentials) on the Resource Provider service such as LinkedIn, Okta or Azure, and configure the OAuth Settings in the Maltego Transform Distribution Server (TDS)

    OAuth configuration in Maltego

    OAuth configuration in Maltego

  2. Install the Transform Seed from Step 1 in the Maltego Desktop Client

    Install Transform Seed

  3. Log in to the resource provider’s web portal and authorize permissions

    Log into OAuth

    Log into OAuth

  4. Request authorization token from the identity provider (IDP)

  5. The IDP responds with authorization token

  6. The web browser sends the token to the Maltego Desktop Client call-back URL and the Client then encrypts the token

  7. The Maltego Desktop Client encrypts the token using the public key configured in Step1 and sends the encrypted token as part of a Transform request

  8. The Transform code decrypts the ciphered token using private key from Step 1. Next, the decrypted token can be sent to the resource provider (RP) and get permitted resources or to check token validity

  9. Return requested resources

  10. Return Transform results

Token Encryption in Maltego 🔗︎

The OAuth Token is encrypted as soon as it is received from the IDP through the browser redirect. During OAuth settings configuration in the ITDS (Step 1 above), the customer is required to generate a public cryptography key pair.

Token Encryption in Maltego

The public key is added as a configuration setting and is used by the Maltego Desktop Client to encrypt the token acquired from the browser redirect once a user completes the authorization process on the resource provider’s authorization web page. The encrypted token is sent to the Transform Server, and the Transform code owned by the customer can then decrypt it and use the resulting code to retrieve resources from a resource server.

For technical guides, please refer to the following detailed examples in our online documentation:


OAuth may appear to be a complicated topic, but we at Maltego strive to simplify configuration and integration with numerous OAuth providers. We also provide both technical support for OAuth integrations as well as bespoke Transform development services.

For more interesting tutorials, case studies and updates, follow us on Twitter and LinkedIn and subscribe to our email newsletter.

By clicking on "Subscribe", you agree to the processing of the data you entered and you allow us to contact you for the purpose selected in the form. For further information, see our Data Privacy Policy.