Spring Security整合Oauth2實(shí)現(xiàn)流程詳解
一、創(chuàng)建項(xiàng)目并導(dǎo)入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
注:這里的oauth2不是springboot那個(gè),這是springsecurity。
Oauth2一共有四種認(rèn)證模式是
本篇是password的認(rèn)證模式,用于前后端分離登陸
第三方登陸一般是授權(quán)碼模式
二、相關(guān)配置和代碼
注:授權(quán)服務(wù)器和資源服務(wù)器一般是分開(kāi)來(lái)的,我這里就不分開(kāi)了
2.1)application.properties
spring.redis.host=192.168.21.135
spring.redis.port=6379
spring.redis.database=0
spring.redis.password=520hufei520
2.2)創(chuàng)建授權(quán)服務(wù)
2.2.1)實(shí)現(xiàn)AuthorizationServiceConfigurerAdapter
@Configuration表示這個(gè)一個(gè)配置類
@EnableAuthorizationServer表示開(kāi)啟授權(quán)服務(wù)
2.2.2)注入AuthenticationManager、RedisConnectionFactory、UserDetailsService
AuthenticationManager表示支持password認(rèn)證模式
RedisConnectionFactory登陸成功后的token需要存在redis里面,因?yàn)閞edis里面有過(guò)期機(jī)制
UserDetailsService里面存放著用戶信息
2.2.3)重寫(xiě)方法
2.3)創(chuàng)建資源服務(wù)
2.3.1)實(shí)現(xiàn)ResourceServerConfigurerAdapter
@configuration表示這是一個(gè)配置類
@enbaleResourceServer表示開(kāi)啟資源服務(wù)
2.3.2)重寫(xiě)方法
2.4)創(chuàng)建Security配置類
2.4.1)實(shí)現(xiàn)WebSecurityConfigurerAdapter
2.4.2)將授權(quán)服務(wù)需要的兩個(gè)bean,提供給它
@Bean表示告訴方法,產(chǎn)生一個(gè)Bean對(duì)象,然后這個(gè)Bean對(duì)象交給Spring管理。產(chǎn)生這個(gè)Bean對(duì)象的方法Spring只會(huì)調(diào)用一次,隨后這個(gè)Spring將會(huì)將這個(gè)Bean對(duì)象放在自己的IOC容器中。
@Bean和@Component作用一樣都是將bean注冊(cè)到spring容器中去
2.4.3)重寫(xiě)方法
2.5)創(chuàng)建Controller
三、測(cè)試&效果
3.1)獲取訪問(wèn)資源服務(wù)的token
3.2)訪問(wèn)資源服務(wù)
3.3)刷新token
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- spring cloud oauth2 實(shí)現(xiàn)用戶認(rèn)證登錄的示例代碼
- Spring Cloud OAuth2 實(shí)現(xiàn)用戶認(rèn)證及單點(diǎn)登錄的示例代碼
- Spring Cloud下OAUTH2注銷的實(shí)現(xiàn)示例
- Spring Cloud下基于OAUTH2認(rèn)證授權(quán)的實(shí)現(xiàn)示例
- Spring Security OAuth過(guò)期的解決方法
- Spring Security OAuth2 授權(quán)碼模式的實(shí)現(xiàn)
- 使用spring oauth2框架獲取當(dāng)前登錄用戶信息的實(shí)現(xiàn)代碼
- Spring cloud oauth2如何搭建認(rèn)證資源中心
相關(guān)文章
Spring @Scheduler使用cron表達(dá)式時(shí)的執(zhí)行問(wèn)題詳解
Spring給程序猿們帶來(lái)了許多便利。下面這篇文章主要給大家介紹了關(guān)于Spring @Scheduler使用cron表達(dá)式時(shí)的執(zhí)行問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Springboot實(shí)現(xiàn)Excel批量導(dǎo)入數(shù)據(jù)并保存到本地
這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)Excel批量導(dǎo)入數(shù)據(jù)并將文件保存到本地效果的方法,文中的示例代講解詳細(xì),需要的可以參考一下2022-09-09超詳細(xì)講解Java秒殺項(xiàng)目登陸模塊的實(shí)現(xiàn)
這是一個(gè)主要使用java開(kāi)發(fā)的秒殺系統(tǒng),項(xiàng)目比較大,所以本篇只實(shí)現(xiàn)了登陸模塊,代碼非常詳盡,感興趣的朋友快來(lái)看看2022-03-03Java 實(shí)戰(zhàn)范例之線上婚紗攝影預(yù)定系統(tǒng)的實(shí)現(xiàn)
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+javaweb+SSM+springboot+mysql實(shí)現(xiàn)一個(gè)線上婚紗攝影預(yù)定系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11Java開(kāi)發(fā)SpringBoot集成接口文檔實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Java開(kāi)發(fā)SpringBoot如何集成接口文檔的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10IntelliJ?IDEA?2022.1.1?沒(méi)有CVS的過(guò)程分析
這篇文章主要介紹了IntelliJ?IDEA?2022.1.1?沒(méi)有CVS的過(guò)程解析,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Intellij IDEA 與maven 版本不符 Unable to import maven project See
這篇文章主要介紹了Intellij IDEA 與maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound,本文通過(guò)圖文給大家分享解決方案,需要的朋友可以參考下2020-08-08springboot?log4j2.xml如何讀取application.yml中屬性值
這篇文章主要介紹了springboot?log4j2.xml如何讀取application.yml中屬性值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12