Access Management 7.3.2

Customize OAuth 2.0

AM includes several plugin points that let you extend OAuth 2.0 authorization server functionality, such as modifying access tokens or customizing how AM processes scopes.

Supported plugin points

The following table describes the OAuth 2.0 plugin points supported in AM.

Plugin Description

Modify the OAuth2 access token before the token is persisted or returned to the client.

Return additional data from an authorization request.

Evaluate and return an OAuth2 access token’s scope information.

Customize the set of requested scopes for authorize, access token, refresh token and back channel authorize requests.

Fetch the resource owner’s information based on an issued access token.

How to build and use a custom OAuth 2.0 plugin

AM supports two types of custom plugin: scripted and Java. The following sections describe how to deploy a custom plugin according to your implementation type.

Customize with a script

AM provides a scripting engine and template scripts for you to extend OAuth 2.0 behavior by running scripts stored as configuration, rather than by updating code. Creating and modifying plugin scripts enables rapid development without the need to change or recompile core AM.

Create or modify an OAuth 2.0 plugin script

To create or edit a script that is saved for the current realm, or modify a default script that is available to all realms, you can either:

For more information, refer to Scripting.

Configure AM to use an OAuth 2.0 plugin script

After creating your plugin script, you must configure AM to use the plugin.

  1. In the AM admin UI, go to Realms > Realm Name > Services > OAuth2 Provider > Plugins to configure a specific OAuth 2.0 provider.

    To set your plugin as the default for all new OAuth2 providers, go to Configure > Global Services > OAuth2 Provider > Plugins.

    Alternatively, to configure plugins at the client level, go to Realms > Realm Name > Applications > OAuth 2.0 > Clients > Client ID > OAuth2 Provider Overrides.

  2. Set the Plugin Type attribute to SCRIPTED.

  3. Set the Script attribute to the name of the script you want to use.

    For example, for the scope validation plugin, select the name of your script from the Scope Validation Script drop-down list. This list contains all the scripts that are saved for the current realm for the particular plugin type, including the default scripts that AM provides. In the case of the scope validation plugin, the list displays all scripts of type OAuth2 Validate Scope.

    For further details about setting plugin configuration, refer to the OAuth2 provider configuration and Client overrides.

  4. Save your changes.

Customize with Java

Write a Java class that implements one of the org.forgerock.oauth2.core.plugins interfaces. AM provides sample code and some default implementation classes for each of the plugin interfaces.

Create and deploy a Java OAuth 2.0 plugin

  1. Create a custom Java class that implements the appropriate plugin interface, and package in a JAR file.

    To use an existing example, download the sample code and build a JAR file by following the steps described in How do I access and build the sample code provided for PingAM? in the Knowledge Base.

  2. Copy the built JAR file to the /WEB-INF/lib folder where you deployed AM.

  3. Restart AM or the container in which it runs.

Configure AM to use a Java OAuth 2.0 plugin

After creating your plugin, you must configure AM to use the plugin.

  1. In the AM admin UI, go to Realms > Realm Name > Services > OAuth2 Provider > Plugins to configure a specific OAuth 2.0 provider.

    To set your plugin as the default for all new OAuth2 providers, go to Configure > Global Services > OAuth2 Provider > Plugins.

    Alternatively, to configure plugins at the client level, go to Realms > Realm Name > Applications > OAuth 2.0 > Clients > Client ID > OAuth2 Provider Overrides.

  2. Set the Plugin Type attribute to JAVA.

  3. Set the Plugin Implementation Class attribute.

    For example, for the scope evaluation plugin, type the fully qualified name of your plugin class in the Scope Evaluation Plugin Implementation Class field.

    For further details about setting plugin configuration, refer to the OAuth2 provider configuration and Client overrides.

  4. Save your changes.

OAuth 2.0 scripting API

For information about the API available for implementing scripts, refer to:

  • Accessing HTTP Services

  • Debug logging

  • The AccessToken interface provides methods that let you view or modify the data associated with an access token.

  • The AMIdentity interface represents an identity that is managed by AM.

  • The SSOToken interface contains SSO token and authentication information, as well as session-related properties.

The following properties are common to all OAuth 2.0 scripts and always present for all script types. Refer to individual plugins for additional properties specific to the script type.

Binding Information

httpClient

An HTTP client for making external HTTP requests.

logger

The logger instance specific to the script type. Use the logger to write a message to the AM debug log.

For more information, refer to Debug Logging.

scriptName

The display name of the script.