AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

全新Spring Security安全管理配置使用詳解

來源: 責(zé)編: 時間:2024-02-02 17:00:41 256觀看
導(dǎo)讀環(huán)境:SpringBoot2.7.12 + JDK211. 簡介Spring Security 是一個提供身份驗證、授權(quán)和防護常見攻擊的框架。它為確保命令式和反應(yīng)式應(yīng)用程序的安全提供一流的支持,是確保基于 Spring 的應(yīng)用程序安全的事實標準。Spring Sc

環(huán)境:SpringBoot2.7.12 + JDK21wzR28資訊網(wǎng)——每日最新資訊28at.com

1. 簡介

Spring Security 是一個提供身份驗證、授權(quán)和防護常見攻擊的框架。它為確保命令式和反應(yīng)式應(yīng)用程序的安全提供一流的支持,是確保基于 Spring 的應(yīng)用程序安全的事實標準。wzR28資訊網(wǎng)——每日最新資訊28at.com

Spring Scurity核心分為2大模塊:wzR28資訊網(wǎng)——每日最新資訊28at.com

  1. 認證(Authentication):認證是建立一個他聲明的主體的過程(一個主體一般是指用戶、設(shè)備或一些可以在你的應(yīng)用程序中執(zhí)行的其他系統(tǒng))。常見的身份認證一般要求用戶提供用戶名和密碼。系統(tǒng)通過校驗用戶名和密碼來完成認證過程。
  2. 授權(quán)(Authorization):當(dāng)身份認證通過后,去訪問系統(tǒng)的資源,系統(tǒng)會判斷用戶是否擁有訪問該資源的權(quán)限,只允許訪問有權(quán)限的系統(tǒng)資源,沒有權(quán)限的資源將無法訪問,這個過程叫用戶授權(quán)。比如會員管理模塊有增刪改查功能,有的用戶只能進行查詢,而有的用戶可以進行修改、刪除。一般來說,系統(tǒng)會為不同的用戶分配不同的角色,而每個角色則對應(yīng)一系列的權(quán)限。

從Spring Security5.7開始之前的安全配置方式及Web授權(quán)處理方式發(fā)生了變化,接下來將詳細介紹配置的變化。wzR28資訊網(wǎng)——每日最新資訊28at.com

2. 安全配置

2.1 配置方式

在5.7之前的版本自定義安全配置通過如下方式:wzR28資訊網(wǎng)——每日最新資訊28at.com

@Componentpublic class SecurityConfig extends WebSecurityConfigurerAdapter {  protected void configure(HttpSecurity http) throws Exception {    // ...  }}

在5.7之后推薦如下配置方式wzR28資訊網(wǎng)——每日最新資訊28at.com

@Configurationpublic class SecurityConfig {  @Bean  @Order(Ordered.HIGHEST_PRECEDENCE)  SecurityFilterChain controllerFilterChain(HttpSecurity http) throws Exception {    // ...    return http.build() ;  }}

通過配置安全過濾器鏈的方式配置,具體內(nèi)部的配置細節(jié)還都是圍繞著HttpSecurity進行配置。wzR28資訊網(wǎng)——每日最新資訊28at.com

2.2 配置不同的過濾器鏈

在一個配置文件中我們可以非常方便的配置多個過濾器鏈,針對不同的請求進行攔截。wzR28資訊網(wǎng)——每日最新資訊28at.com

@Configurationpublic class SecurityConfig {  @Bean  @Order(1)  SecurityFilterChain controllerFilterChain(HttpSecurity http) {    // 當(dāng)前過濾器鏈只對/demos/**, /login, /logout進行攔截    http.requestMatchers(matchers -> matchers.antMatchers("/demos/**", "/login", "/logout")) ;    http.authorizeHttpRequests().antMatchers("/**").authenticated() ;    http.formLogin(Customizer.withDefaults()) ;    // ...    return http.build() ;  }  @Bean  @Order(2)  SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) throws Exception {    // 該過濾器只會對/ac/**的請求進行攔截    http.requestMatchers(matchers -> matchers.antMatchers("/ac/**")) ;    // ...    http.formLogin(Customizer.withDefaults());    return http.build();  }}

以上配置了2個過濾器鏈,根據(jù)配置的@Order值,優(yōu)先級分別:controllerFilterChain,managementSecurityFilterChain。當(dāng)訪問除上面指定的uri模式以為的請求都將自動放行。wzR28資訊網(wǎng)——每日最新資訊28at.com

2.3 用戶驗證配置

在5.7版本之前,我們通過如下配置配置內(nèi)存用戶wzR28資訊網(wǎng)——每日最新資訊28at.com

public class SecurityConfig extends WebSecurityConfigurerAdapter {  @Override  protected void configure(AuthenticationManagerBuilder auth) throws Exception {    auth.inMemoryAuthentication()      .passwordEncoder(NoOpPasswordEncoder.getInstance())      .withUser("admin")      .password("123123")      .authorities(Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN"))) ;  }}

5.7 只有由于推薦的是通過自定義SecurityFilterChain的方式,所以我們需要通過如下的方式進行配置:wzR28資訊網(wǎng)——每日最新資訊28at.com

@Configurationpublic class SecurityConfig {  @Bean  @Order(0)  SecurityFilterChain controllerFilterChain(HttpSecurity http) throws Exception {    AuthenticationManagerBuilder builder = http.getSharedObject(AuthenticationManagerBuilder.class) ;    builder.inMemoryAuthentication()      .passwordEncoder(NoOpPasswordEncoder.getInstance())      .withUser("admin")      .password("123123")      .authorities(Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN"))) ;    // ...  }}

2.4 授權(quán)方式

在5.7之后推薦配置認證授權(quán)的方式如下wzR28資訊網(wǎng)——每日最新資訊28at.com

@Beanpublic SecurityFilterChain apiSecurityFilterChain(HttpSecurity http) throws Exception {  http.authorizeHttpRequests().antMatchers("/users/**").hasAnyRole("ADMIN") ;  // ...  return http.build() ;}

通過上面的authorizeHttpRequests方式進行授權(quán)配置,會向過濾器鏈中添加AuthorizationFilter過濾器。在該過濾器中會進行權(quán)限的驗證。wzR28資訊網(wǎng)——每日最新資訊28at.com

2.5 自定義授權(quán)決策

如果需要對請求的uri進行更加精確的匹配驗證,如:/users/{id},需要驗證只有這里的id值為666才方向。wzR28資訊網(wǎng)——每日最新資訊28at.com

@Beanpublic SecurityFilterChain apiSecurityFilterChain(HttpSecurity http) throws Exception {  http.authorizeHttpRequests(registry -> {    registry.antMatchers("/users/{id}").access(new AuthorizationManager<RequestAuthorizationContext>() {      @Override      public AuthorizationDecision check(Supplier<Authentication> authentication,          RequestAuthorizationContext object)        // 獲取路徑上的值信息,其中key=id,value=xxx        Map<String, String> variables         // 這里的第一個參數(shù)是boolean,確定了授權(quán)是否通過        return new AuthorityAuthorizationDecision(variables.get("id").equals("666"), Arrays.asList(new SimpleGrantedAuthority("D"))) ;      }    }) ;  }) ;}

2.6 全局認證

如果配置了多個不同的SecurityFilterChain,而每個認證都使用相同的用戶體系,那么我們可以定義AuthenticationProvider或者UserDetailsService 類型的Bean即可。wzR28資訊網(wǎng)——每日最新資訊28at.com

@BeanUserDetailsService userDetailsService() {  return new UserDetailsService() {    @Override    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {      return null;    }  } ;}@BeanAuthenticationProvider authenticationProvider() {  return new AuthenticationProvider() {    @Override    public Authentication authenticate(Authentication authentication) throws AuthenticationException {      return null;    }    @Override    public boolean supports(Class<?> authentication) {      return false;    }  } ;}


wzR28資訊網(wǎng)——每日最新資訊28at.com

以上是本篇文章的全部內(nèi)容, 希望對你有所幫助。wzR28資訊網(wǎng)——每日最新資訊28at.com

完畢!!!wzR28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-71943-0.html全新Spring Security安全管理配置使用詳解

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊如何提高API性能的綜合策略

下一篇: Nodejs - 九步開啟JWT身份驗證

標簽:
  • 熱門焦點
  • 天貓精靈Sound Pro體驗:智能音箱沒有音質(zhì)?來聽聽我的

    這幾年除了手機作為智能生活終端最主要的核心之外,第二個可以成為中心點的產(chǎn)品是什么?——是智能音箱。 手機在執(zhí)行命令的時候有兩種操作方式,手和智能語音助手,而智能音箱只
  • 得物效率前端微應(yīng)用推進過程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團隊的重要性,甚至是決定其在某個行業(yè)競爭中突圍的關(guān)鍵,是企業(yè)長久生存的根本。得物
  • WebRTC.Net庫開發(fā)進階,教你實現(xiàn)屏幕共享和多路復(fù)用!

    WebRTC.Net庫:讓你的應(yīng)用更親民友好,實現(xiàn)視頻通話無痛接入! 除了基本用法外,還有一些進階用法可以更好地利用該庫。自定義 STUN/TURN 服務(wù)器配置WebRTC.Net 默認使用 Google 的
  • Python異步IO編程的進程/線程通信實現(xiàn)

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現(xiàn)方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學(xué)好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現(xiàn)百度,功能雖然實現(xiàn)了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 中國家電海外掘金正當(dāng)時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態(tài)LT(ID:LingTai_LT)2023年,出海市場戰(zhàn)況空前,中國創(chuàng)業(yè)者在海外紛紛摩拳擦掌,以期能夠把中國的商業(yè)模式、創(chuàng)業(yè)理念、戰(zhàn)略打法輸出海外,他們依
  • 余承東:AI大模型技術(shù)的發(fā)展將會帶來下一代智能終端操作系統(tǒng)的智慧體驗

    8月4日消息,2023年華為開發(fā)者大會(HDC.Together)今天正式開幕,華為發(fā)布HarmonyOS 4、全新升級的鴻蒙開發(fā)套件、HarmonyOS Next開發(fā)者預(yù)覽版本等一系列
Top