Basic Auth not working when specified explicity in Traefik.yml file

I am using Docker with a cookiecutter Django boilerplate. The first time I use Traefik and I like it so far! However I am trying to add basic auth to the whole website, but I can't seem to make it work.

My traefik.yml file:

log:
  level: INFO

entryPoints:
  web:
    # http
    address: ":80"

  web-secure:
    # https
    address: ":443"

certificatesResolvers:
  letsencrypt:
    # https://docs.traefik.io/master/https/acme/#lets-encrypt
    acme:
      email: "name@domain.nl"
      storage: /etc/traefik/acme/acme.json
      # https://docs.traefik.io/master/https/acme/#httpchallenge
      httpChallenge:
        entryPoint: web

http:
  routers:
    web-router:
      rule: "Host(`domain.com`) || Host(`www.domain.com`)"
      
      entryPoints:
        - web
      middlewares:
        - myod-auth
        - redirect
        - csrf

      service: django

    web-secure-router:
      rule: "Host(`domain.com`) || Host(`www.domain.com`)"
      
      entryPoints:
        - web-secure
      middlewares:
        - myod-auth
        - csrf     

      service: django
      tls:
        # https://docs.traefik.io/master/routing/routers/#certresolver
        certResolver: letsencrypt

  middlewares:
    myod-auth:
      basicAuth:
        users:
          - "name:$apr1$TgZodRDgjksd892DD3gI/t0" 
    redirect:
      # https://docs.traefik.io/master/middlewares/redirectscheme/
      redirectScheme:
        scheme: https
        permanent: true
    csrf:
      # https://docs.traefik.io/master/middlewares/headers/#hostsproxyheaders
      # https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
      headers:
        hostsProxyHeaders: ["X-CSRFToken"]

  services:
    django:
      loadBalancer:
        servers:
          - url: http://django:5000

providers:
  # https://docs.traefik.io/master/providers/file/
  file:
    filename: /etc/traefik/traefik.yml
    watch: true

I added the Basic auth as middleware so it should work right?

Hi @webconexus

It looks like you are mixing your static config and dynamic config in the same file.

You routers, middlewares and services should be in dynamic config.

The log, entrypoints and providers in the static configuration.

https://docs.traefik.io/getting-started/configuration-overview/

1 Like