JWT Issuers

A named JWT signing service. Each issuer has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can have isolated trust roots.

Authorization to use an issuer is granted via standard policies: a policy rule permitting the 'update' operation on /strongbox/jwt-issuers/<name>/roles/<role>/mint lets the bearer mint JWTs constrained by that role.

Create a new jwt issuer

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Request Body schema:
name
string <name>
signing-key
required
string <leafref>

Transit key used to sign JWTs. Must be ecdsa-p256, ecdsa-p384, rsa-2048 or stronger, or ed25519. The recommendation is ecdsa-p256.

Rotation of the underlying transit key produces a new 'kid' which appears in the JWKS during the overlap window. The signing key should be configured to rotate every 3-6 months.

issuer
string

Value placed in the 'iss' claim of all JWTs issued by this service. Typically the public HTTPS URL of this issuer's OIDC discovery document.

When omitted, the issuer is auto-derived as https://api.//jwt/.

default-ttl
string <duration>
Default: "1h"

A duration in years, days, hours, minutes and seconds.

Format is [<digits>y][<digits>d][<digits>m][<digits>s].

Examples: 1y2d5h, 5h or 10m30s

Default TTL applied when a mint request does not specify a TTL and the invoked role does not override the default.

max-ttl
string <duration>
Default: "24h"

A duration in years, days, hours, minutes and seconds.

Format is [<digits>y][<digits>d][<digits>m][<digits>s].

Examples: 1y2d5h, 5h or 10m30s

Hard cap on the TTL of minted JWTs. Per-role max-ttl values further constrain this.

verbose-logging
boolean
Default: false

Enable verbose logging for mint attempts on this issuer. Useful for debugging role constraints and template expansion.

to (object) or sites (object) or deployments (object)
Default: "to"
Responses
201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict (instance exists)

503

Service Unavailable (strongbox sealed)

post/v1/config/strongbox/jwt-issuers
Request samples
name: payments-api
signing-key: payments-jwt-key
issuer: https://strongbox.example.com/jwt/payments-api
default-ttl: 1h
max-ttl: 1d
verbose-logging: false
distribute:
  to: all

Retrieve the configuration of all jwt issuers

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
keys
string <enumeration>

Retrieve only the keys for the list

Value: "true"
count
string <enumeration>

Retrieve only the number of elements in the list

Value: "true"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

get/v1/config/strongbox/jwt-issuers
Response samples
- name: payments-api
  signing-key: payments-jwt-key
  issuer: https://strongbox.example.com/jwt/payments-api
  default-ttl: 1h
  max-ttl: 1d
  verbose-logging: false
  distribute:
    to: all
  

Update a jwt issuer

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
path Parameters
jwt-issuer-name
required
string <name>

name of jwt-issuer

query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Request Body schema:
name
string <name>
signing-key
required
string <leafref>

Transit key used to sign JWTs. Must be ecdsa-p256, ecdsa-p384, rsa-2048 or stronger, or ed25519. The recommendation is ecdsa-p256.

Rotation of the underlying transit key produces a new 'kid' which appears in the JWKS during the overlap window. The signing key should be configured to rotate every 3-6 months.

issuer
string

Value placed in the 'iss' claim of all JWTs issued by this service. Typically the public HTTPS URL of this issuer's OIDC discovery document.

When omitted, the issuer is auto-derived as https://api.//jwt/.

default-ttl
string <duration>
Default: "1h"

A duration in years, days, hours, minutes and seconds.

Format is [<digits>y][<digits>d][<digits>m][<digits>s].

Examples: 1y2d5h, 5h or 10m30s

Default TTL applied when a mint request does not specify a TTL and the invoked role does not override the default.

max-ttl
string <duration>
Default: "24h"

A duration in years, days, hours, minutes and seconds.

Format is [<digits>y][<digits>d][<digits>m][<digits>s].

Examples: 1y2d5h, 5h or 10m30s

Hard cap on the TTL of minted JWTs. Per-role max-ttl values further constrain this.

verbose-logging
boolean
Default: false

Enable verbose logging for mint attempts on this issuer. Useful for debugging role constraints and template expansion.

to (object) or sites (object) or deployments (object)
Default: "to"
Responses
204

No Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

patch/v1/config/strongbox/jwt-issuers/{jwt-issuer-name}
Request samples
name: payments-api
signing-key: payments-jwt-key
issuer: https://strongbox.example.com/jwt/payments-api
default-ttl: 1h
max-ttl: 1d
verbose-logging: false
distribute:
  to: all

Delete a jwt issuer

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
path Parameters
jwt-issuer-name
required
string <name>

name of jwt-issuer

query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Responses
204

No Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

delete/v1/config/strongbox/jwt-issuers/{jwt-issuer-name}

Replace or create a new jwt issuer

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
path Parameters
jwt-issuer-name
required
string <name>

name of jwt-issuer

query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Request Body schema:
name
string <name>
signing-key
required
string <leafref>

Transit key used to sign JWTs. Must be ecdsa-p256, ecdsa-p384, rsa-2048 or stronger, or ed25519. The recommendation is ecdsa-p256.

Rotation of the underlying transit key produces a new 'kid' which appears in the JWKS during the overlap window. The signing key should be configured to rotate every 3-6 months.

issuer
string

Value placed in the 'iss' claim of all JWTs issued by this service. Typically the public HTTPS URL of this issuer's OIDC discovery document.

When omitted, the issuer is auto-derived as https://api.//jwt/.

default-ttl
string <duration>
Default: "1h"

A duration in years, days, hours, minutes and seconds.

Format is [<digits>y][<digits>d][<digits>m][<digits>s].

Examples: 1y2d5h, 5h or 10m30s

Default TTL applied when a mint request does not specify a TTL and the invoked role does not override the default.

max-ttl
string <duration>
Default: "24h"

A duration in years, days, hours, minutes and seconds.

Format is [<digits>y][<digits>d][<digits>m][<digits>s].

Examples: 1y2d5h, 5h or 10m30s

Hard cap on the TTL of minted JWTs. Per-role max-ttl values further constrain this.

verbose-logging
boolean
Default: false

Enable verbose logging for mint attempts on this issuer. Useful for debugging role constraints and template expansion.

to (object) or sites (object) or deployments (object)
Default: "to"
Responses
201

Created

204

No Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

put/v1/config/strongbox/jwt-issuers/{jwt-issuer-name}
Request samples
name: payments-api
signing-key: payments-jwt-key
issuer: https://strongbox.example.com/jwt/payments-api
default-ttl: 1h
max-ttl: 1d
verbose-logging: false
distribute:
  to: all

Retrieve the configuration of a jwt issuer

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
path Parameters
jwt-issuer-name
required
string <name>

name of jwt-issuer

query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

get/v1/config/strongbox/jwt-issuers/{jwt-issuer-name}
Response samples
name: payments-api
signing-key: payments-jwt-key
issuer: https://strongbox.example.com/jwt/payments-api
default-ttl: 1h
max-ttl: 1d
verbose-logging: false
distribute:
  to: all

Retrieve the state of all jwt issuers

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

site
string

Send the request to the specfifed site

content
string <enumeration>

Filter descendant nodes in the response

Enum: "config" "nonconfig"
keys
string <enumeration>

Retrieve only the keys for the list

Value: "true"
count
string <enumeration>

Retrieve only the number of elements in the list

Value: "true"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

503

Service Unavailable (strongbox sealed)

get/v1/state/strongbox/jwt-issuers
Response samples
- name: payments-api
  signing-key: payments-jwt-key
  issuer: https://strongbox.example.com/jwt/payments-api
  default-ttl: 1h
  max-ttl: 1d
  discovery-url: https://strongbox.example.com/jwt/payments-api
  verbose-logging: false
  distribute:
    to: all
  distribution-status:
    to: all
  

Retrieve the state of a jwt issuer

Named JWT signing services. Each issuer is independent: it has its own transit signing key, its own 'iss' claim, and its own OIDC discovery endpoint, so different relying parties can be given JWTs minted from isolated trust roots.

Authorization to mint is granted via standard policies on /strongbox/jwt-issuers/<name>/roles/<role>/mint.

SecurityaccessToken
Request
path Parameters
jwt-issuer-name
required
string <name>

name of jwt-issuer

query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

site
string

Send the request to the specfifed site

content
string <enumeration>

Filter descendant nodes in the response

Enum: "config" "nonconfig"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

503

Service Unavailable (strongbox sealed)

get/v1/state/strongbox/jwt-issuers/{jwt-issuer-name}
Response samples
name: payments-api
signing-key: payments-jwt-key
issuer: https://strongbox.example.com/jwt/payments-api
default-ttl: 1h
max-ttl: 1d
discovery-url: https://strongbox.example.com/jwt/payments-api
verbose-logging: false
distribute:
  to: all
distribution-status:
  to: all