Într-o configurație SPNEGO Jetty există trei nume: URI-ul folosit pentru potrivirea autentificării, utilizatorul care se conectează prin JAAS și serviciul pentru care se solicită un bilet. Au scopuri diferite.

Pentru implementarea Jetty 12.0.x, un fragment al obiectului de autentificare este:

var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
    java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");

Acest fragment ilustrează componenta de serviciu, nu o rețetă completă pentru autentificarea proxy. Conectarea JAAS, rutarea proxy și schimbul de autentificare al cererii rămân separate.

În această implementare Jetty construiește numele GSS bazat pe gazdă combinând getServiceName(), caracterul @ și gazda pentru schimbul de autentificare. Dacă se furnizează [email protected] ca componentă de serviciu, s-ar adăuga o altă gazdă. Citiți contractul acestui setter în loc să presupuneți că acceptă un principal Kerberos complet.

Numele GSS rezultat are forma conceptuală HTTP@hostname. Principalul de serviciu corespunzător din KDC este de obicei reprezentat ca HTTP/hostname. numele proxy selectat trebuie să corespundă serviciului înregistrat efectiv pentru acel cont; o adresă IP sau un alias poate selecta altă țintă a biletului.

Verificați și calea 407

În Jetty 12.0.x, authenticate() obține numele de gazdă GSS din request.getHost() și construiește un rezultat cu antetul Authorization implicit. Potrivirea unui obiect de autentificare după URI-ul proxy nu schimbă de la sine aceste alegeri în numele de gazdă al proxy-ului și în Proxy-Authorization.

Prin urmare, o integrare proxy are nevoie de gazda corectă a cererii și de un rezultat limitat la proxy pentru acel schimb. O cerere HTTPS CONNECT și o cerere obișnuită către origine pot avea valori diferite ale gazdei. Confirmați comportamentul implementării instalate în loc să presupuneți că setterul numelui serviciului oferă fluxul 407 complet.

Pentru un 407, inspectați schimbul de autentificare al proxy-ului și gazda folosită de acea cerere. Un 401 aparține autentificării originii. Un bilet de utilizator valid singur nu demonstrează că Jetty a solicitat biletul de serviciu corect sau că intermediarul l-a acceptat.

Articole similare