Turvallisuus 25.10
Tämä ominaisuus on julkisessa esikatselussa ja valmis tuotantokäyttöön. Esikatselukauden aikana API:ta voidaan hienosäätää kehittäjäyhteisön palautteen perusteella. Mahdolliset muutokset ilmoitetaan etukäteen julkaisumerkinnöissä, ja siirtymiseen liittyvät oppaat annetaan tarvittaessa.
Nykyisissä web-sovelluksissa turvallisuus viittaa pääsyn hallintaan sovelluksen eri osiin käyttäjän identiteetin ja oikeuksien perusteella. webforJ:ssa turvallisuus tarjoaa kehyksen reittikohtaiselle pääsynhallinnalle, jossa voit suojata näkymiä, vaatia todennusta ja ottaa käyttöön roolipohjaisia oikeuksia.
The webforj-securing-apps skill can protect routes with login, role-based access, and ownership checks. After installing the webforJ AI plugin, ask your assistant:
- "Protect /admin so only users with the ADMIN role can see it."
- "Add a public landing page that anyone can visit."
- "Only let a user edit a record they own."
Perinteinen VS suojattu reititys
Perinteisessä suojaamattomassa reitityksessä kaikki sovelluksen reitit ovat kaikkien käytettävissä, jotka tietävät URL-osoitteen. Tämä tarkoittaa, että käyttäjät voivat navigoida herkille sivuille, kuten ylläpitopaneeleihin tai käyttäjäpaneeleihin, ilman mitään todennusta tai valtuutustarkastuksia. Kehittäjien vastuulle jää muistaa tarkistaa oikeudet jokaisessa komponentissa manuaalisesti, mikä johtaa epätasaiseen turvallisuuden täytäntöönpanoon ja mahdollisiin haavoittuvuuksiin.
Tämä lähestymistapa tuo mukanaan useita ongelmia:
- Manuaaliset tarkastukset: Kehittäjien on muistettava lisätä turvallisuuslogiikka jokaiseen suojattuun näkymään tai asetteluun.
- Epäyhtenäinen täytäntöönpano: Turvallisuustarkastukset, jotka on hajautettu koko koodipohjaan, johtavat aukkoihin ja virheisiin.
- Ylläpidon lisäkuormitus: Pääsääntöjen muuttaminen vaatii useiden tiedostojen päivittämistä.
- Ei keskitettyä hallintaa: Ei ole yhtä paikkaa ymmärtää tai hallita sovelluksen turvallisuutta.
Suojattu reititys webforJ:ssa ratkaisee tämän mahdollistamalla pääsyn hallinnan suoraan reittitasolla. Turvallisuusjärjestelmä valvoo automaattisesti sääntöjä ennen kuin komponenttia renderöidään, tarjoamalla keskitetyn, deklaratiivisen lähestymistavan sovelluksen turvallisuuteen. Näin se toimii:
- Deklaratiiviset annotaatiot: Merkitse reitit turvallisuusannotaatioilla määrittääksesi pääsyvaatimukset.
- Automaattinen täytäntöönpano: Turvallisuusjärjestelmä tarkistaa oikeudet ennen minkään näkymän renderöintiä.
- Keskitetty konfiguraatio: Määritä turvallisuuskäyttäytyminen yhdessä paikassa ja sovella se johdonmukaisesti.
- Joustavat toteutukset: Valitse Spring Security -integraation tai mukautetun perus Java -toteutuksen välillä.
Tämä suunnittelu mahdollistaa todennuksen (käyttäjän identiteetin vahvistamisen) ja valtuutuksen (vahvistaa, mihin käyttäjä voi päästä), joten vain valtuutetuilla käyttäjillä on pääsy suojattuihin reitteihin. Valtuuttamattomat käyttäjät ohjataan automaattisesti tai heiltä evätään pääsy määritettyjen turvallisuus sääntöjen perusteella.
Esimerkki suojatusta reitityksestä webforJ:ssa
Tässä on esimerkki, joka näyttää eri turvallisuustasot webforJ-sovelluksessa:
// Julkinen kirjautumissivu - kuka tahansa voi käyttää
@Route("/login")
@AnonymousAccess
public class LoginView extends Composite<Login> {
private final Login self = getBoundComponent();
public LoginView() {
self.onSubmit(e -> {
handleLogin(e.getUsername(), e.getPassword());
});
whenAttached().thenAccept(c -> {
self.open();
});
}
}
// Tuotteet - vaatii todennuksen
@Route(value = "/", outlet = MainLayout.class)
public class ProductsView extends Composite<FlexLayout> {
public ProductsView() {
// tuotteiden näkymä
}
}
// Laskut - vaatii ACCOUNTANT-roolin
@Route(value = "/invoices", outlet = MainLayout.class)
@RolesAllowed("ACCOUNTANT")
public class InvoicesView extends Composite<FlexLayout> {
public InvoicesView() {
// laskujen näkymä
}
}
Tässä asetuksessa:
LoginViewon merkitty@AnonymousAccess, mikä sallii tarkistamattomien käyttäjien käyttää sitä.ProductsViewei sisällä turvallisuusannotaatiota, mikä tarkoittaa, että se vaatii todennuksen oletusarvoisesti (kunsecure-by-default-tila on käytössä).InvoicesViewvaatiiACCOUNTANT-roolin, joten vain käyttäjät, joilla on kirjanpito-oikeudet, voivat käyttää laskuja.
Miten turvallisuus toimii
Kun käyttäjä yrittää navigoida reitille, turvallisuusjärjestelmä seuraa tätä prosessia:
- Navigointi aloitetaan: Käyttäjä klikkaa linkkiä tai syöttää URL-osoitteen.
- Turvallisuuden tarkistus: Ennen komponentin renderöintiä järjestelmä arvioi turvallisuusannotaatioita ja sääntöjä.
- Päätös: Käyttäjän todennusstatus ja roolit huomioiden:
- Myönnä: Salli navigointi ja renderöi komponentti.
- Hylkää: Estä navigointi ja ohjaa kirjautumissivulle tai pääsy kielletty -sivulle.
- Renderöinti tai uudelleenohjaus: Joko pyydetty komponentti näytetään tai käyttäjä ohjataan asianmukaisesti.
Automaattisen täytäntöönpanon avulla turvallisuussäännöt otetaan käyttöön johdonmukaisesti koko sovelluksessa, joten pääsyhallinta hoidetaan ennen minkään komponentin renderöintiä, eikä kehittäjien tarvitse lisätä manuaalisia tarkistuksia mihinkään näkymään.
Todennus VS valtuutus
Jotta voit toteuttaa turvallisuuden sovelluksessasi oikein, on tärkeää ymmärtää näiden kahden käsitteen ero:
-
Todennus: Vahvistaa, kuka käyttäjä on. Tämä tapahtuu tyypillisesti kirjautumisen aikana, kun käyttäjä antaa henkilötiedot (käyttäjätunnus ja salasana). Kun käyttäjä on todennettu, hänen identiteettinsä tallennetaan istuntoon tai turvallisuuskontekstiin.
-
Valtuutus: Vahvistaa, mihin todennettu käyttäjä voi päästä. Tämä tarkoittaa tarkistamista, onko käyttäjällä vaadittavat roolit tai oikeudet päästä tiettyyn reittiin. Valtuutus tapahtuu aina, kun käyttäjä navigoi suojatulle reitille.
webforJ:n turvallisuusjärjestelmä käsittelee molemmat näkökohdat:
- Annotations kuten
@PermitAllkäsittelevät todennusvaatimuksia. - Annotations kuten
@RolesAllowedkäsittelevät valtuutusvaatimuksia.
Aloittaminen
Tämä opas olettaa, että käytät Spring Bootia yhdessä Spring Securityn kanssa, mikä on suositeltu lähestymistapa useimmille webforJ-sovelluksille. Spring Security tarjoaa alan standardin mukaisen todennuksen ja valtuutuksen automaattisen konfiguroinnin avulla Spring Bootin kautta.
Tämän dokumentaation loppuosa käynnistää sinut reittiesi suojaamisen Spring Securityn avulla, perusasetuksesta kehittyneisiin ominaisuuksiin. Jos et käytä Spring Bootia tai tarvitset mukautetun turvallisuustoteutuksen, katso Turvallisuusarkkitehtuurin opas oppiaksesi, miten järjestelmä toimii ja kuinka toteuttaa mukautettu turvallisuus.
Aiheet
Getting Started
Spring Security tarjoaa todennusta ja valtuutusta Spring Boot -sovelluksille. Kun se integroidaan webforJ:hen, se suojaa reittejä käyttämällä annotaatioita, kun taas Spring huolehtii käyttäjien hallinnasta ja istunnoista.
Security Annotations
Turvallisuusannotaatiot tarjoavat deklaratiivisen tavan hallita pääsyä reitteihin webforJ-sovelluksessa. Lisäämällä annotaatioita reittikomponentteihisi määrittelet, kuka voi käyttää kutakin näkymää ilman manuaalisten käyttöoikeustarkistusten kirjoittamista. Turvallisuusjärjestelmä valvoo näitä sääntöjä automaattisesti ennen kuin mitään komponenttia renderöidään.
Accessing User
Spring Security tallentaa todennetun käyttäjätiedon SecurityContextHolder-objektiin, joka tarjoaa pääsyn käyttäjätunnukseen, rooleihin ja valtuuksiin koko sovelluksessa. Tässä osiossa näytetään, kuinka hakemaan ja käyttämään tätä tietoa webforJ-näkymissä ja -komponenteissa.
SpEL Expressions
Spring Expression Language (SpEL) tarjoaa deklaratiivisen tavan määritellä valtuutus sääntöjä suoraan annotaatioissa. @RouteAccess annotaatio arvioi SpEL-lausekkeita hyödyntäen Spring Securityn sisäänrakennettuja valtuutusfunktioita.
Custom Evaluators
Write custom RouteSecurityEvaluators for context-aware checks like ownership verification beyond role-based permissions.
Architecture
4 kohdetta
Application Security
3 kohdetta