UMA Service#

New in version 2.0.

Starting in 2.0, ESS provides a User Managed Access Grant 2.0 (UMA) service. This service allows clients to exchange a token or credential in one format for an access token that can be used when interacting with a Pod resource. For example, a client can exchange an OpenID Connect ID token along with one or more Verifiable Credential documents for a single access token.

ESS’ UMA service is responsible for handling the UMA authorization flow.

If an agent tries to access a Pod resource on ESS, ESS directs the resource request to the UMA authorization service which checks to see if the agent has the appropriate access privileges:

  • If the agent does not have the appropriate access privileges, the UMA flow allows for the user to acquire the appropriate access privilege through an iterative exchange (e.g., first with an access grant VC and then with the ID token). These access privileges are enforced with the ACP data model.

UMA Service Endpoint#

By default, the ESS UMA Service runs from the following root URL:

https://uma.<ESS Domain>

To change the root UMA service URL, see INRUPT_UMA_ISSUER.

Discovery#

ESS provides a metadata resource /.well-known/uma2-configuration from the root UMA service URL:

https://uma.<ESS DOMAIN>/.well-known/uma2-configuration

The endpoint returns the current deployment’s UMA service configuration.

Configuration#

As part of the installation process, Inrupt provides base Kustomize overlays and associated files that require deployment-specific configuration inputs.

The following configuration options are available for the service and may be set as part of updating the inputs for your deployment. The Inrupt-provided base Kustomize overlays may be using updated configuration values that differ from the default values.

Required#

INRUPT_UMA_ISSUER#

The URI of the issuer service.

See also:

INRUPT_UMA_VC_VERIFIER#

The URI of the VC HTTP API verifier.

SMALLRYE_JWT_SIGN_KEY_LOCATION#

The location of a signing key in JWK format.

See also:

QUARKUS_GRPC_CLIENTS_AUTHZ_HOST#

The gRPC host of the Authorization Server.

QUARKUS_GRPC_CLIENTS_AUTHZ_PORT#

The gRPC port of the Authorization Server.

Kafka Configuration#

KAFKA_BOOTSTRAP_SERVERS#

Default: localhost:9092

Comma-delimited list of Kafka broker servers for use by ESS services, including this service.

Setting KAFKA_BOOTSTRAP_SERVERS configures ESS to use the same Kafka instance(s) for all its Kafka message channels (e.g., solidresource and auditv1out message channels). This service uses the auditv1out message channel.

Note

Inrupt-provided overlays default to using KAFKA_BOOTSTRAP_SERVERS.

To use a different Kafka instance for the auditv1out channel, use specific message channel configuration.

See also ESS’ Kafka Configuration.

INRUPT_KAFKA_AUDITV1EVENTSENCRYPTED_CIPHER_PASSWORD#

The strong cipher key to use when running auditing with encrypted messages.

Optional#

QUARKUS_LOG_LEVEL#

Default: INFO

Logging level.

INRUPT_UMA_DPOP_ALGORITHMS#

Default: ES256, RS256

The permitted DPoP proof algorithms.

SMALLRYE_JWT_NEW_TOKEN_LIFESPAN#

Default: 300

The number of seconds that tokens will live.

INRUPT_VC_ISSUER#

The discoverable issuer of verifiable credentials.

INRUPT_JWT_ISSUER_ALLOW_LIST#

A comma-separated list of trusted Solid-OIDC issuers (i.e., identity providers).

See also INRUPT_JWT_ISSUER_DENY_LIST.

INRUPT_JWT_ISSUER_DENY_LIST#

A comma-separated list of disallowed Solid-OIDC issuers.