OIDCRelyingParty

microgateway.airlock.com/v1alpha1


OIDCRelyingParty specifies how the Airlock Microgateway Engine interacts with an OpenID Provider (OP).

Warning

The OIDC feature is currently in an experimental state.

We encourage you to try it out and give feedback, but be aware that we do not recommend using it in a production environment yet, as security has not yet been hardened.
In particular, the current implementation has the following limitations, which we intend to address in future Microgateway releases:

  • The state parameter is guessable.
  • ID token and access token are stored in cookies and are thus sent to the accessing client.
apiVersion: microgateway.airlock.com/v1alpha1
kind: OIDCRelyingParty
metadata:
  name: oidc-rp-example
spec:
  oidcProviderRef:
    name: example-provider
  clientID: my-id
  credentials:
    clientSecret:
      method: BasicAuth
      secretRef:
        name: client-password
  pathMapping:
    logoutPath:
      matcher:
        exact: /logout
    redirectPath:
      matcher:
        exact: /callback
  redirectURI: "%REQ(:x-forwarded-proto)%://%REQ(:authority)%/callback"
apiVersion: microgateway.airlock.com/v1alpha1
kind: OIDCRelyingParty
metadata:
  name: default

OIDCRelyingParty

Field Type Description Required Default Allowed Values
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata yes
spec object Specification of the OIDC Relying Party configuration. yes

OIDCRelyingParty.spec

Field Type Description Required Default Allowed Values
clientID string ClientID specifies the OIDCRelyingParty “client_id”. yes
credentials object Credentials used for client authentication on the back-channel with the authorization server. yes
oidcProviderRef object OIDCProviderRef selects the OpenID Provider (OP) used to authenticate users. yes
pathMapping object PathMapping configures the action matching. yes
redirectURI string RedirectURI configures the “redirect_uri” parameter included in the authorization request.
May contain envoy command operators, e.g. ‘%REQ(:x-forwarded-proto)%://%REQ(:authority)%/callback’.
yes

OIDCRelyingParty.spec.credentials

Field Type Description Required Default Allowed Values
clientSecret object ClientSecret authenticates with the client password issued by the OpenID Provider (OP). yes

OIDCRelyingParty.spec.credentials.clientSecret

Field Type Description Required Default Allowed Values
method enum Method specifies in which format the client secret is sent with the authorization request. no BasicAuth BasicAuth, FormURLEncoded
secretRef object SecretRef specifies the kubernetes secret containing the client password with key “client.secret”. yes

OIDCRelyingParty.spec.credentials.clientSecret.secretRef

Field Type Description Required Default Allowed Values
name string Name of the resource yes

OIDCRelyingParty.spec.oidcProviderRef

Field Type Description Required Default Allowed Values
name string Name of the resource yes

OIDCRelyingParty.spec.pathMapping

Field Type Description Required Default Allowed Values
logoutPath object LogoutPath specifies which request paths should initiate a logout. yes
redirectPath object RedirectPath specifies which request paths should be interpreted as a response from the authorization endpoint. yes

OIDCRelyingParty.spec.pathMapping.logoutPath

Field Type Description Required Default Allowed Values
matcher object yes exact{}, prefix{}, suffix{}, regex{}, contains{}

OIDCRelyingParty.spec.pathMapping.logoutPath.matcher

Field Type Description Required Default Allowed Values
contains string Contains defines a substring match on the substring specified here. Empty contains match is not allowed, please use regex instead.
Only one of exact, prefix, suffix, regex or contains can be set.
no
exact string Exact defines an explicit match on the string specified here.
Only one of exact, prefix, suffix, regex or contains can be set.
no
ignoreCase bool IgnoreCase indicates whether the matching should be case-insensitive. In case of a regex match, the regex gets wrapped with a group (?i:...). no false true, false
prefix string Prefix defines a prefix match on the prefix specified here. Empty prefix is not allowed, please use regex instead.
Only one of exact, prefix, suffix, regex or contains can be set.
no
regex string Regex defines a regex match on the regular expression specified here. Google’s RE2 regex engine is used.
The regex matches only single-line by default, even with “.*”. To match a multi-line string prepend (?s) to your regex.
Only one of exact, prefix, suffix, regex or contains can be set.
no
suffix string Suffix defines a suffix match on the suffix specified here. Empty suffix is not allowed, please use regex instead.
Only one of exact, prefix, suffix, regex or contains can be set.
no

OIDCRelyingParty.spec.pathMapping.redirectPath

Field Type Description Required Default Allowed Values
matcher object yes exact{}, prefix{}, suffix{}, regex{}, contains{}

OIDCRelyingParty.spec.pathMapping.redirectPath.matcher

Field Type Description Required Default Allowed Values
contains string Contains defines a substring match on the substring specified here. Empty contains match is not allowed, please use regex instead.
Only one of exact, prefix, suffix, regex or contains can be set.
no
exact string Exact defines an explicit match on the string specified here.
Only one of exact, prefix, suffix, regex or contains can be set.
no
ignoreCase bool IgnoreCase indicates whether the matching should be case-insensitive. In case of a regex match, the regex gets wrapped with a group (?i:...). no false true, false
prefix string Prefix defines a prefix match on the prefix specified here. Empty prefix is not allowed, please use regex instead.
Only one of exact, prefix, suffix, regex or contains can be set.
no
regex string Regex defines a regex match on the regular expression specified here. Google’s RE2 regex engine is used.
The regex matches only single-line by default, even with “.*”. To match a multi-line string prepend (?s) to your regex.
Only one of exact, prefix, suffix, regex or contains can be set.
no
suffix string Suffix defines a suffix match on the suffix specified here. Empty suffix is not allowed, please use regex instead.
Only one of exact, prefix, suffix, regex or contains can be set.
no