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)重寫方法


2.3)創(chuàng)建資源服務(wù)
2.3.1)實(shí)現(xiàn)ResourceServerConfigurerAdapter

@configuration表示這是一個(gè)配置類
@enbaleResourceServer表示開(kāi)啟資源服務(wù)
2.3.2)重寫方法

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)重寫方法

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í)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 使用Python webdriver圖書(shū)館搶座自動(dòng)預(yù)約的正確方法2. Linux刪除系統(tǒng)自帶版本Python過(guò)程詳解3. Python字符串到字節(jié)的轉(zhuǎn)換。雙反斜杠問(wèn)題4. Python3 json模塊之編碼解碼方法講解5. ASP基礎(chǔ)知識(shí)VBScript基本元素講解6. PHP如何開(kāi)啟Opcache功能提升程序處理效率7. Python 合并拼接字符串的方法8. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條9. 淺談?dòng)蓀osition屬性引申的css進(jìn)階討論10. 在線php代碼縮進(jìn)、代碼美化工具:PHP Formatter

網(wǎng)公網(wǎng)安備