oidc-forward-auth/examples/google.md
Stefan Kürzeder f7c659dbf1 Fixed typos
2020-06-04 14:57:54 +02:00

88 lines
No EOL
3.4 KiB
Markdown

# Example for Google Authentication
1. Navigate to [Google APIs Developer Console](https://console.developers.google.com/apis/dashboard)
2. Open Credentials
3. Click on `Create Credentials` and `OAuth client ID`
4. Select Application type `Web Application`
5. Enter as Authorised redirect URI `auth.yourdomain.tld/auth/resp`
6. Copy and save `Client Id` and `Client Secret`
- e.g. `******.apps.googleusercontent.com` and `uqE8NtQQZ_******`
7. Configure the environment variables to the following:
```
ISSUER=https://accounts.google.com
CLIENT_ID=******.apps.googleusercontent.com
CLIENT_SECRET=uqE8NtQQZ_******
AUTH_DOMAIN=auth.yourdomain.tld
COOKIE_DOMAIN=yourdomain.tld
```
8. Create the traefik forwardauth middleware (middlewares.forwardauth.toml):
```
http:
middlewares:
keycloak:
forwardAuth:
address: "http://traefik-forward-auth:4181" # Note: You need to use the internal DNS name (e.g. docker container name)
trustForwardHeader: true
authResponseHeaders: [ "X-Forwarded-User" ]
```
9. Final docker-compose:
````yaml
traefik:
image: traefik:latest
networks:
- traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config:/etc/traefik
ports:
- 80:80
- 443:443
restart: always
whoami:
image: containous/whoami
networks:
- traefik
labels:
# Docker
- traefik.enable=true
# Routing
- traefik.http.routers.whoami.rule=Host(`whoami.yourdomain.tld`)
- traefik.http.routers.whoami.tls.certresolver=letsencrypt
- traefik.http.routers.whoami.tls.domains[0].main=*.yourdomain.tld
- traefik.http.routers.whoami.tls.domains[0].sans=yourdomain.tld
- traefik.http.routers.whoami.entrypoints=https
- traefik.http.routers.whoami.middlewares=keycloak@file
# Healthcehck
- traefik.http.services.whoami.loadbalancer.server.port=80
- traefik.http.services.whoami.loadbalancer.healthcheck.path=/
- traefik.http.services.whoami.loadbalancer.healthcheck.interval=5s
- traefik.http.services.whoami.loadbalancer.healthcheck.timeout=3s
restart: always
traefik-forward-auth:
image: stivik/oidc-forward-auth
networks:
- traefik
environment:
- ISSUER=https://accounts.google.com
- CLIENT_ID=******.apps.googleusercontent.com
- CLIENT_SECRET=uqE8NtQQZ_******
- AUTH_DOMAIN=auth.yourdomain.tld
- COOKIE_DOMAIN=yourdomain.tld
- LOG_LEVEL=debug
labels:
# Docker
- traefik.enable=true
# Routing
- traefik.http.routers.keycloak-forward.rule=Host(`auth.yourdomain.tld`)
- traefik.http.routers.keycloak-forward.tls.certresolver=letsencrypt
- traefik.http.routers.keycloak-forward.tls.domains[0].main=*.yourdomain.tld
- traefik.http.routers.keycloak-forward.tls.domains[0].sans=yourdomain.tld
- traefik.http.routers.keycloak-forward.entrypoints=https
- traefik.http.services.keycloak-forward.loadbalancer.server.port=4181
- traefik.http.routers.keycloak-forward.middlewares=keycloak@file # Note: The forwardauth handler itself requires the forwardauth middleware
````
10. When you now browse to `whoami.yourdomain.tld` you will be redirected to the Google Auth and after a successfully authentication you will be redirected back to the application.