# 10. Добавляем аутентификацию через gogatekeeper

На наших стендах установлен minikube.
Это небольшой, но полноценный kubernetes, в котором можно запускать приложения.

В директории manifests находятся k8s манифесты, в которых описано наше приложение.
Сначала нужно поменять 8ю строку в файле /manifests/6ingress.yaml
Нужно заменить sXXX на ваш логин

Скрипт deploy-vanilla.sh деплоит openresty без аутентификации в minikube
Он будет доступен по адресу http://app.keycloak.sXXX.edu.slurm.io

Теперь добавим аутентификацию с помощью gogatekeeper к нашему веб серверу.
Для этого нужно в файле /manifests/4deployment-ggk заменить 
sXXX в 27й строке на номер студента
PUT_SECRET_HERE в 20й строке на секрет, который мы получили при создании клиента в 8 задании.
Его можно найти в интерфейсе keycloak.

В файле /manifests/5service в 11 строке нужно заменить
    targetPort: 8080
на
    targetPort: 5555

Теперь запустим скрипт deploy-gatekeeper.sh.
Если зайти на http://app.keycloak.sXXX.edu.slurm.io, то мы увидим, что нас перенаправит на страницу аутентификации keycloak.

После авторизации мы получим ошибку 403.

Если посмотреть логи гейткипера
```
kubectl get pod -n nginx
получаем имя пода
kubectl logs PODNAME proxy -n nginx
```
то увидим примерно вот такой лог:
```
"access token failed verification","client_ip":"172.23.167.100:56986","error":"oidc: expected audience \"nginx\" got [\"account\"]"
```
Разные приложения по разному валидируют токены не смотря на стандарты. Gogatekeeper требует, чтобы в claim aud было значение client_id
Нужно зайти в настройки клиента nginx в рилме test, перейти во вкладку mappers и нажать Create
В поле name пишем aud
Mapper type -> выбираем Audience
Included Client Audience -> выбираем nginx

После этого заново заходим в приложение и видим, что ошибки больше нет

Подробнее о мапперах мы расскажем на 3й день.

Очищать стенд не нужно, его текущее состояние понадобится нам дальше


