Client Capabilities

Client Capabilities define what kinds of actions should be allowed for a given client.

The capabilities can be broadly divided into two types:

  • grant types: enable certain authorization flows .
  • token types: define what a client is allowed to do with obtained tokens, such as introspecting them.

The table below describes each client capability:

CapabilityTypeDescription
authorization-codeGrant typeAllows Authorization Code Grant
implicitGrant typeAllows Implicit Grant
resource-owner-password-credentialsGrant typeAllows Resource Owner Password Credentials Grant
client_credentialsGrant typeAllows Client Credentials Grant
assisted-tokenGrant typeAllows Assisted Token Grant
cibaGrant typeAllows Backchannel Authentication Grant
introspectionTokenAllows Token Introspection
token-exchangeTokenAllows Token Exchange
device-flowTokenAllows Device Flow

Configuration Client Capabilities#

Before being added to a Client, a Capability must be configured in the Token Profile:

Admin UIProfilesOauthOauth DevClient Settings

Configure Client Capabilities in the Token Profile.

The screenshot below shows how to enable the Code Flow capability:

Enabling the Code Flow Capability
Enabling the Code Flow Capability. (Admin UI version: 10.6)

Many Client Capabilities don’t require any configuration, just switching them on is enough.

Only those Client Capabilities which have been enabled in the Token Profile will be available to configure on specific OAuth Clients.

Adding Capabilities to Clients#

Once the Profile has been configured, individual clients may be configured with one or more of the enabled Capabilities.

Admin UIProfilesOauthOauth DevClientsClient

Configure Client Capabilities in the Token Profile.

Adding several Client Capabilities to a Client
Adding several Client Capabilities to a Client. (Admin UI version: 10.6)

A client with the Capabilities shown above would be able to perform the Client Credentials OAuth flow, for example, but not the Device Flow, since it has no such Capability.

For Dynamic Clients, the grant_types values are mapped to the equivalent Client Capability.

Hybrid Capabilities#

OpenID Connect defines a set of flows referred to as hybrid flows. These are not entirely new flows but rather, as the name suggests, combinations of available flows such as authorization code and implicit.

These are not defined as separate capabilities in the Curity Identity Server, but will automatically be allowed if OpenID Connect is enabled and the capabilities involved are allowed separately.

To continue with the example, if both authorization code and implicit are configured to be allowed capabilities for a client, OpenID Connect is allowed on the profile and the client is granted the openid scope, then hybrid flows such as token code id_token will be allowed automatically.

Was this helpful?