You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wiki/backend/modules/authentication/oidc/definition.yml

176 lines
6.2 KiB

key: oidc
title: Generic OpenID Connect / OAuth2
description: OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol.
author: requarks.io
logo: https://static.requarks.io/logo/oidc.svg
icon: /_assets/icons/ultraviolet-openid.svg
color: blue-grey-8
isAvailable: true
useForm: false
usernameType: email
props:
clientId:
type: String
title: Client ID
hint: Application Client ID, as the provider issued it.
icon: key
order: 1
clientSecret:
type: String
title: Client Secret
hint: Application Client Secret, as the provider issued it.
icon: password
sensitive: true
order: 2
issuer:
type: String
title: Issuer
hint: The provider's issuer URL, e.g. https://id.example.com. Everything else is discovered from it.
icon: internet
order: 3
useDiscovery:
type: Boolean
title: Use Discovery
hint: Read the endpoints and signing keys from the issuer's /.well-known/openid-configuration. Turn off only for a provider that does not publish one, and fill in the endpoints below.
icon: rescan-document
default: true
order: 4
authorizationURL:
type: String
title: Authorization Endpoint URL
hint: Where the browser is sent to log in.
icon: enter
order: 5
if:
- { key: 'useDiscovery', eq: false }
tokenURL:
type: String
title: Token Endpoint URL
hint: Where the authorization code is exchanged for tokens.
icon: exit
order: 6
if:
- { key: 'useDiscovery', eq: false }
userInfoURL:
type: String
title: User Info Endpoint URL
hint: Optional - the ID token alone can carry everything needed.
icon: contact
order: 7
if:
- { key: 'useDiscovery', eq: false }
useQueryStringForAccessToken:
type: Boolean
title: Pass access token via GET query string to User Info Endpoint
hint: Pass the access token in an `access_token` parameter attached to the GET query string of the User Info Endpoint URL. Otherwise the access token will be passed in the Authorization header.
icon: download-from-cloud
default: false
order: 8
jwksURL:
type: String
title: JSON Web Key Set URL
hint: Where the keys that signed the ID token are published. Without it the ID token cannot be verified and logins are refused.
icon: fingerprint-scan
order: 9
if:
- { key: 'useDiscovery', eq: false }
logoutURL:
type: String
title: Logout URL
hint: Optional - Where the browser is sent once the wiki has logged somebody out, so that the provider's own session ends too — its `end_session_endpoint`. Discovery finds this on its own, which is why it is only asked for here. Without it, signing out leaves the provider still signed in and the next login goes through without a password being asked for.
icon: exit
order: 10
if:
- { key: 'useDiscovery', eq: false }
scopes:
type: String
title: Scopes
hint: Space-separated. `openid` is required; `email` is what an account is matched on here.
icon: rules
default: 'openid profile email'
order: 11
useAcrValues:
type: Boolean
title: Use ACR Values
hint: Optional - Ask the provider for a particular kind of sign-in — two-factor, a smart card, a specific policy — by naming the authentication context this wiki wants.
icon: pin-pad
default: false
order: 12
acrValues:
type: String
title: ACR Values
hint: Space-separated Authentication Context Class References, most preferred first, as the provider documents them. e.g. `urn:mace:incommon:iap:silver`, or a policy name the provider defines.
icon: rules
default: ''
order: 13
if:
- { key: 'useAcrValues', eq: true }
requireAcr:
type: Boolean
title: Require the authentication context
hint: Refuse a login whose `acr` claim is not one of the values above. Off, they are only a request — OpenID Connect lets a provider ignore them and still answer with a valid token, so without this the setting expresses a preference rather than a requirement. Turn it on once the provider is known to return the claim, since one that returns none refuses everybody.
icon: secure
default: false
order: 14
if:
- { key: 'useAcrValues', eq: true }
idClaim:
type: String
title: ID Claim
hint: Which claim carries the provider's own identifier for the account. Usually sub or id, which never changes.
icon: key
default: sub
order: 15
emailClaim:
type: String
title: Email Claim
hint: Which claim carries the email address.
icon: envelope
default: email
order: 16
displayNameClaim:
type: String
title: Display Name Claim
hint: Which claim carries the name to show. Falls back to the email address when the claim is absent.
icon: person
default: name
order: 17
pictureClaim:
type: String
title: Picture Claim
hint: Which claim carries the URL of the account's picture, fetched on login and stored as the avatar. Leave empty to let people keep whatever avatar they set here.
icon: image
default: picture
order: 18
mapGroups:
type: Boolean
title: Map Groups
hint: Put the user in the wiki groups a claim names, on every login. Only groups that already exist here are matched, by name and ignoring case — nothing is created.
icon: user-groups
default: false
order: 19
groupsClaim:
type: String
title: Groups Claim
hint: Which claim carries the group names. Either one name or a list of them.
icon: rules
default: groups
order: 20
if:
- { key: 'mapGroups', eq: true }
unassignMissingGroups:
type: Boolean
title: Unassign from groups no longer present in claim
hint: Off adds what the claim names and takes nothing away, so a membership granted here survives. On makes the provider the authority instead, and a group it stops naming is taken back — bar the ones this strategy auto-enrolls into, which are granted here to everyone it lets in.
icon: unfriend
default: false
order: 21
if:
- { key: 'mapGroups', eq: true }
refs:
callbackUrl:
title: Authorization Callback URL
hint: Register this as the redirect URI at the provider. It is the same for every provider.
icon: back
value: '{host}/_api/auth/{id}/callback'