returned response code 403

23 views
Skip to first unread message

Jacopo De Luca

unread,
Sep 21, 2021, 4:59:00 AM9/21/21
to manydesigns-portofino-italian
Buongiorno,

Sto riscontrando difficoltà a comprendere e risolvere un problema a seguito di una chiamata HTTPS ad endpoint di applicativo basato su portofino, in fase di migrazione e upgrading.

Ambiente attuale:
- Portofino 4.2.1
- Tomcat 8.5 con SSL
- Postgres 12
- macchina in cloud AWS
- UFW disabilitato momentaneamente

Stiamo effettuando dei test su nuovi server/services cloud e, dopo l'installazione del certificato SSL, abbiamo problemi nella chiamata all'endpoint di invio mail automatico (eseguita da Quartz).

Prima dell'installazione del certificato SSL, la chiamata passava per localhost, ora invece il percorso è completo: https://app.domain.com/endpoint e sono state correttamente settate le impostazioni per comunicazione con SMTP + SSL.

Dal log si capisce che il problema è proprio nell'interrogazione di questo endpoint, ancor prima di comunicare con l'SMTP server:

2021-09-21 10:34:56,785 WARN  com.manydesigns.mail.quartz.URLInvokeJob   Invocation of URL https://app.domain.com:port/actions/mail-sender-run returned response code 403

2021-09-21 10:34:57,780 WARN  c.m.mail.stripes.SendMailAction           /actions/mail-sender-run Received request from non-local addr, forbidding access: /{ip della macchina}

Sto occupandomi del problema dal livello più basso e salendo fino all'architettura cloud, quindi, non riuscendo ad identificare il motivo chiedo a voi sperando che possiate aiutarmi.

Vi ringrazio

Saluti

Jacopo De Luca

Alessio Stalla

unread,
Sep 21, 2021, 5:42:13 AM9/21/21
to manydesigns-po...@googlegroups.com
Ciao,

per motivi di sicurezza /actions/mail-sender-run accetta connessioni solo da localhost (altrimenti chiunque avesse accesso HTTP(S) al server potrebbe far partire le mail creando disservizi).
Se hai bisogno di un'altra politica (perché ad es. già controlli l'accesso a quella risorsa in altri modi) puoi scrivere una action analoga, anche in Groovy, che faccia la stessa cosa e metterla dove vuoi tu.

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "manydesigns-portofino-italian" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a manydesigns-portofin...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/manydesigns-portofino-italian/634071ce-459c-4f92-9490-ac624717bd4bn%40googlegroups.com.

Jacopo De Luca

unread,
Sep 28, 2021, 5:05:50 AM9/28/21
to manydesigns-portofino-italian
Ciao Alessio

Grazie mille per il riscontro.
Tuttavia, nella versione di Portofino che utilizzo, riesco nella maggior parte degli ambienti a richiamare /actions/mail-sender-run fuori da localhost, quindi richiamando l'endpoint https://app.domain.com:port/actions/mail-sender-run.

Il problema sorge adesso durante una migrazione, durante la quale ho dovuto ricreare l'ambiente (tomcat in particolare) e importare il codice (lo stesso).
Sto controllando a tutti i livelli (quindi anche a livello di rete e architettura cloud), ma per ora non ho trovato soluzione (soprattutto perchè per testare il servizio ho rimosso le limitazioni di accesso, ma l'errore 403 rimane).

Quindi le mie domande sono:
- il fatto che nella maggior parte degli ambienti sia riuscito a interrogare l'endpoint non da localhost è anomalo?
- se così non fosse, c'è qualche configurazione (di tomcat o portofino stesso) che potrei essermi perso?
- se invece fosse un'anomalia, come bisognerebbe comportarsi nel caso di inoltro mail da applicativo con certificato SSL installato in tomcat verso SMTP server?

Vi ringrazio nuovamente

Saluti

Jacopo De Luca


Alessio Stalla

unread,
Sep 28, 2021, 11:18:25 AM9/28/21
to manydesigns-po...@googlegroups.com
On Tue, 28 Sept 2021 at 11:05, Jacopo De Luca <jacopo...@nuvia.health> wrote:
Ciao Alessio

Grazie mille per il riscontro.
Tuttavia, nella versione di Portofino che utilizzo, riesco nella maggior parte degli ambienti a richiamare /actions/mail-sender-run fuori da localhost, quindi richiamando l'endpoint https://app.domain.com:port/actions/mail-sender-run.

Ciao,

ti rispondo punto per punto
 
Il problema sorge adesso durante una migrazione, durante la quale ho dovuto ricreare l'ambiente (tomcat in particolare) e importare il codice (lo stesso).
Sto controllando a tutti i livelli (quindi anche a livello di rete e architettura cloud), ma per ora non ho trovato soluzione (soprattutto perchè per testare il servizio ho rimosso le limitazioni di accesso, ma l'errore 403 rimane).

Quindi le mie domande sono:
- il fatto che nella maggior parte degli ambienti sia riuscito a interrogare l'endpoint non da localhost è anomalo?

Sì. Non so come è configurato il tuo ambiente, se magari c'è un reverse proxy di mezzo che fa partire le chiamate dalla stessa macchina in cui gira il server. Può essere anche un bug di Portofino ma l'intenzione è sempre stata quella di accettare chiamate solo da localhost.
 
- se così non fosse, c'è qualche configurazione (di tomcat o portofino stesso) che potrei essermi perso?

No, non direi così a memoria.
 
- se invece fosse un'anomalia, come bisognerebbe comportarsi nel caso di inoltro mail da applicativo con certificato SSL installato in tomcat verso SMTP server?

Allora, l'url per inviare le mail è un meccanismo pensato per essere invocato da un cron job sulla macchina.
In alternativa si può usare lo scheduler Quartz. C'è una classe già pronta (MailSenderJob) con un metodo schedule che fa già tutto. Credo ci fosse un vecchio esempio in demo-tt ma non lo trovo. Purtroppo al momento non c'è modo di attivarlo con la sola configurazione, devi chiamare tu quel metodo (e in Portofino 4 devi per forza creare un Module per farlo se già non ne hai uno). Comunque su demo-tt ci sono altri esempi di schedulazione di job da cui puoi copiare perlomeno l'infrastruttura necessaria.
 
Reply all
Reply to author
Forward
0 new messages