Spring Blog

meillä on ilo ilmoittaa, että Spring Security Kerberos-laajennuksen ensimmäinen virstanpylväs on nyt ladattavissa. Julkaisu on saatavilla myös maven milestone repositoryn kautta numerolla http://maven.springframework.org/milestone. Spring Security Kerberos-laajennuksen avulla käyttäjäsi todennetaan verkkosovellustasi vastaan vain avaamalla URL-osoite. Käyttäjätunnusta/salasanaa ei tarvitse syöttää eikä lisäohjelmistoja tarvitse asentaa.

ennen kuin siirryn syvemmälle Kerberokseen, haluan esitellä Spring Security Extensions-projektin, uuden Spring Extension-projektin, joka on omistettu laajennusmoduulien tarjoamiseen ydinjousiturvallisuusprojektille. Tällä hetkellä meillä on kaksi laajennusta kehitetty siellä: SAML2 integraatio ja Kerberos/SPNEGO integraatio. Jokaisella moduulilla on oma julkaisusykli, jotta ihmiset voivat hyötyä näistä laajennuksista heti, kun ne ovat valmiita, eikä heidän tarvitse odottaa seuraavan kevään Tietoturvajulkaisua. Jos sinulla on ideoita tai vaikka jokin koodi jatkolaajennuksiin, kerro meille!

Kerberos/SPNEGO

tämän moduulin ensimmäisenä virstanpylväänä tarjoamme sinulle out-of-the-box Kerberos/SPNEGO-ratkaisun verkkosovelluksiin. Kerberos on standardoitu verkon todennusprotokolla, joka on suunniteltu tarjoamaan Vahva todennus asiakas/palvelin-sovelluksille, kuten verkkosovelluksille, joissa selain on asiakas. Se on myös suositeltava tapa todentaa käyttäjät Windows-verkossa ja se korvaa vanhentuneen ja suhteellisen epävarma NTLM. Tämän lisäksi sitä käytetään laajalti * NIX-ympäristöissä ja jokaiselle merkittävälle alustalle on olemassa toteutuksia. Joten, on hyvin todennäköistä, että sinulla on jo Kerberos käytössä ja nyt voit käyttää tätä myös omassa web-sovelluksessa. Tämä tarkoittaa, että käyttäjä vain syöttää URL-osoitteen ja hän on automaattisesti todennettu hänen verkkotunnuksen käyttäjätunnus, esimerkiksi [email protected]. voit sitten selvittää tämän käyttäjätunnuksen kautta Spring Security tai jopa pyynnöstä.getRemoteUser (). Miten tämä toimii? Tässä lyhyt katsaus:

selain lähettää GET-pyynnön verkkosovellukseesi (1), joka sitten palauttaa, että ”neuvottele” – todennus on tarpeen (2). Tämän jälkeen selain pyytää Kerberos-palvelimelta ns.palvelulipun (3). Tämän jälkeen selain lähettää tämän palvelulipun, joka todistaa soittajan henkilöllisyyden, ja joitakin muita asioita verkkosovellukseen (5). Kun olet vahvistanut lipun, joka perustuu johonkin verkkosovelluksesi ja Kerberos-palvelimen väliseen jaettuun salaisuuteen, saat käyttäjätunnuksen takaisin.

jotta tämä toimisi, jokainen verkkosovellus on rekisteröitävä Kerberos-palvelimelle ja sille on annettava palveluprinicipal ja jaettu salaisuus. Verkkosovelluksissa palvelupäällikön tulee olla ”HTTP / <täysi hyväksytty verkkotunnus>@DOMAIN”. Esimerkiksi ”HTTP/[email protected]”, jos sovelluksesi toimii web.springsource.com.tämän jälkeen sinun on vietävä tämän pääaineen tunnistetiedot keytab-tiedostoon (jaettu salaisuus) ja annettava tämä sovelluksellesi. Jokainen Kerberos-pohjainen järjestelmä toimii näin, mutta tämän palvelupäällikön ja keytabin luominen on erilainen järjestelmien välillä. Näytän sinulle, miten teet tämän Microsoft Windowsin ja MIT Kerberosin kanssa, mutta sen pitäisi toimia myös muiden toteutusten kanssa.

Service Principalin luominen Microsoft Windows 2008 Server

vaikka tämä viittaa Microsoft Windows 2008 Server, sen pitäisi olla hyvin samanlainen vuonna 2003 ja jopa 2000 Server. ActiveDirectory, voit vain luoda normaali verkkotunnuksen käyttäjä ja sitten määrittää hänelle service principal (SPN), ja luoda keytab komentorivityökalu. Ja nyt askel askeleelta:

luo normaali käyttäjä, josta tulee palvelun päämies. Käyttäjätunnus ja salasana ovat merkityksettömiä Kerberos, mutta sinun pitäisi tietenkin valita hyödyllinen nimi, kuten http-web.springsource.com. vain varmista, että poistat vaihtoehdon ”käyttäjän on vaihdettava salasana seuraavassa kirjautuminen” ja Aktivoi ”salasana ei vanhene koskaan”.

tämän jälkeen on käytettävä komentorivityökalua ”ktpass.exe”. Se sisältyy jo Windows 2008 Server, aiemmissa versioissa sinun täytyy asentaa se itse. Varmista vain, että käytät versiota, joka vastaa palvelimen versio ja myös locale pitäisi täsmätä. Tämä työkalu määrittää service principal name (SPN) aiemmin luodulle käyttäjälle ja vie käyttäjän avaimen keytab-tiedostoon. Jos palveluspäällikkö on ”HTTP/[email protected]” ja käyttäjä on http-web.springsource.com, sitten ktpass komento pitäisi näyttää tältä:


ktpass /out http-web.keytab /mapuser /princ HTTP/ /pass *

ktpass kysyy salasanaa. Sinun pitäisi valita jokin turvallinen satunnainen yksi se. Jos sinulla on nyt tiedosto http-web.näppäin hakemistossa, sitten kaikki toimi hyvin. Tätä tiedostoa tarvitaan myöhemmin hakemuksessasi, sillä se sisältää jaetun salaisuuden palvelulippujen vahvistamiseen.

Service Principalin luominen MIT Kerberos

on *NIX-järjestelmissä ja myös Mac OS X: ssä MIT Kerberos-toteutus on laajalti käytössä. Mit Kerberosin kanssa se on vielä yksinkertaisempaa. Avaa vain kadmin-konsoli ja suorita seuraavat komennot:


kadmin: addprinc -randkey HTTP/web.springsource.comkadmin: ktadd -k /http-web.keytab HTTP/web.springsource.com

sinun pitäisi sitten olla tiedosto http-web.avaimenperä juuressa. Tätä tiedostoa tarvitaan myöhemmin hakemuksessasi, sillä se sisältää jaetun salaisuuden palvelulippujen vahvistamiseen.

Jousiturvallisuuden määrittäminen

ensinnäkin vaatimukset:

  • Kevätturva 3.0.0 M2
  • su JRE/JDK 1.6.x
  • Kerberos-ympäristö
  • selain, joka tukee SPNEGOA (Firefox, IE, Safari)

jotta voit käyttää Kerberos-moduulia Spring Securityssä, sinun tarvitsee vain ilmoittaa suodatin, todennuksen sisääntulopiste ja todennuksen tarjoaja. Sisällytimme näyte web-sovellus, jota voit käyttää lähtökohtana. Sinun tarvitsee vain määrittää palvelun pääasiallinen nimi ja aseta luo keytab siellä. Näytesovellus sisältyy edellä mainittuun lataukseen.

jos avaat suojauksen.näytesovelluksen xml-tiedosto, joka on kohdassa / src/main/webapp / WEB-inf, näet jousen Perusturvakokoonpanon, joka käyttää uutta Kerberos-moduulia.

kaksi ensimmäistä Papua (SpnegoEntryPoint ja Spnegoauthentication Processingfilter) vastaavat kättelystä, ja Kerberosserviceauthentication Provider vahvistaa lopuksi palvelulipun. Tällä hetkellä tuemme vain Sunin JRE/JDK: n Kerberos/SPNEGO-toteutusta. Koska saat vain takaisin käyttäjänimen Kerberosilta, tarvitset myös Userdetailservice-palvelun, joka hakee roolit ja ehkä joitakin muita käyttäjäattribuutteja. Tässä otoksessa käytämme vain valetoteutusta testauksen helpottamiseksi.

kuten näette, täytimme jo palvelun prinicipalin nimen ja keytabin sijainnin. Muuta nämä arvot tarpeisiisi ja varmista, että aiemmin luotu keytab on saatavilla tämän sijainnin alla.

Käynnistä nyt palvelimesi ja yritä yrittää spnego-todennusta. Sinun pitäisi nähdä koko verkkotunnuksen käyttäjätunnus selaimessa. Koodissasi voit hakea käyttäjätunnuksen normaaleilla Spring Security-luokilla tai jopa tavallisella Java servlet-puhelupyynnöllä.getRemoteUser (). Jos se ei toimi (ehkä näet tyhjän sivun), tarkista nämä asiat:

  • Tarkista lokitiedosto
  • varmista, että käytät URL-osoitteessasi täyttä hyväksyttyä verkkotunnusta (ei IP-osoitetta eikä lyhyttä nimeä).
  • jos käytät Internet Exploreria: käynnistä ”Windows Integrated Authentication” ja varmista, että verkkotunnus (meidän tapauksessamme web.springsource.com) on lueteltu IE: n paikallisessa intranet-sivustossa.
  • jos käytät Firefoxia: Katso tästä.
  • jos käytät Windows-asiakasohjelmaa: Asiakkaan ja palvelimen on oltava eri koneilla, koska muuten Windows käyttää NTLM: ää Kerberoksen sijaan.
  • tarkista, onko aika synkronoitu kaikilla mukana olevilla koneilla.
  • jos käytät Microsoftin mainosta, löydät lisäohjeita täältä: http://msdn.microsoft.com/en-us/library/ms995329.aspx
    • tämän lisäksi oikean Kerberos-ympäristön luominen voi olla monimutkaista, ja on tärkeää saada tämä kuntoon ennen kuin aloitat Spring Security Kerberos-laajennuksen käytön. Suurin osa konsultoinnin aikana kohtaamistamme ongelmista liittyy Kerberos-ympäristöön eikä itse sovellukseen.

      jos et halua käyttää Spring Security Kerberos-laajennusta omassa Maven-projektissasi, sinun on lisättävä Spring Milestone-arkisto pom: iin.xml. Sen pitäisi näyttää tältä.:

ja tietenkin riippuvuus:

on vielä tehtävää, esimerkiksi tarjota Kerberos myös Java-asiakkaille eikä vain palvelimelle, mutta toivomme, että kokeilet tätä virstanpylväsjulkaisua ja annat palautetta. Yhteisöfoorumi on paras paikka esittää kysymyksiä tai aloittaa keskusteluja uusista ominaisuuksista. Vaihtoehtoisesti, jos löydät jotain vialla, voit nostaa Jira kysymys.

Vastaa

Sähköpostiosoitettasi ei julkaista.