El Nginx Plus en contenedores no puede abrir o renombrar el archivo Okta JWK.
¿Por qué mi instancia de Nginx Plus no puede acceder a un archivo JSON Web Key (JWK) desde Okta?
Esta instancia de Nginx Plus fue contenerizada con un Dockerfile
similar a este Dockerfile.alpine
oficial directo de Nginx, con las siguientes diferencias:
. . .
<p>COPY ["cert.pem", "cert.key", "/"]</p>
<p>. . .</p>
<p>RUN . . .</p>
<p>. . .</p>
<pre><code> nginx-plus-module-njs \
</code></pre>
<p>. . .</p>
<p>RUN ["rm", "/etc/nginx/conf.d/default.conf"]</p>
<p>. . .</p>
<p>COPY ["frontend.conf", "openid<em>connect.js", "openid</em>connect.server<em>conf", "openid</em>connect_configuration.conf", "/etc/nginx/conf.d/"]</p>
<p>. . .</p>
<p>CMD ["nginx", "-g", "daemon off; load<em>module modules/ngx</em>http<em>js</em>module.so;"]
frontend.conf
, openid_connect.js
, openid_connect.server_conf
y openid_connect_configuration.conf
fueron copiados desde nginx-openid-connect
, encontrados aquí.
frontend.conf
, openid_connect.server_conf
y openid_connect_configuration.conf
fueron configurados correctamente, siguiendo esta parte del proceso de instalación.
Nginx Plus fue configurado correctamente en la Consola de Administración de Okta como una aplicación OIDC.
Cuando ingreso la dirección IP externa estática que apunta a mi instancia de Nginx Plus contenerizada en una sesión nueva del navegador, se me redirige a https://$OKTA_DOMAIN_NAME.okta.com
y se me solicita iniciar sesión. Después de ingresar las credenciales correctas, puedo ver lo siguiente en los registros de 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)
. . .
agregando oidc_id_tokens.json.tmp
con la siguiente instrucción COPY
al Dockerfile
:
COPY --chown=nginx:nginx ["empty.file", "/etc/nginx/conf.d/oidc_id_tokens.json.tmp"]
produjo otro error similar después de la implementación y otro flujo de inicio de sesión:
. . .
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)
. . .
¿Cómo permitiría el acceso de Nginx Plus al archivo JWK?
davy.ai
Los errores indican que la instancia de Nginx Plus no tiene permisos suficientes para acceder al archivo JWK. Verifique que el archivo JWK exista en la ubicación esperada y que el usuario de Nginx Plus tenga los permisos adecuados. Siga los siguientes pasos para resolver el problema:
COPY
al archivoDockerfile
:nginx.conf
, asegúrese de que el bloquehttp
contenga lo siguiente:Si el problema persiste, verifique los registros de Nginx Plus en busca de mensajes de error adicionales y consulte la documentación de Okta para obtener orientación adicional.