版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單元6SpringBoot安全控制學(xué)習(xí)目標(biāo)01掌握在SpringBoot項目中使用SpringSecurity的基本方法02運用Token實現(xiàn)權(quán)限認證03運用SSO實現(xiàn)單點登錄認證04運用JWT集成實現(xiàn)對信息加密任務(wù)6.1實現(xiàn)管理員與教職工角色認證學(xué)習(xí)目標(biāo)01理解Token的基本概念和工作原理Token是服務(wù)端生成并返回給客戶端的請求操作通行證。用戶首次登錄后,服務(wù)器生成Token并返回給客戶端,作為后續(xù)請求數(shù)據(jù)的通行證。在Token有效期內(nèi),客戶端使用Token訪問服務(wù)器,無需再次驗證用戶名和密碼。掌握基于Token的認證流程從請求中獲取Token信息。解析Token有效期并判斷其是否仍在有效期內(nèi)。Token過期時要求用戶重新登錄,更新Token信息。使用結(jié)束后從Redis中刪除用戶Token令牌。了解Token的存儲和刪除利用Redis等緩存數(shù)據(jù)庫存儲Token,便于讀取和更新。用戶注銷或Token過期時,從Redis中刪除Token令牌,確保系統(tǒng)安全。培養(yǎng)運用Token實現(xiàn)權(quán)限認證的技能理解SSO的基本概念和工作原理SSO(SingleSignOn)是一種用戶只需一次登錄,即可訪問多個關(guān)聯(lián)系統(tǒng)的功能。主要流程包括:獲取ticket令牌、從令牌獲取用戶名、判斷用戶名是否為error、判斷用戶名是否存在、判斷用戶對象是否存在、生成Token并創(chuàng)建cookie。培養(yǎng)運用SSO實現(xiàn)單點登錄認證的技能03用戶在一個系統(tǒng)登錄成功后,該系統(tǒng)生成并返回唯一的Ticket令牌給客戶端。01掌握SSO認證的實現(xiàn)方法02各系統(tǒng)共享一個統(tǒng)一的Ticket令牌。培養(yǎng)運用SSO實現(xiàn)單點登錄認證的技能客戶端在訪問其他系統(tǒng)時,將Ticket令牌攜帶在請求中。其他系統(tǒng)驗證Ticket令牌的有效性,通過則允許訪問。了解SSO認證的優(yōu)勢和挑戰(zhàn)培養(yǎng)運用SSO實現(xiàn)單點登錄認證的技能培養(yǎng)運用SSO實現(xiàn)單點登錄認證的技能優(yōu)勢提供統(tǒng)一、便捷的登錄方式,保護用戶隱私和安全。挑戰(zhàn)需要系統(tǒng)間的協(xié)調(diào)、令牌的唯一性和安全性,以及用戶隱私和數(shù)據(jù)安全問題。理解JWT基本概念和工作原理01JWT是包含頭、有效載荷和簽名的開放標(biāo)準(zhǔn),用于跨域身份認證。頭包含元數(shù)據(jù),有效載荷傳遞具體數(shù)據(jù),簽名確保數(shù)據(jù)完整性和安全性。掌握JWT生成和驗證流程02生成JWT需創(chuàng)建頭、有效載荷,并用指定算法簽名后拼接。驗證時,服務(wù)器解析并驗證簽名。通過則允許訪問資源。了解JWT的優(yōu)勢和挑戰(zhàn)03JWT優(yōu)勢在于跨域身份認證和數(shù)據(jù)加密安全校驗。但需考慮有效期、存儲和傳輸安全等挑戰(zhàn)。培養(yǎng)運用JWT集成實現(xiàn)對信息加密的技能知識準(zhǔn)備02SpringSecurity簡介要點三強大的認證管理SpringSecurity提供了多種認證方式,包括基于表單的登錄、基于HTTPBasic的登錄、基于LDAP的登錄等。同時,它還支持多種用戶信息存儲方式,包括從數(shù)據(jù)庫、LDAP服務(wù)器等獲取用戶信息。0102精細的授權(quán)管理SpringSecurity提供了靈活的授權(quán)管理機制,可以通過角色、權(quán)限等方式對用戶進行授權(quán)。同時,它還支持面向方面的權(quán)限控制,可以對不同的請求進行不同的權(quán)限控制。完善的安全特性SpringSecurity還提供了其他安全特性,如CSRF防護、HTTP請求頭校驗等,可以保護應(yīng)用程序免受攻擊和濫用。03SpringSecurity的功能與SpringMVC的集成SpringSecurity可以與SpringMVC框架無縫集成,通過注解和配置的方式,輕松實現(xiàn)安全認證和授權(quán)管理。與SpringBoot的集成SpringBoot是一個快速構(gòu)建Spring應(yīng)用程序的框架,SpringSecurity可以與SpringBoot完美結(jié)合,提供全面的安全保護。與SpringCloud的集成SpringCloud是Spring家族中用于構(gòu)建微服務(wù)的框架,SpringSecurity可以與SpringCloud集成,實現(xiàn)微服務(wù)之間的安全通信和身份認證。010203SpringSecurity與Spring框架的集成HTTPSecurity簡介目的:配置Web應(yīng)用中的授權(quán)策略,確定哪些請求需要何種權(quán)限才能訪問。mvcMatchers方法:指定需授權(quán)的Controller方法。例如,`.mvcMatchers("GET","/hello")`將匹配所有到`/hello`的GET請求。權(quán)限設(shè)置:在指定URL或方法后,可調(diào)用`permitAll`允許所有用戶訪問,或`authenticated`只允許已認證的用戶訪問。antMatchers方法:通過此方法,可指定需授權(quán)的URL模式。例如,`.antMatchers("/admin/")`將匹配所有以`/admin/`開頭的URL。HTTPSecurity簡介authorizeRequests()功能配置基于表單的登錄方式。loginPage方法用于指定登錄頁面的URL。例如,.loginPage("/login")將登錄頁面設(shè)置為/login。usernameParameter和passwordParameter方法用于指定用戶名和密碼的參數(shù)名。默認情況下,用戶名參數(shù)名為username,密碼參數(shù)名為password。登錄方式在配置formLogin后,用戶需通過提交表單的方式登錄系統(tǒng)。HTTPSecurity簡介formLogin()功能配置基于HTTPBasic的認證方式。HTTPBasic認證一種簡單的認證方式,通過在請求頭中發(fā)送用戶名和密碼進行認證。realmName方法指定領(lǐng)域名,出現(xiàn)在WWW-Authenticate響應(yīng)頭中。用戶登錄配置httpBasic后,用戶需提供用戶名和密碼登錄系統(tǒng)。HTTPSecurity簡介httpBasic()Logout()用于配置和實現(xiàn)用戶注銷登錄的功能。注銷登錄功能通過`logoutUrl`方法,可以設(shè)定用戶注銷后跳轉(zhuǎn)的URL地址。例如,`.logoutUrl("/logout")`會將注銷后的跳轉(zhuǎn)地址設(shè)為"/logout"。指定注銷URL使用`deleteCookies`方法,可以設(shè)定在注銷過程中需要刪除的Cookie。例如,`.deleteCookies("JSESSIONID")`會在用戶注銷時刪除名為"JSESSIONID"的Cookie。刪除指定Cookie在正確配置了Logout功能后,用戶可以通過訪問之前設(shè)定的注銷URL來執(zhí)行注銷操作。訪問注銷URL進行注銷HTTPSecurity簡介Logout()開啟Session管理:通過`sessionManagement`方法。開啟SessionFixation保護:使用`sessionFixationProtection`方法。SpringSecurity管理:配置后,SpringSecurity將管理應(yīng)用中的Session并采取安全措施保護用戶信息。SessionFixation保護:防止攻擊者利用SessionFixation攻擊竊取用戶信息的安全機制。用途:配置Session管理策略。HTTPSecurity簡介sessionManagerment()HTTPSecurity簡介01配置“記住我”功能:`rememberMe()`函數(shù)用于配置網(wǎng)站的“記住我”功能,使用戶在下次訪問時無需重新登錄。02指定Cookie名稱:通過`rememberMeCookieName()`方法,可以自定義“記住我”功能的Cookie名稱,如`.rememberMeCookieName("remember-me")`將設(shè)置Cookie名稱為"remember-me"。03設(shè)置Cookie的HTTPOnly屬性:`rememberMeCookieHttpOnly`屬性用于指定Cookie是否僅用于HTTP請求,不允許通過JavaScript訪問,增強安全性。04用戶登錄時選擇“記住我”:在用戶登錄時,可以提供“記住我”選項,選擇后系統(tǒng)將自動記錄用戶信息,實現(xiàn)下次自動登錄。rememberMe()01使用`Csrf()`方法配置CSRF防護。02CSRF攻擊手段簡介,可能竊取用戶信息或執(zhí)行惡意操作。03通過`csrfTokenRepository`方法指定CSRF令牌存儲策略,如存儲在HttpOnlyCookie中。04可以通過`disabled`方法禁用CSRF防護,但會降低系統(tǒng)安全性,不推薦使用。HTTPSecurity簡介Csrf()用戶請求控制相關(guān)的主要方法01用于匹配MVC風(fēng)格的請求路徑模式。在SpringSecurity中,可以使用Ant風(fēng)格或MVC風(fēng)格的路徑模式來匹配請求。功能描述02該方法接受一個字符串參數(shù),表示要匹配的請求路徑模式。例如,`mvcMatchers("/admin/")`將匹配所有以"/admin/"開頭的請求路徑。參數(shù)說明03mvcMatchers還可以與and方法一起使用,以構(gòu)建更復(fù)雜的請求路徑模式。例如,mvcMatchers("/admin/").and().mvcMatchers("/user/")將匹配所有以"/admin/"或"/user/"開頭的請求路徑。與and方法聯(lián)合使用04在使用時,需要關(guān)注路徑模式的精確性和可維護性。過于具體的路徑模式可能導(dǎo)致不必要的請求路徑被匹配。建議盡可能使用相對通用的路徑模式。注意事項mvcMatchers(Stringpatterns)主要作用組織多個路徑模式的匹配關(guān)系,通過鏈?zhǔn)秸{(diào)用,將多個路徑模式組合成完整的請求路徑模式集合。功能描述and()方法是SpringSecurity中用于連接多個請求路徑模式的方法,接受mvcMatchers或antMatchers作為參數(shù),返回新的連接對象,用于繼續(xù)添加路徑模式或認證配置。返回值與用法and()方法返回連接對象,需進行鏈?zhǔn)秸{(diào)用,避免直接賦值給非鏈?zhǔn)秸{(diào)用的對象,以確保表達式的完整性。and()方法定義anyRequest是SpringSecurity中用于匹配所有請求的方法,無參數(shù),返回一個特殊匹配器對象,表示匹配所有請求路徑。全局認證策略常用于配置全局的認證策略,例如對所有請求進行身份認證或授權(quán)處理,可以與認證或授權(quán)配置結(jié)合使用。使用策略雖然可以匹配所有請求,但應(yīng)根據(jù)具體業(yè)務(wù)需求確定是否使用。對于特定請求路徑的認證或授權(quán)處理,建議使用更精確的匹配方法,如`mvcMatchers`或`antMatchers`。anyRequest()access方法是SpringSecurity中用于配置訪問控制的方法,接受ACL表達式作為參數(shù)。access方法可與認證配置結(jié)合,實現(xiàn)基于用戶角色的訪問控制,如access("hasRole('ADMIN')")。ACL表達式支持復(fù)雜的權(quán)限控制需求,如使用通配符(*)表示任意角色或權(quán)限,或使用逗號分隔多個角色或權(quán)限。access(Stringattribute)方法定義hasAnyRole是SpringSecurity中用于匹配具有任意指定角色的用戶的方法。它接受一個由逗號分隔的角色列表字符串作為參數(shù)。應(yīng)用場景該方法常與認證配置結(jié)合,用于實現(xiàn)基于用戶角色的訪問控制。例如,`hasAnyRole("ADMIN,USER")`允許ADMIN或USER角色的用戶訪問資源。使用注意事項雖然`hasAnyRole`簡化了角色匹配,但具體使用需根據(jù)業(yè)務(wù)需求。若只需匹配特定角色,建議使用更精確的`hasRole`方法。hasAnyRole(Stringroles)任務(wù)實施03SpringBoot中使用SpringSecurity的基本流程在pom.xml文件中添加spring-boot-starter-security依賴在perties或application.yml文件中配置spring.security的相關(guān)屬性,例如用戶名、密碼等。添加SpringSecurity依賴010203創(chuàng)建一個繼承WebSecurityConfigurerAdapter的配置類,該類用于配置SpringSecurity的相關(guān)參數(shù)。在該類中重寫configure方法,用于配置認證邏輯、授權(quán)策略等。可以通過@EnableWebSecurity注解啟用SpringSecurity。創(chuàng)建SecurityConfig配置類可以使用http.formLogin()方法配置基于表單的登錄方式,通過http.logout()方法配置注銷登錄的方式。在SecurityConfig配置類中,通過http.authorizeRequests().antMatchers("/login").permitAll()方法配置訪問控制,允許所有用戶訪問登錄頁面。通過http.authorizeRequests().anyRequest().authenticated()方法配置其他請求的訪問控制,要求用戶登錄后才能訪問。配置認證邏輯基于Token的認證流程簡述
從請求中獲取Token信息客戶端在發(fā)起請求時,需要在請求頭或請求參數(shù)中攜帶Token信息。在服務(wù)器端,我們可以從請求頭或請求參數(shù)中提取Token信息。提取出的Token信息可能是一個字符串,我們需要將其解析為可讀的格式,例如JSON或XML。根據(jù)用戶身份信息,我們可以在服務(wù)器端的用戶庫中查找該用戶的具體信息,例如用戶名、用戶角色等。如果找到了用戶信息,我們就可以根據(jù)用戶角色和其他信息,判斷該用戶是否有權(quán)訪問請求的資源。在解析Token后,我們可以獲得Token中攜帶的用戶身份信息,例如用戶的唯一標(biāo)識(如UUID)或用戶名等。從Token中獲取用戶身份信息123Token過期后無效,需拒絕請求并返回錯誤信息。驗證Token是否過期被篡改的Token同樣無效,需拒絕請求并返回錯誤信息。檢查Token是否被篡改若Token有效且未過期,根據(jù)用戶身份信息執(zhí)行相應(yīng)的權(quán)限認證操作。執(zhí)行權(quán)限認證操作驗證Token有效性在驗證完令牌的有效性之后,需要在Redis中更新過期的token信息。將現(xiàn)在的系統(tǒng)時間更新到用戶對象loginUser中,然后通過將系統(tǒng)現(xiàn)在的時間,加上令牌有效時間,計算出該對象的令牌下一次失效的時間。更新過期的token信息用戶使用結(jié)束后,需要從Redis中刪除當(dāng)前用戶的token令牌。從token令牌中獲取用戶的userKey信息,并調(diào)用刪除方法將其刪除。刪除當(dāng)前用戶的token令牌基于SSO的認證SSO認證的流程為:(1)通過@RequestParam注解,在用戶get請求上獲取ticket令牌(2)通過TokenUtils.roam_check(ticket)方法,從令牌上獲取用戶的用戶名(3)判斷用戶的用戶名是否為error,如果用戶名為error則提示用戶重新登錄(4)判讀用戶的用戶名是否存在,如果用戶名存在,根據(jù)用戶名查找用戶對象(5)判斷查找的用戶對象是否存在,如果用戶為空則創(chuàng)建一個新的用戶對象(6)根據(jù)查詢到的用戶對象的用戶名生成Token,并創(chuàng)建cookie,將Token驗證放到cookie中基于SSO的認證認證失敗處理使用AuthenticationFailureHandler接口:在認證失敗時,利用SpringSecurity的AuthenticationFailureHandler接口來處理。該接口提供的onAuthenticationFailure方法可用于打印訪問失敗的提示信息。配置SecurityConfig:在SecurityConfig類中,使用authenticationManagerBuilder對象的.and()方法,通過.authenticationFailureHandler()方法,將自定義的AuthenticationFailureHandler實現(xiàn)類注入到SpringSecurity中。自定義AuthenticationFailureHandler:在自定義的AuthenticationFailureHandler實現(xiàn)類中,獲取用戶訪問的頁面地址和認證失敗原因,然后打印相應(yīng)的提示信息。打印訪問失敗提示信息自定義認證失敗處理類在onAuthenticationFailure方法中,我們可以獲取到用戶想要訪問的頁面地址和認證失敗的原因,然后打印出相應(yīng)的提示信息。我們可以創(chuàng)建一個自定義的認證失敗處理類,該類需要實現(xiàn)AuthenticationFailureHandler接口,并重寫onAuthenticationFailure方法。我們需要在SecurityConfig配置類中,通過authenticationManagerBuilder對象的.and()方法,調(diào)用.authenticationFailureHandler()方法,將自定義的AuthenticationFailureHandler實現(xiàn)類注入到SpringSecurity中。在SecurityConfig配置類中,我們可以通過Lambda表達式來處理認證失敗的情況。具體實現(xiàn)方式是在authenticationManagerBuilder對象的.and()方法中,調(diào)用.authenticationFailureHandler((request,response,exception)->{...})方法,然后在Lambda表達式中處理認證失敗的情況。在Lambda表達式中,我們可以獲取到用戶想要訪問的頁面地址和認證失敗的原因,然后打印出相應(yīng)的提示信息。使用Lambda表達式處理認證失敗注銷登錄配置從token令牌中獲取userKey在注銷時,首先從token令牌解析出userKey。此key是用戶登錄時由系統(tǒng)生成并存于Redis的。通過userKey獲取用戶對象利用獲取的userKey,調(diào)用登錄用戶的方法從Redis中查找并返回相應(yīng)的用戶對象。檢查用戶對象是否存在在獲取用戶對象后,檢查其是否存在。若不存在,則表示用戶已注銷,返回相關(guān)提示信息;若存在,則繼續(xù)注銷操作。獲取已登錄用戶的認證信息調(diào)用tokenService的delLoginUser方法在用戶對象獲取后,調(diào)用此方法來傳遞當(dāng)前用戶的token信息,以便從Redis中刪除相應(yīng)的令牌。檢查Redis中的token信息在調(diào)用delLoginUser方法后,檢查Redis中是否仍存在該用戶的token信息。若不存在,則返回成功刪除的提示;若存在,則繼續(xù)排查原因。檢查tokenService和RedisCache的工作狀態(tài)在Redis中存在用戶的token信息時,檢查這兩個組件是否正常工作。若有故障,及時排查并修復(fù);若均正常,進一步分析原因并采取相應(yīng)措施。從Redis中刪除當(dāng)前用戶的token信息JWT集成概述JWT定義JWT,即JSONWebToken,是一種用于Web應(yīng)用之間安全傳輸信息的開放標(biāo)準(zhǔn),常用于身份驗證和授權(quán)。JW
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版智慧社區(qū)物業(yè)管理委托合同模板3篇
- 2025年度鋼材回收利用合同
- 2025年全球及中國放射性標(biāo)記服務(wù)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球氮化鎵半導(dǎo)體激光器行業(yè)調(diào)研及趨勢分析報告
- 2025年度個人知識產(chǎn)權(quán)侵權(quán)糾紛調(diào)解協(xié)議3篇
- 2025年度個人房產(chǎn)過戶貸款過橋合同3篇
- 2025版建筑起重機械施工安全協(xié)議書3篇
- 2025年度個人股權(quán)收購與整合服務(wù)合同4篇
- 2025年度個人牧場與乳制品企業(yè)合作合同3篇
- 2025年度鋼管工程建設(shè)項目材料供應(yīng)合同2篇
- 血性胸水的護理課件
- 重癥血液凈化血管通路的建立與應(yīng)用中國專家共識(2023版)
- 雕塑采購?fù)稑?biāo)方案(技術(shù)標(biāo))
- 北京房地產(chǎn)典當(dāng)合同書
- 文學(xué)類文本閱讀 高一語文統(tǒng)編版暑假作業(yè)
- 果殼中的宇宙
- 《霧都孤兒人物分析4000字(論文)》
- MZ/T 039-2013老年人能力評估
- GB/T 8005.3-2008鋁及鋁合金術(shù)語第3部分:表面處理
- 相親資料登記表
- 2022年中國電信維護崗位認證動力專業(yè)考試題庫大全-下(判斷、填空、簡答題)
評論
0/150
提交評論