Контейнерный 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
инструкция.