Puncte:0

autentificarea tomcat9 shibboleth+mod_jk interzisă

drapel in

Am o aplicație Spring Boot care rulează în prezent sub Tomcat 8.5 care are integrat un SSO bazat pe Shibboleth. Shibboleth și tomcat sunt conectate folosind apache2 mod_shib și mod_jk, folosind pachetele implicite Debian 9.

Încerc acum să actualizez mediul aplicației la Debian 10 (și astfel tomcat 9) și majoritatea lucrurilor funcționează cu modificări minore de configurare, cu excepția autentificării bazate pe Shibboleth.

Dacă suni /login/shibboleth (care este configurat în apache pentru a se autentifica folosind shibboleth, apoi autentificați-vă în aplicație folosind variabilele partajate shibboleth furnizate), protocolul de autentificare shibboleth SAML2 este corect realizat (și sesiunea shibboleth poate fi interogată după în apache), dar metoda handlerului pentru /login/shibboleth nu este numit (am verificat acest lucru folosind depanarea la distanță), dar este refuzat de tomcat însuși:

Stare HTTP 403 â Interzis
Tastați Raport de stare

Descriere Serverul a înțeles cererea, dar refuză să o autorizeze.

Apache Tomcat/9.0.31 (Debian)

Am încercat să analizez această problemă și o soluție posibilă părea să fie folosirea unui secret în conectorul AJP. Definirea unuia (în serverul tomcat9.xml) nu pare să schimbe niciun comportament (de asemenea, mod_jk nu pare să aibă o opțiune corespunzătoare, așa că mă întreb cum orice funcția funcționează când este configurat un secret).

Are cineva idei despre:

  • Ce poate cauza această problemă.
  • Care sunt soluțiile posibile.
Puncte:0
drapel th

Conectorul AJP a încetat să permită trecerea oricărui atribut de cerere vechi în versiunile recente ale Tomcat. Atributele care sunt transmise implicit sunt descrise aici: https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html#Standard_Implementations

Puteți testa dacă acest lucru cauzează eroarea dvs. 403, permițând temporar toate atributele din definiția conectorului AJP (probabil găsit în server.xml).

<Connector protocol="AJP/1.3" 
           port="8009" 
           secret="your_ajp_secret" 
           allowedRequestAttributesPattern=".*" />

Dacă funcționează, puteți limita atributele permise la cele de care aveți de fapt nevoie. Va varia în funcție de implementare, dar acest lucru a funcționat pentru mine: allowedRequestAttributesPattern="^(Shib-.*|eppn)$â

Dacă problema dvs. este cu adevărat cu secretul AJP, rețineți că mod_proxy_ajp de la Apache nu a acceptat secrete până de curând. Totuși, îl veți găsi documentat în versiunile recente. Vedea https://httpd.apache.org/docs/2.4/mod/mod_proxy_ajp.html.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.