iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

Spring In Action系列 第 13

OAuth2

  • 分享至 

  • xImage
  •  

這篇來談談OAuth2,以下是整個OAuth2的簡略流程:
oath2
1.User發出第一個request

2.Client app 因為沒拿到任何確認身份的證明,所以重導至Auth server

3.Auth server發出身分證明的表單給User填寫

4.User填寫後回傳給Auth server

5.若Auth server認證身份無誤後,將認證成功的request傳至Client app

6.Client app將request發至Resource server要資料

7.Resource server回傳資料給Client app

8.Client app將最終的response回給User

我們可以透過spring-security-oauth2-authorization-server的denpendency來實作一個autorization server:

<dependency>
    <groupId>org.springframework.security.experimental</groupId>
    <artifactId>spring-security-oauth2-authorization-server</artifactId>
    <version>0.1.2</version>
</dependency>

這個server就是用來認證user資訊(username, password)後產生JWT用的,而這個JWT就會包含有user的資訊,包括authority,後續將透過這個JWT去向resource server要資源。

resource server可以引用spring-boot-starter-oauth2-resource-server來實作:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>

resource server要設定有哪些權限的request才能獲取那些資源。

client server可以引用spring-boot-starter-oauth2-client來實作:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

client server負責去跟authentication server要access token,也可和resource server這段程式配合,去自動讓restTemplate透過SecurityContext → getAuthentication 去on上access token,就不用還要自己去放Bearer ${token}在request裡面。


上一篇
RestTemplate
下一篇
JmsTemplate & RabbitTemplate
系列文
Spring In Action30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言