Roël Couwenberg

Beveilig je applicaties met een authenticatieproxy

In het huidige digitale landschap zijn robuuste authenticatiemechanismen essentieel voor het beveiligen van applicaties. Deze authenticatieproxy-container is een veelzijdige oplossing voor scenario’s waarin basisauthenticatie niet voldoende is. Het ondersteunt meerdere authenticatiemethoden, waaronder lokaal, OAuth2, OIDC, Google en Apple. De proxy is ontworpen om samen te werken met Traefik als forward authenticatie-middleware, wat je bestaande reverse proxy-setup verbetert.

Introductie van authentication-proxy

De authentication-proxy repository biedt een Docker-image dat fungeert als een authenticatieproxy voor je applicaties. Het ondersteunt verschillende authenticatiemethoden en kan eenvoudig worden geïntegreerd met Traefik als forward authenticatie-middleware. Hier zijn enkele belangrijke kenmerken:

Voorbeeld

services:
  traefik:
    image: traefik:v2.2
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.rule=Host(`traefik.x.y`)"
      - "traefik.http.services.traefik.loadbalancer.server.port=8080"
      - "traefik.http.routers.traefik.entrypoints=web"
      - "traefik.http.routers.traefik.middlewares=auth"
      - "traefik.http.middlewares.auth.forwardauth.address=http://auth:3000"

  auth:
    build: .
    environment:
      - AUTH_HOST=auth.x.y
      - COOKIE_HOSTS=auth.x.y
      - COOKIE_HOSTS_USE_ROOT=true
      - ACCESS_TOKEN_SECRET=x
      - REFRESH_TOKEN_SECRET=x
      - LOCAL_LOCAL_USERS=user:$$apr1$$PJ3UdeuW$$sdScbEB7d/HK0mFIx/oN1. # user:password
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.auth.rule=Host(`auth.x.y`)"
      - "traefik.http.services.auth.loadbalancer.server.port=3000"
      - "traefik.http.routers.auth.entrypoints=web"

  whoami:
    image: containous/whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`whoami.x.y`)"
      - "traefik.http.services.whoami.loadbalancer.server.port=80"
      - "traefik.http.routers.whoami.entrypoints=web"
      - "traefik.http.routers.whoami.middlewares=auth"

Om aan de slag te gaan, kun je de authentication-proxy bekijken en de instructies in de README volgen.