[英]Containerized Nginx Plus is Unable to Open or Rename Okta JWK File
为什么我的 Nginx Plus 实例无法访问来自 Okta 的 JSON Web 密钥 (JWK) 文件?
This instance of Nginx Plus was containerized with a Dockerfile
similar to this official Dockerfile.alpine
direct from Nginx, with the following differences:
. . .
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;"]
frontend.conf
, openid_connect.js
, openid_connect.server_conf
和openid_connect_configuration.conf
都是从nginx-openid-connect
复制的,在这里找到。
在安装过程的这一部分之后, frontend.conf
、 openid_connect.server_conf
和openid_connect_configuration.conf
都已正确配置。
Nginx Plus 在 Okta 管理控制台中正确配置为 OIDC 应用程序。
When I enter the static external IP address pointing at my containerized Nginx Plus instance in a fresh browser session, I am redirected to https://$OKTA_DOMAIN_NAME.okta.com
and prompted to login. 输入正确的凭据后,我可以在 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)
. . .
将带有以下COPY
指令的oidc_id_tokens.json.tmp
添加到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 文件?
在您链接的nginx-openid-connect
存储库中的“故障排除”header 下,“身份验证成功,但浏览器显示太多重定向”下方的最后一个项目符号指示您确保nginx
用户有权访问 JWK 文件。
这不是指 Okta 用户或帐户; 这是指 Docker 映像中的nginx
用户。 如果你:
docker run \
--entrypoint="" \
--interactive \
--tty \
$NGINX_PLUS_IMAGE_ID \
cat /etc/nginx/nginx.conf
#=>
user nginx;
. . .
您可以看到基本 Nginx 配置。 文件使用nginx
用户而不是root
。
我们应该让nginx
访问/etc/nginx
目录中的所有文件:
RUN chown -R nginx:nginx /etc/nginx
Dockerfile
指令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.