Контейнерный Nginx Plus не может открыть или переименовать файл Okta JWK

Почему мой экземпляр Nginx Plus не может получить доступ к файлу веб-ключа JSON (JWK) из Okta?

Этот экземпляр Nginx Plus был помещен в контейнер, аналогичный этому официальному Dockerfile.alpine прямо из Nginx, со следующими отличиями:

      . . .

COPY ["cert.pem", "cert.key", "/"]

. . .

RUN . . .

. . .

        nginx-plus-module-njs \

. . .

RUN ["rm", "/etc/nginx/conf.d/default.conf"]

. . .

COPY ["frontend.conf", "openid_connect.js", "openid_connect.server_conf", "openid_connect_configuration.conf", "/etc/nginx/conf.d/"]

. . .

CMD ["nginx", "-g", "daemon off; load_module modules/ngx_http_js_module.so;"]

, openid_connect.js, и все они были скопированы с nginx-openid-connect, нашел здесь.

frontend.conf, openid_connect.server_conf и openid_connect_configuration.confвсе были настроены правильно после этой части процесса установки.

Nginx Plus был правильно настроен в консоли администратора Okta как приложение OIDC.

Когда я ввожу статический внешний IP-адрес, указывающий на мой контейнерный экземпляр Nginx Plus в новом сеансе браузера, я перенаправляюсь на https://$OKTA_DOMAIN_NAME.okta.comи предложили войти в систему. После ввода правильных учетных данных я вижу в журналах Nginx Plus следующее:

      . . .
1970/01/01 00:00:01 [alert] 1#1: open() "/etc/nginx/conf.d/oidc_id_tokens.json.tmp" failed (13: Permission denied)
. . .

добавление oidc_id_tokens.json.tmp со следующими COPY инструкция для Dockerfile:

      COPY --chown=nginx:nginx ["empty.file", "/etc/nginx/conf.d/oidc_id_tokens.json.tmp"]

вызвала еще одну аналогичную ошибку после повторного развертывания и другого потока входа в систему:

      . . .
1970/01/01 00:00:01 [crit] 1#1: rename() "/etc/nginx/conf.d/oidc_id_tokens.json.tmp" to "/etc/nginx/conf.d/oidc_id_tokens.json" failed (13: Permission denied)
. . .

Как разрешить Nginx Plus доступ к файлу JWK?

1 ответ

Под заголовком «Устранение неполадок» из nginx-openid-connectрепозиторий, который вы связали, последняя пуля под «Аутентификация прошла успешно, но браузер показывает слишком много перенаправлений» указывает вам, что у пользователя есть доступ к файлу JWK.

Это не относится к пользователю или учетной записи Okta; это относится к пользователю в вашем образе Docker. Если ты:

      docker run \
--entrypoint="" \
--interactive \
--tty \
$NGINX_PLUS_IMAGE_ID \
cat /etc/nginx/nginx.conf

#=>

user  nginx;
. . .

вы можете видеть, что базовая конфигурация Nginx. файл использует пользователя вместо root.

Мы должны дать nginxдоступ ко всем файлам внутри /etc/nginxкаталог с:

      RUN ["chown", "-R", "nginx:nginx", "/etc/nginx"]

Dockerfileинструкция.

Другие вопросы по тегам