Autorisierung
Der Zugriff auf Web-Ressourcen kann mithilfe von Bearer Token beschränkt werden. Um solche Tokens zu validieren und auszuwerten muss ein Identity-Provider (type
ist OIDC
, USER_INFO
oder JWT
) in der Konfiguration definiert werden. Aktuell wird nur ein einziger Identity-Provider unterstützt, weitere werden ignoriert.
Ein zusätzlicher Autorisierungs-Layer kann mithilfe eines Policy Decision Point aktiviert werden. Um das zu tun, muss ein Provider mit type: XACML_JSON
in der Konfiguration definiert werden. Aktuell wird nur ein einziger Policy-Decision-Provider unterstützt, weitere werden ignoriert.
Provider Typen
OIDC
: Identity-Provider, siehe OpenID ConnectUSER_INFO
: Identity-Provider, siehe User-Info-EndpointJWT
: Identity-Provider, siehe JWT-Signing-KeyXACML_JSON
: Policy-Decision-Provider, siehe XACML JSON
Konfiguration
Dies sind die Konfigurations-Optionen für den Key auth
in cfg.yml
.
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
providers | {} | Eine Map mit Provider-Definitionen. Keys sind Nutzer-definierte Ids, Werte sind Provider-Definitionen mit einem type . Siehe oben für unterstützte Typen. | object | v3.5 |
OpenID Connect
Bei OpenID Connect werden die signierten JSON Web Token mithilfe der Zertifikate validiert, die der Konfigurations-Endpunkt bereitstellt, und die Claims werden direkt aus dem Token extrahiert.
Eine verbreitete Open-Source Implementierung ist Keycloak.
auth:
providers:
oidc-ldproxy-integrated:
type: OIDC
endpoint: https://my-keycloak/realms/ldproxy/.well-known/openid-configuration
login:
clientId: ldproxy-integrated
claims:
userName: preferred_username
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
type | Immer OIDC . | string | v3.5 | |
claims | see below | Mapping von Token-Claims zu ldproxy-Claims, siehe Claims Mapping. | object | v3.5 |
login | null | Login Einstellungen, siehe Login. | object | v3.5 |
endpoint | Der OpenID Connect Konfigurationsendpunkt, eine URL endend mit .well-known/openid-configuration . | string | v3.5 |
User-Info-Endpoint
Ein Endpoint der dafür verantwortlich ist, das Token zu validieren und die benötigten Claims zurückzuliefern.
auth:
providers:
userinfo-custom:
type: USER_INFO
endpoint: https://my-userinfo-endpoint?token={token}
claims:
userName: name
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
type | Immer USER_INFO . | string | v3.5 | |
claims | see below | Mapping von Token-Claims zu ldproxy-Claims, siehe Claims Mapping. | object | v3.5 |
endpoint | Ein URL-Template, {token} wird durch das Token ersetzt. | string | v3.5 |
JWT-Signing-Key
Ein Signing-Key wird verwendet um JSON Web Tokens zu validieren und die Claims werden direkt aus dem Token extrahiert.
auth:
providers:
jwt-custom:
type: JWT
signingKey: 'nurrK3JeUC3ccqs5CESFzgjCsCj3omS+PxDvMeSngqM='
claims:
userName: user
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
type | Immer JWT . | string | v3.5 | |
claims | see below | Mapping von Token-Claims zu ldproxy-Claims, siehe Claims Mapping. | object | v3.5 |
signingKey | Signing-Key für JSON Web Tokens. | string | v3.5 |
Claims Mapping
Hier wird definiert, wie ldproxy benötigte Informationen aus dem Token extrahieren kann. Die Werte müssen Claims im Token entsprechen. Verschachtelte JSON Objekte werden unterstützt, die Werte können einen Pfad wie foo.bar
sein.
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
userName | sub | Der Claim, der den Benutzernamen enthält. | string | v3.5 |
permissions | roles | Der Claim, der die Berechtigungen des Benutzers enthält. | string | v3.5 |
audience | aud | Der Claim, der die Zielgruppe (Audience) enthält. | string | v3.5 |
scopes | scope | Der Claim, der die Gültigkeitsbereiche (Scopes) enthält. | string | v3.5 |
Login
Dies erlaubt in ldproxy integrierten API-Clients die automatische Weiterleitung zum Login-Formular des Identity-Providers.
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
clientId | Eine Client-Id die im Identity-Provider registriert ist. Der zugehörige Client muss Authorization Code Flow unterstützen. | string | v3.5 | |
clientSecret | null | Optionales Client-Secret für die angegebene Client-Id. | string | v3.5 |
XACML JSON
Policy Decision Points die XACML 3.0, XACML REST 1.1 und XACML JSON 1.1 oder XACML JSON 1.0 implementieren werden unterstützt.
Eine verbreitete Open-Source Implementierung ist AuthzForce Server (Community Edition).
auth:
providers:
policies:
type: XACML_JSON
endpoint: https://my-authzforce/policies/domains/ldproxy/pdp
version: 1.0
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
type | Immer XACML_JSON . | string | v3.5 | |
endpoint | Der Policy Decision Point. | string | v3.5 | |
version | 1.1 | XACML JSON Version, entweder 1.1 oder 1.0 . | string | v3.5 |
mediaType | application/xacml+json;charset=UTF-8 | Media type für XACML JSON, den der PDP verwendet. | string | v3.5 |
geoXacmlVersion | NONE | Optionale Unterstützung für GeoXACML 3.0 oder GeoXACML 1.0. Wenn nicht gesetzt oder NONE , werden Geometrien mit Typ string in XACML Requests gesendet, wenn 3.0 oder 1.0 wird der entsprechende GeoXACML Typ verwendet. | string | v3.5 |