vi er glade For å kunngjøre at Den første milepælen Av Spring Security Kerberos-Utvidelsen nå er tilgjengelig for nedlasting. Utgivelsen er også tilgjengelig gjennom maven milestone repository på http://maven.springframework.org/milestone. Med Spring Security Kerberos-Utvidelsen godkjennes brukerne dine mot webapplikasjonen din bare ved å åpne NETTADRESSEN. Det er ikke nødvendig å skrive inn et brukernavn / passord og trenger ikke å installere ekstra programvare.
før jeg går dypere inn I Kerberos, vil jeg gjerne introdusere Spring Security Extensions, et Nytt Spring Extension-prosjekt dedikert til å gi utvidelsesmoduler for Core Spring Security-prosjektet. For tiden har vi to utvidelser utviklet der: EN SAML2-integrasjon og En Kerberos/SPNEGO-integrasjon. Hver modul vil ha sin egen utgivelsessyklus, slik at folk kan dra nytte av disse utvidelsene så snart de er klare og ikke trenger å vente på Neste Vårs Sikkerhetsutgivelse. Hvis du har noen ideer eller til og med noen kode for videre utvidelser, vennligst fortell oss!
Kerberos / SPNEGO
i den første milepælen i denne modulen gir vi Deg En out-of-the-box Kerberos / SPNEGO løsning for webapplikasjoner. Kerberos er en standardisert nettverksautentiseringsprotokoll, som er designet for å gi sterk godkjenning for klient / server-applikasjon, som webapplikasjoner der Nettleseren er klienten. Det er også den anbefalte måten å godkjenne brukere I Et Windows-nettverk, og det erstatter den utdaterte OG relativt usikre NTLM. Dessuten er det mye brukt i *NIX-miljøer, og det er implementeringer for alle større plattformer. Så det er svært sannsynlig at Du allerede Har Kerberos på plass, og nå kan du også bruke dette i din egen webapplikasjon. Det betyr at brukeren bare går INN I NETTADRESSEN, og han blir automatisk autentisert med domenenavnet, for eksempel [email protected]. du kan da finne ut dette brukernavnet via Vårsikkerhet eller til og med med forespørsel.getRemoteUser(). Hvordan fungerer dette? Her er en kort oversikt:
Nettleseren sender EN GET-forespørsel til webapplikasjonen din (1), som deretter returnerer at «forhandle» – godkjenning er nødvendig (2). Nettleseren vil da be Kerberos-Serveren om å få en såkalt servicebillett (3). Nettleseren sender deretter denne servicebilletten, som viser identiteten til den som ringer, og noen ekstra ting til webapplikasjonen (5). Etter å ha validert billetten, basert på noen delte hemmeligheter mellom webapplikasjonen din og Kerberos-serveren, får du brukernavnet tilbake.
for at dette skal fungere, må alle webapplikasjoner registreres på Kerberos-serveren og får en tjeneste prinkommunal og en delt hemmelighet tildelt. For webapplikasjoner må tjenestehovedpersonen være «HTTP/< fullt kvalifisert domenenavn> @DOMENE». For eksempel «HTTP/[email protected]», hvis appen din kjører på web.springsource.com. du må da eksportere legitimasjonen til denne rektor til en keytab-fil (delt hemmelighet) og gjøre dette tilgjengelig for søknaden din. Hvert Kerberos – basert system vil fungere på denne måten, men opprettelsen av denne servicefanen og keytaben er forskjellig mellom systemene. Jeg vil vise deg Hvordan Du gjør Dette Med Microsoft Windows Og MIT Kerberos, men det skal også fungere med andre implementeringer.
Opprette service principal Med Microsoft Windows 2008 Server
selv om Dette refererer Til Microsoft Windows 2008 Server, bør Det være svært lik i 2003 og til og med 2000 Server. I ActiveDirectory oppretter du bare en vanlig domenebruker, og deretter tilordner du ham en service principal (SPN), og oppretter keytab med et kommandolinjeverktøy. Og nå trinn for trinn:
Opprett en vanlig bruker som vil bli servicehovedpersonen. Brukernavnet og passordet er meningsløst For Kerberos, men du bør selvfølgelig velge et nyttig navn, som http-web.springsource.com. Bare vær sikker på at du deaktiverer alternativet «Bruker må endre passord ved neste pålogging «og aktiver» Passord utløper aldri».
etter det må du bruke kommandolinjeverktøyet » ktpass.exe». Det er allerede inkludert I Windows 2008 Server, i tidligere versjoner må du installere det selv. Bare sørg for at du bruker en versjon som samsvarer med din server versjon og også locale skal samsvare. Dette verktøyet tilordner tjenestens hovednavn (spn) til den tidligere opprettede brukeren, og eksporterer brukernøkkelen til en keytab-fil. Hvis din oppdragsgiver er «HTTP/[email protected]» og brukeren din er http-web.springsource.com, så skal ktpass-kommandoen se slik ut:
ktpass /out http-web.keytab /mapuser /princ HTTP/ /pass *
ktpass vil be deg om noen passord. Du bør velge noen sikre tilfeldig en for det. Hvis du nå har en fil http-web.keytab i katalogen din, så fungerte alt bra. Denne filen er nødvendig senere i søknaden din, da den inneholder den delte hemmeligheten for å validere servicebillettene.
Opprette service principal MED MIT Kerberos
på *NIX-systemer Og Også I Mac OS X, er mit Kerberos-implementeringen mye brukt. MED Mit Kerberos er det enda enklere. Bare åpne kadmin-konsollen og utfør følgende kommandoer:
kadmin: addprinc -randkey HTTP/web.springsource.comkadmin: ktadd -k /http-web.keytab HTTP/web.springsource.com
Du bør da ha en fil http-web.keytab under rot. Denne filen er senere nødvendig i søknaden din, da den inneholder den delte hemmeligheten for å validere servicebillettene.
Konfigurere Fjærsikkerhet
først av alt, kravene:
- Våren Sikkerhet 3.0.0 M2
- SUN JRE/JDK 1.6.X
- Kerberos miljø
- Nettleser som støtter SPNEGO (Firefox, IE, Safari)
For å kunne bruke Kerberos-modulen I Spring Security, må du bare deklarere et filter, et godkjenningspunkt og en godkjenningsleverandør. Vi inkluderte en prøve web app som du kan bruke som utgangspunkt. Du må bare konfigurere tjenestens hovednavn og plassere generer keytab der. Prøven app er inkludert i nedlastingen nevnt ovenfor.
hvis du åpner sikkerheten.xml-fil for eksempelprogrammet, som er under / src / main / webapp / WEB-INF, ser du en Grunnleggende Sikkerhetskonfigurasjon For Våren som bruker Den nye Kerberos-modulen.
De to første bønnene (SpnegoEntryPoint og SpnegoAuthenticationProcessingFilter) er ansvarlige for håndtrykket, Og KerberosServiceAuthenticationProvider validerer deretter endelig servicebilletten. Foreløpig støtter Vi Bare Kerberos / SPNEGO implementering som er inkludert I SUNS JRE / JDK. Som du bare får tilbake brukernavnet Fra Kerberos, trenger du også En UserDetailsService for å hente rollene og kanskje noen andre brukerattributter. I denne prøven bruker vi bare en dummy implementering for å gjøre testingen enklere.
som du kan se, har vi allerede fylt ut servicenavnet og keytab-plasseringen. Endre disse verdiene for ditt behov, og kontroller at den tidligere genererte keytaben er tilgjengelig under denne plasseringen.
start nå serveren din og prøv Å prøve EN spnego-godkjenning. Du bør se hele domenenavnet i Nettleseren. I koden din kan du hente brukernavnet med de vanlige Vårsikkerhetsklassene eller til og med med Standard Java servlet call request.getRemoteUser(). Hvis det ikke virker (kanskje du ser en tom side), sjekk disse tingene:
- Sjekk loggfilen
- Pass på at du bruker det fullstendige kvalifiserte domenenavnet (ikke IP-adressen og ikke det korte navnet) i NETTADRESSEN din.
- Hvis Du bruker Internet Explorer: Slå på «Windows Integrated Authentication» og sørg for at domenet (i vårt tilfelle web.springsource.com) er oppført I IE lokale intranett området delen.
- hvis Du bruker Firefox: Ta en titt her.
- hvis Du bruker En Windows-klient: Klient Og Server må være på forskjellige maskiner, Fordi Ellers Windows vil bruke NTLM i stedet For Kerberos.
- Sjekk om tiden er synkronisert på alle involverte maskiner.
- hvis Du bruker Microsoft AD, finner du mer hjelp her: http://msdn.microsoft.com/en-us/library/ms995329.aspx
dessuten kan det være komplisert å sette opp et riktig Kerberos-miljø, og det er viktig å få dette riktig før Du begynner Å bruke Spring Security Kerberos-utvidelsen. De fleste problemene vi møter under rådgivning er problemer Med Kerberos-miljøet og ikke med selve applikasjonen.
hvis Du ikke vil bruke Spring Security Kerberos-Utvidelsen i ditt eget maven-prosjekt, må du legge Til Spring Milestone-Depotet i pom.xml. Det skal se slik ut:
og selvfølgelig avhengigheten:
Det er fortsatt noe arbeid å gjøre, for eksempel å også gi Kerberos For Java-klienter og ikke bare for serveren, men vi håper du vil prøve ut denne milestone-utgivelsen og gi tilbakemelding. Forumet Er det beste stedet å stille spørsmål eller starte diskusjoner om nye funksjoner. Alternativt, hvis du finner noe galt, kan du heve Et Jira-Problem.