国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringSecurity安全框架簡介

這篇具有很好參考價(jià)值的文章主要介紹了SpringSecurity安全框架簡介。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

框架介紹

Spring Security是Spring全家桶的成員,官方對(duì)它的介紹是:

Spring Security 是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架。
它是保護(hù)基于 Spring 的應(yīng)用程序的事實(shí)標(biāo)準(zhǔn)。
Spring Security 是一個(gè)專注于為 Java 應(yīng)用程序提供身份驗(yàn)證和授權(quán)的框架。
與所有 Spring 項(xiàng)目一樣,Spring Security 的真正強(qiáng)大之處在于它可以輕松擴(kuò)展以滿足自定義需求。

從介紹里可以看出,Spring Security是一個(gè)可定制擴(kuò)展的框架,它主要提供了身份驗(yàn)證和訪問控制功能。而這兩個(gè)功能也是基于框架的擴(kuò)展機(jī)制開發(fā)的,下面讓我們一起了解一下Spring Security的基本概念和擴(kuò)展機(jī)制的實(shí)現(xiàn)原理。

基本概念

要了解Spring Security內(nèi)部的運(yùn)行機(jī)制,要先了解它包含的基本概念,以及對(duì)應(yīng)的功能。下面是Spring Security主要的概念:

  • 安全過濾器:Spring Security通過向Servlet注冊(cè)一個(gè)Filter來攔截請(qǐng)求,所以Spring Security要提供自己的過濾器。
  • 安全過濾器配置類:為安全過濾器提供統(tǒng)一的配置管理,配置類是WebSecurity
  • 過濾器鏈:過濾器鏈?zhǔn)菫榱酥С謶?yīng)用在不同業(yè)務(wù)場景有不同的安全規(guī)則需求。一個(gè)應(yīng)用可以注冊(cè)多個(gè)過濾器鏈,一個(gè)過濾器鏈包含多個(gè)過濾器,一個(gè)請(qǐng)求會(huì)經(jīng)過所有的過濾器鏈。
  • 過濾器鏈配置類:為過濾器鏈提供統(tǒng)一的配置管理,并支持DSL的方式來描述配置,配置類是HttpSecurity
  • 業(yè)務(wù)過濾器:業(yè)務(wù)過濾器會(huì)注冊(cè)到過濾器鏈,實(shí)現(xiàn)功能的插拔。
  • 業(yè)務(wù)過濾器配置類:用來初始化和注冊(cè)業(yè)務(wù)過濾器,也可直接注冊(cè)業(yè)務(wù)過濾器。
  • 認(rèn)證:是指驗(yàn)證用戶的身份是否合法。Spring Security 提供了多種認(rèn)證方式,如基于用戶名和密碼的認(rèn)證、基于證書的認(rèn)證、LDAP 認(rèn)證、OpenID 認(rèn)證等。
  • 授權(quán):是指根據(jù)用戶的身份和角色,決定其是否有權(quán)訪問應(yīng)用程序的資源。Spring Security 支持基于角色的授權(quán)、基于表達(dá)式的授權(quán)等多種授權(quán)方式。

擴(kuò)展原理

Spring Security的功能是基于Filter來實(shí)現(xiàn),當(dāng)一個(gè)請(qǐng)求進(jìn)來,會(huì)通過全局的安全過濾器判斷,當(dāng)前請(qǐng)求Spring Security是否需要攔截。如果需要攔截,那么請(qǐng)求會(huì)流入過濾器鏈,交給過濾鏈的過濾器來處理。

業(yè)務(wù)過濾器可以選擇跳過請(qǐng)求、執(zhí)行操作、結(jié)束請(qǐng)求、將請(qǐng)求交給下一個(gè)過濾器。不同的過濾器就實(shí)現(xiàn)了不同的功能,我們以認(rèn)證功能為例,簡單介紹它們的實(shí)現(xiàn)原理。

Spring Security默認(rèn)提供了基于用戶名和密碼的認(rèn)證的功能,實(shí)現(xiàn)這個(gè)功能的Filter是UsernamePasswordAuthenticationFilter,從名字就可以看出它的功能。Spring Security會(huì)判斷當(dāng)前請(qǐng)求是不是登錄的請(qǐng)求,是的話UsernamePasswordAuthenticationFilter會(huì)在請(qǐng)求體里拿到用戶名和密碼,走一遍校驗(yàn)的流程,得到一個(gè)Authentication 對(duì)象來記錄用戶名和認(rèn)證結(jié)果,并且會(huì)把信息存到安全上下文里。

后面訪問其它接口時(shí),校驗(yàn)權(quán)限的Filter里判斷當(dāng)前Authentication 對(duì)象能否訪問資源。如果沒有權(quán)限,就會(huì)拋出AccessDeniedException 異常。異常處理的Filter會(huì)處理Spring Security拋出的異常,給用戶合適的反饋。

所以,Spring Security的認(rèn)證功能是通過認(rèn)證(AuthenticationFilter)、授權(quán)(AuthorizationFilter)、異常處理(ExceptionTranslationFilter)三個(gè)Filter配合實(shí)現(xiàn)。通過組合不同的Filter,還能實(shí)現(xiàn)session管理、CSRF攔截等功能。

框架包含的功能

Spring Security框架默認(rèn)提供了一些Filter,來實(shí)現(xiàn)對(duì)應(yīng)用程序的安全保護(hù)。下面簡單介紹一下各個(gè)Filter的功能:

  • DisableEncodeUrlFilter:禁止對(duì)URL進(jìn)行編碼,為了禁止在URL里包含session id。在某些無法使用cookie的情況,會(huì)將session id放在URL里。
  • WebAsyncManagerIntegrationFilter:提供異步請(qǐng)求的支持。
  • SecurityContextHolderFilter:獲取安全上下文。
  • HeaderWriterFilter:在響應(yīng)頭上加些安全的頭標(biāo)識(shí)。
  • CsrfFilter:提供CSRF保護(hù)。
  • LogoutFilter:提供認(rèn)證登出邏輯。
  • UsernamePasswordAuthenticationFilter:提供基于用戶名和密碼的認(rèn)證方式。
  • DefaultLoginPageGeneratingFilter:生成默認(rèn)登錄頁。
  • DefaultLogoutPageGeneratingFilter:生成默認(rèn)登出頁。
  • BasicAuthenticationFilter:提供基于Basic的認(rèn)證方式。
  • RequestCacheAwareFilter:提供請(qǐng)求緩存功能,用戶請(qǐng)求出發(fā)登錄認(rèn)證,在認(rèn)證成功之后,繼續(xù)處理之前的請(qǐng)求,所以要保存之前請(qǐng)求的數(shù)據(jù)。
  • SecurityContextHolderAwareRequestFilter:通過Spring Security實(shí)現(xiàn)HttpServletRequest里Servlet3.0新增的authenticate()、login()、logout()這些方法。
  • AnonymousAuthenticationFilter:提供匿名請(qǐng)求的處理邏輯。
  • ExceptionTranslationFilter:提供異常處理邏輯。
  • AuthorizationFilter:提供授權(quán)相關(guān)的邏輯。

安全配置

Spring Security允許用戶為框架提供配置信息,來定制安全策略。一般情況,我們只需關(guān)注兩個(gè)配置對(duì)象:

  • WebSecurity
  • HttpSecurity

Spring Security6.0版本在配置方式上做了很大改動(dòng),支持用戶通過提供Bean來設(shè)置配置,刪除了基于WebSecurityConfigurerAdapter的配置方式。

WebSecurity

WebSecurity用來配置安全過濾器,配置對(duì)所有請(qǐng)求都生效。Spring Security6.0推薦的配置方式是注冊(cè)一個(gè)WebSecurityCustomizer的Bean。

@Configuration
public class SecurityConfiguration {

    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
    }

}

下面這種方式已經(jīng)失效!下面這種方式已經(jīng)失效!下面這種方式已經(jīng)失效!

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/ignore1", "/ignore2");
    }

}

HttpSecurity

HttpSecurity用來配置過濾鏈,配置對(duì)當(dāng)前過濾鏈里的請(qǐng)求生效。Spring Security6.0推薦的配置方式是注冊(cè)一個(gè)SecurityFilterChain的Bean。

@Configuration
public class SecurityConfiguration {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
        return http.build();
    }

}

下面這種方式已經(jīng)失效!下面這種方式已經(jīng)失效!下面這種方式已經(jīng)失效!

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
    }

}

總結(jié)

我們介紹了Spring Security的基本概念和常見功能,分析了Spring Security擴(kuò)展機(jī)制的實(shí)現(xiàn)原理,最后對(duì)比了Spring Security6.0的一些改動(dòng)??梢姡褂肧pring Security我們通過提供自己的業(yè)務(wù)過濾器,很容易實(shí)現(xiàn)功能的擴(kuò)展。文章來源地址http://www.zghlxwxcb.cn/news/detail-720396.html

到了這里,關(guān)于SpringSecurity安全框架簡介的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot集成 SpringSecurity安全框架

    SpringBoot集成 SpringSecurity安全框架

    提示:以下是本篇文章正文內(nèi)容,Java 系列學(xué)習(xí)將會(huì)持續(xù)更新 我們時(shí)常會(huì)在 QQ 上收到別人發(fā)送的釣魚網(wǎng)站鏈接,只要你在登錄QQ賬號(hào)的情況下點(diǎn)擊鏈接,那么不出意外,你的號(hào)已經(jīng)在別人手中了。實(shí)際上這一類網(wǎng)站都屬于 惡意網(wǎng)站 ,專門用于盜取他人信息,執(zhí)行非法操作,

    2024年02月07日
    瀏覽(24)
  • SpringSecurity分布式安全框架

    SpringSecurity分布式安全框架

    Spring Security是一個(gè)基于Spring框架的安全框架,它提供了全面的安全解決方案,包括用戶認(rèn)證和用戶授權(quán)等Web應(yīng)用安全性問題。Spring Security可以輕松擴(kuò)展以滿足自定義需求,它的真正強(qiáng)大之處在于它可以輕松擴(kuò)展以滿足自定義要求。 對(duì)于分布式系統(tǒng)來說,Spring Security可以結(jié)合

    2024年02月08日
    瀏覽(24)
  • SpringSecurity安全框架 ——認(rèn)證與授權(quán)

    SpringSecurity安全框架 ——認(rèn)證與授權(quán)

    目錄 ?一、簡介 1.1 什么是Spring Security 1.2?工作原理 1.3?為什么選擇Spring Security 1.4?HttpSecurity 介紹?? 二、用戶認(rèn)證 2.1 導(dǎo)入依賴與配置 2.2?用戶對(duì)象UserDetails 2.3?業(yè)務(wù)對(duì)象UserDetailsService 2.4 SecurityConfig配置 2.4.1?BCryptPasswordEncoder密碼編碼器 2.4.2?RememberMe 記住登錄信息 2.4.3?CSR

    2024年02月04日
    瀏覽(19)
  • SpringSecurity安全框架學(xué)習(xí)——@PreAuthorize的實(shí)現(xiàn)原理

    SpringSecurity安全框架學(xué)習(xí)——@PreAuthorize的實(shí)現(xiàn)原理

    首先我們打開@PreAuthorize注解的源碼,然后按住Ctrl并單擊PreAuthorize,可以看到在EnableMethodSecurity注解中有引用 (本文使用IDEA,后續(xù)不再復(fù)述) 查看EnableMethodSecurity源碼,可以到,其引用了MethodSecuritySelector 按照慣例,打開MethodSecuritySelector 可以看到,當(dāng)prePostEnabled=true時(shí),會(huì)注

    2023年04月16日
    瀏覽(20)
  • 【Java-框架-SpringSecurity】隨筆

    【Java-框架-SpringSecurity】隨筆

    項(xiàng)目文件; 【1】 【2】 【3】 【4】 【5】 【6】 【7】

    2024年01月18日
    瀏覽(22)
  • SpringSecurity框架學(xué)習(xí)與使用

    SpringSecurity框架學(xué)習(xí)與使用

    引入相關(guān)的依賴,SpringBoot的版本是2.7.10; 前端頁面編寫,home.html、hello.html、login.html hello.html home.html login.html 視圖控制,訪問對(duì)應(yīng)的url跳轉(zhuǎn)到不同的頁面 SpringSecurity配置 結(jié)果 登錄失敗時(shí) 登錄成功 認(rèn)證 上面的demo中,我們是把登錄密碼放在內(nèi)存中記錄著的,除了這種方式外我

    2024年02月02日
    瀏覽(18)
  • SpringSecurity框架快速搭建(SpringBoot整合Security)

    SpringSecurity框架快速搭建(SpringBoot整合Security)

    目錄 Common類 Config類 CorsConfig(解決跨域問題) RedisConfig (Redis數(shù)據(jù)庫配置) Spring Security (配置安全功能的類) expression類(Expression 類通常用于權(quán)限控制和安全策略的定義) SGExpressionRoot(判斷用戶是否具有某個(gè)權(quán)限) Filter類 JwtAuthenticationTokenFilter(解析token看是否放行) Handler類

    2024年02月09日
    瀏覽(21)
  • SpringSecurity安全授權(quán)

    SpringSecurity安全授權(quán)

    目錄 前言 正文 1.基本流程 2.基本用法 3.配置項(xiàng)? 4.HttpSecurity 方式和內(nèi)存認(rèn)證方式? 5.認(rèn)證流程 6.基于數(shù)據(jù)庫查詢的登錄驗(yàn)證 7.多種角色權(quán)限認(rèn)證? 8.自定義權(quán)限認(rèn)證? 總結(jié) 安全對(duì)于任何系統(tǒng)來說都是非常重要的,權(quán)限的分配和管理一直都是開發(fā)者需要特別重視的。一旦缺乏基

    2024年02月04日
    瀏覽(12)
  • Spring Security詳細(xì)講解(JWT+SpringSecurity登入案例)

    Spring Security詳細(xì)講解(JWT+SpringSecurity登入案例)

    1.SpringSecurity SpringSecurity 是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架 。它是保護(hù)基于 Spring 的應(yīng)用程序的事實(shí)上的標(biāo)準(zhǔn)。 SpringSecurity 是一個(gè)致力于為 Java 應(yīng)用程序提供身份驗(yàn)證和授權(quán)的框架 。像所有 Spring 項(xiàng)目一樣,Spring Security 的真正強(qiáng)大之處在于它可以如何輕

    2024年02月02日
    瀏覽(23)
  • 【 SpringSecurity】第三方認(rèn)證&方法級(jí)別安全

    在登錄網(wǎng)頁時(shí),時(shí)常有用其他賬號(hào)登錄的方式,它們能夠讓用戶避免在Web站點(diǎn)特定的登錄頁上自己輸入憑證信息。這樣的Web站點(diǎn)提供了一種通過其他網(wǎng)站(如Facebook)登錄的方式,用戶可能已經(jīng)在這些其他的網(wǎng)站登錄過了 這種類型的認(rèn)證是基于OAuth2或OpenID Connect(OIDC)的。OAut

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包