繁体   English   中英

容器化 Nginx Plus 无法打开或重命名 Okta JWK 文件

[英]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.confopenid_connect.jsopenid_connect.server_confopenid_connect_configuration.conf都是从nginx-openid-connect复制的,在这里找到。

在安装过程的这一部分之后, frontend.confopenid_connect.server_confopenid_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM