Autorisierung

Der Zugriff auf Web-Ressourcen kann mithilfe von Bearer Tokenopen in new window 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 Pointopen in new window 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

Konfiguration

Dies sind die Konfigurations-Optionen für den Key auth in cfg.yml.

NameDefaultBeschreibungTypSeit
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 Connectopen in new window 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 Keycloakopen in new window.


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

NameDefaultBeschreibungTypSeit
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

NameDefaultBeschreibungTypSeit
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

NameDefaultBeschreibungTypSeit
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.

NameDefaultBeschreibungTypSeit
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.

NameDefaultBeschreibungTypSeit
clientId
Eine Client-Id die im Identity-Provider registriert ist. Der zugehörige Client muss Authorization Code Flowopen in new window 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.0open in new window, XACML REST 1.1open in new window und XACML JSON 1.1open in new window oder XACML JSON 1.0open in new window implementieren werden unterstützt.

Eine verbreitete Open-Source Implementierung ist AuthzForce Server (Community Edition)open in new window.


auth:
  providers:
    policies:
      type: XACML_JSON
      endpoint: https://my-authzforce/policies/domains/ldproxy/pdp
      version: 1.0

NameDefaultBeschreibungTypSeit
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.0open in new window oder GeoXACML 1.0open in new window. 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