3分鐘完成Spring Boot集成OneAuth現(xiàn)代身份認(rèn)證

用戶身份驗(yàn)證是 Web 應(yīng)用程序中的一項(xiàng)基本功能,因此人們可以創(chuàng)建和訪問(wèn)自己的帳戶,但不幸的是,身份驗(yàn)證并不總是很容易設(shè)置,可能經(jīng)常錯(cuò)誤地實(shí)現(xiàn)登錄和注銷功能。

本教程將介紹如何使用IDaaS身份服務(wù),用差不多3分鐘的時(shí)間,為應(yīng)用快速的添加一個(gè)現(xiàn)代的身份服務(wù),它能讓我們?cè)?Spring 應(yīng)用中輕松處理用戶數(shù)據(jù)和授權(quán)。

本節(jié)介紹如何使用Spring Boot快速與OneAuth集成,將OneAuth作為WEB應(yīng)用程序的用戶存儲(chǔ)庫(kù)并實(shí)現(xiàn)用戶登錄。

準(zhǔn)備工作

前提條件:

已經(jīng)具備了OneAuth的組織賬戶。如果沒(méi)有?免費(fèi)創(chuàng)建OneAuth開(kāi)發(fā)者賬戶

具備基礎(chǔ)的WEB應(yīng)用程序的開(kāi)發(fā)經(jīng)驗(yàn)

已有或新建的Web應(yīng)用程序或項(xiàng)目,需要集成認(rèn)證流程

請(qǐng)求的示例

請(qǐng)求授權(quán)的的示例,類似如下

https://{yourSubDomain}.oneauth.cn/v1/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_URL&scope=read

以下配置將在OneAuth控制臺(tái)完成,配置CALLBACK_URL 和生成CLIENT_ID

創(chuàng)建一個(gè)OneAuth Web應(yīng)用

1. 登錄OneAuth組織賬戶的控制臺(tái)添加應(yīng)用

選擇【應(yīng)用】-【應(yīng)用】-創(chuàng)建應(yīng)用認(rèn)證方式選擇OIDC,應(yīng)用類型選擇Web應(yīng)用,點(diǎn)擊【下一步】

image

2. 填寫應(yīng)用的登錄重定向地址,

http://localhost:8000/login/oauth2/code/oneauth

當(dāng)用戶成功認(rèn)證后,OIDC 授權(quán)服務(wù)器向Client返回的redirect_uri由該地址指定。詳細(xì)參考OIDC 授權(quán)碼模式

image

3.【保存】后,OneAuth將為該應(yīng)用生成Clinet ID和Client Secret,后續(xù)在Java Spring Boot的配置中會(huì)用到這兩個(gè)參數(shù)值

image

創(chuàng)建和配置Spring Boot應(yīng)用

如果您想快速開(kāi)始,只需下載一個(gè)應(yīng)用示例,請(qǐng)下載我們Spring Boot示例

1.您需要將一些依賴項(xiàng)添加到pom.xml

添加后,Spring Security 5的OAuth配置才能正確初始化。


<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</groupId>
 <artifactId>spring-security-config</artifactId>
</dependency>
 <dependency> 
<groupId>org.springframework.security</groupId>
 <artifactId>spring-security-oauth2-client</artifactId>
</dependency> 
<dependency>
 <groupId>org.springframework.security</groupId> 
<artifactId>spring-security-oauth2-jose</artifactId>
</dependency>
<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency><dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2.將src/main/resources/application.properties重命名為src/main/resources/application.yml

在下面的代碼中填寫:

yourSubDomain:在注冊(cè)時(shí),OneAuth提供的租戶的二級(jí)域名前綴

ClientID: 填寫創(chuàng)建應(yīng)用時(shí),Step 2過(guò)程中OneAuth管理后臺(tái)生成的Client ID

Secret: 填寫創(chuàng)建應(yīng)用時(shí),Step 2過(guò)程中OneAuth管理后臺(tái)生成的Client Secret


server:

port: 8000

spring:

thymeleaf:

cache:false

security:

oauth2:

client:

registration:

oneauth:

client-name: oneauth

client-id: {clientId}

client-secret: {clientSecret}

redirect-uri:'{baseUrl}/login/oauth2/code/{registrationId}'

client-authentication-method: post

scope:

- openid

- profile

provider:

oneauth:

issuer-uri: https://{yourSbuDomain}.oneauth.cn/oauth/v1

user-name-attribute:name

驗(yàn)證是否集成成功

1.重新啟動(dòng)您的應(yīng)用程序,并訪問(wèn)

瀏覽器再次導(dǎo)航到http://localhost:8000 ,您會(huì)看到一個(gè)oneauth的鏈接,單擊該鏈接可以單擊oneauth登錄。

image

2.單擊oneauth鏈接,登錄

點(diǎn)擊后,您應(yīng)該會(huì)看到一個(gè)登錄屏幕。

image

3. 輸入用戶名和密碼,認(rèn)證完成后跳轉(zhuǎn)回應(yīng)用

輸入用于創(chuàng)建帳戶的憑據(jù),登錄后應(yīng)該會(huì)看到類似以下的屏幕。

image

總結(jié)

我們通過(guò) Spingboot 構(gòu)建了一個(gè)簡(jiǎn)單的應(yīng)用,利用Open ID Connect 協(xié)議并對(duì)接 OneAuth 提供的身份服務(wù),實(shí)現(xiàn)了保護(hù)我們特定路由的方法。

參考

OIDC 文檔

OneAuth 開(kāi)發(fā)者指南

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容