es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Agregue el archivo JWK al contenedor agregando una instrucción COPY al archivo Dockerfile:
      COPY --chown=nginx:nginx ["jwks.json", "/etc/nginx/conf.d/"]
      
    2. Otorgue los permisos adecuados al usuario de Nginx Plus:
      chown nginx:nginx /etc/nginx/conf.d/jwks.json
      chmod 644 /etc/nginx/conf.d/jwks.json
      
    3. En el archivo nginx.conf, asegúrese de que el bloque http contenga lo siguiente:
      http {
        ...
        js_import jwk from /etc/nginx/conf.d/jwks.json;
        ...
      }
      
    4. Reinicie el contenedor de Nginx Plus y vuelva a intentar acceder al archivo JWK.

    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.

Comments are closed.