日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

通过Okta的单点登录保护Spring Boot Web App的安全

發(fā)布時(shí)間:2023/12/3 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过Okta的单点登录保护Spring Boot Web App的安全 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

“我喜歡編寫身份驗(yàn)證和授權(quán)代碼?!??從來沒有Java開發(fā)人員。 厭倦了一次又一次地建立相同的登錄屏幕? 嘗試使用Okta API進(jìn)行托管身份驗(yàn)證,授權(quán)和多因素身份驗(yàn)證。

您可以使用SpringBoot和Okta在不到20分鐘的時(shí)間內(nèi)啟動(dòng)具有完整用戶身份和授權(quán)管理的企業(yè)級(jí)REST服務(wù)器。 Spring Boot及其Starter軟件包提供了可用于生產(chǎn)的Tomcat服務(wù)器,Okta使用OAuth保護(hù)您的API。

本教程將引導(dǎo)您完成整個(gè)過程。 Okta在線后,只需幾行代碼和配置就可以輕松添加功能齊全的客戶端身份驗(yàn)證和用戶管理! 同樣在本教程中,我將向您展示安全的Spring Boot服務(wù)器如何能夠?qū)eb內(nèi)容或用作后端API,但僅向已向您注冊(cè)的用戶提供。 準(zhǔn)備? 我們走吧!

Spring Boot和Okta入門

從零到安全的Web服務(wù)器不會(huì)一flash而就。 要完成此項(xiàng)目,您將:

  • 使用Spring Initializr下載全新的Spring Boot入門項(xiàng)目
  • 創(chuàng)建一個(gè)新的Okta帳戶并訪問您的管理儀表板
  • 添加幾行代碼并進(jìn)行配置
  • 請(qǐng)參閱在新服務(wù)器上運(yùn)行的單點(diǎn)登錄!

為什么是春天?

Spring是一套成熟,使用廣泛且文檔齊全的工具和庫,旨在使您成為Java開發(fā)人員更加輕松。 它提供了大量功能,從簡(jiǎn)單的數(shù)據(jù)庫連接和服務(wù)器創(chuàng)建(如我們?cè)诒窘坛讨袑⒖吹降?#xff09;到交鑰匙安全性,消息傳遞,移動(dòng)開發(fā)等。

Spring Boot是Spring的一個(gè)子項(xiàng)目,致力于使超快速和輕松地引導(dǎo)新的Spring應(yīng)用程序成為可能。 它的主要吸引力之一是它不需要亂糟糟的配置文件(關(guān)于早期Spring生態(tài)系統(tǒng)的常見抱怨)。 正如我們將很快看到的,使用一些簡(jiǎn)單的注釋和Maven依賴關(guān)系將使我們?cè)趲追昼娭畠?nèi)從零遷移到安全的Web服務(wù)器。

下載并初始化新的Spring Boot項(xiàng)目

Spring提供了一個(gè)名為Spring Initializr的工具,使您可以單擊創(chuàng)建并下載一個(gè)包含新Spring Boot項(xiàng)目的zip文件。 轉(zhuǎn)至該處并創(chuàng)建一個(gè)包含WebSecurity入門程序的新項(xiàng)目。 我保留了默認(rèn)的工件和組,并在我的主目錄中demo.zip壓縮了demo.zip文件。 解壓縮了以下文件:

那些熟悉Maven的人會(huì)認(rèn)識(shí)到pom.xml文件。 僅有四個(gè)小依賴項(xiàng)從Spring中引入了大量功能:

<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.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </dependency> <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><scope>test</scope> </dependency>

在獲得有趣的東西之前,請(qǐng)通過以下方式運(yùn)行服務(wù)器,以確保一切正常

./mvnw spring-boot:run

在所有豐富多彩的日志語句中,要查找的語句可能倒數(shù)第二:

Tomcat started on port(s): 8080 (http)


因?yàn)樵趧?chuàng)建項(xiàng)目時(shí)請(qǐng)求了Spring Security Starter軟件包,所以默認(rèn)情況下,使用Basic Authentication來保護(hù)服務(wù)器。 可以通過打開瀏覽器并訪問以下命令來驗(yàn)證這一點(diǎn):

http://localhost:8080

將出現(xiàn)一個(gè)瀏覽器對(duì)話框,詢問您的用戶名和密碼(尚未設(shè)置):

不用費(fèi)心在新服務(wù)器中設(shè)置硬編碼的用戶名和密碼,突然訪問完整的OAuth會(huì)話管理,用戶管理,站點(diǎn)統(tǒng)計(jì)信息等等是否更好? 我們可以在Okta的短短幾分鐘內(nèi)做到這一點(diǎn)!

使用Okta將OAuth身份驗(yàn)證添加到您的服務(wù)器

現(xiàn)在是時(shí)候通過用戶管理,密鑰和憑據(jù)存儲(chǔ)和輪換,OAuth服務(wù)器維護(hù),忘記的密碼處理以及精巧的管理UI來增強(qiáng)服務(wù)器。 這聽起來很麻煩! 幸運(yùn)的是,使用Okta的用戶管理和授權(quán)服務(wù)已為您完成了此工作。 您只需將Okta依賴項(xiàng)插入到Spring Boot項(xiàng)目中,配置一些安全性設(shè)置,然后只需幾個(gè)簡(jiǎn)單的步驟即可獲得所有這些安全性和一攬子籌碼。 就是這樣。

獲取您的Okta憑證

如果您是Okta的新手,可以在這里注冊(cè)一個(gè)免費(fèi)的開發(fā)者帳戶。 您會(huì)收到一封邀請(qǐng)電子郵件,其中包含您的用戶名(您的電子郵件地址)和一個(gè)臨時(shí)密碼。 按照電子郵件中提供的鏈接,使用這些憑據(jù)登錄,并首次創(chuàng)建您的管理員帳戶。 將要求您創(chuàng)建一個(gè)新密碼,并在完成此頁面后,您將找到Okta開發(fā)人員控制臺(tái)。 這里有很多值得探索的地方,因此,如果您愿意,可以休息一下并四處瀏覽!

準(zhǔn)備好繼續(xù)時(shí),請(qǐng)轉(zhuǎn)到Okta儀表板中的“ 應(yīng)用程序”選項(xiàng)卡。 它看起來應(yīng)該像這樣:

單擊綠色的“ 添加應(yīng)用程序”按鈕,由于要構(gòu)建Web服務(wù)器,因此選擇Web (.NET,Java等)作為應(yīng)用程序類型,然后單擊“ 下一步”

在隨后的設(shè)置頁面中,有一個(gè)默認(rèn)值可以更改。 在“ 登錄重定向URI”字段中,將默認(rèn)值替換為:

http://localhost:8080/login

然后,點(diǎn)擊完成 。 這會(huì)將您帶入新應(yīng)用程序的基礎(chǔ)。 這里也有很多功能,但是現(xiàn)在您需要在儀表板“ 應(yīng)用程序”主選項(xiàng)卡的“ 常規(guī)”子選項(xiàng)卡中記下一些信息。 前兩個(gè)是位于頁面底部附近的客戶端ID客戶端密鑰

請(qǐng)妥善保管并確保安全! 您將在Spring Boot服務(wù)器中使用它們來通過Okta進(jìn)行身份驗(yàn)證。

接下來,轉(zhuǎn)到儀表板頂部的“ API”選項(xiàng)卡,然后在此屏幕中,注意Issuer URI 。 如果看不到,請(qǐng)確保您位于“ 授權(quán)服務(wù)器”子選項(xiàng)卡上。 這是您的服務(wù)器將與之通信的Okta OAuth授權(quán)服務(wù)器。

現(xiàn)在,您的Client IDClient SecretIssuer URI被安全地保存了; 是時(shí)候?qū)kta插入服務(wù)器了。 在pom.xml文件中添加Okta和Spring OAuth依賴項(xiàng)以及其他依賴項(xiàng):

<dependency><groupId>com.okta.spring</groupId><artifactId>okta-spring-boot-starter</artifactId><version>0.2.0</version> </dependency> <dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.2.0.RELEASE</version> </dependency>

接下來,將三個(gè)值添加到: src/main/resources/application.properties

okta.oauth2.issuer=(your **Issuer URI**) okta.oauth2.clientId=(your **Client ID**) okta.oauth2.clientSecret=(your **Client Secret**)

像這樣:

okta.oauth2.issuer=https://dev-279161.oktapreview.com/oauth2/default okta.oauth2.clientId=0oacqif7do3e0hD0h7 okta.oauth2.clientSecret=(your **Client Secret**)

在收獲Okta所能提供的一切之前的最后一步-在服務(wù)器上使用它! 對(duì)于本文,目標(biāo)是添加單點(diǎn)登錄身份驗(yàn)證,以便只有向您注冊(cè)的用戶才能登錄到您的服務(wù)器并與其進(jìn)行交互。 主應(yīng)用程序類需要告訴Okta客戶端庫啟用單點(diǎn)登錄,這是通過在主應(yīng)用程序類中添加以下注釋來實(shí)現(xiàn)的: src/main/java/com/example/demo/DemoApplication.java

@EnableOAuth2Sso

在進(jìn)行此操作時(shí),不妨添加一個(gè)終結(jié)點(diǎn),該終結(jié)點(diǎn)將對(duì)我們將要獲得的新用戶信息起作用。 您可以通過以下方式裝飾主Application類:

@RestController

Okta通過java.security.Principal接口提供調(diào)用者的用戶ID。 默認(rèn)情況下,這是用戶的電子郵件地址。 您可以添加一個(gè)與用戶的電子郵件地址相呼應(yīng)的請(qǐng)求處理程序,如下所示:

@GetMapping("/") public String echoTheUsersEmailAddress(Principal principal) {return "Hey there! Your email address is: " + principal.getName(); }

使用新的導(dǎo)入,注釋和請(qǐng)求處理程序,主DemoApplication.java應(yīng)如下所示:

package com.example.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.security.Principal;@RestController @EnableOAuth2Sso @SpringBootApplication public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@GetMapping("/")public String echoTheUsersEmailAddress(Principal principal) {return "Hey there! Your email address is: " + principal.getName();} }

當(dāng)您通過./mvnw spring-boot:run重新啟動(dòng)服務(wù)器并在瀏覽器中訪問http://localhost:8080時(shí),您將被帶到個(gè)人的Okta子域進(jìn)行登錄:

您可以使用創(chuàng)建Okta帳戶時(shí)設(shè)置的電子郵件和密碼登錄,因?yàn)槟J(rèn)情況下您是作為“我的Web應(yīng)用程序” Okta應(yīng)用程序中的用戶添加的。 除非您在管理控制臺(tái)中重新創(chuàng)建了新用戶,否則這是唯一被授予訪問您網(wǎng)站權(quán)限的用戶。

登錄后,您將以經(jīng)過身份驗(yàn)證的用戶身份重定向回您的站點(diǎn),并且應(yīng)該會(huì)看到您的電子郵件地址已回顯給您!

下一步是什么?

現(xiàn)在,當(dāng)您為應(yīng)用創(chuàng)建或注冊(cè)新用戶時(shí),真正的樂趣就開始了! 花一些時(shí)間嘗試不同的權(quán)限級(jí)別。 查看審核日志以查看您的用戶的活動(dòng)。 將用戶添加到組,并自定義和控制電子郵件和短信通信。

有興趣了解更多嗎? 查看以下其他Java資源:

  • 我們的Java產(chǎn)品文檔
  • 使用Spring Boot和OAuth保護(hù)您的SPA
  • 使用Spring Security和Thymeleaf向您的應(yīng)用程序添加基于角色的訪問控制

如果您對(duì)此內(nèi)容或我們的任何其他內(nèi)容有疑問(或只是想聊天!),請(qǐng)?jiān)赥witter @OktaDev上與我們聯(lián)系 。 我們很樂意聽取您的意見!

“我喜歡編寫身份驗(yàn)證和授權(quán)代碼。” ?從來沒有Java開發(fā)人員。 厭倦了一次又一次地建立相同的登錄屏幕? 嘗試使用Okta API進(jìn)行托管身份驗(yàn)證,授權(quán)和多因素身份驗(yàn)證。

在15分鐘內(nèi)將Single Sign-on添加到您的Spring Boot Web App中最初于2017年11月20日發(fā)布在Okta開發(fā)人員博客上。

翻譯自: https://www.javacodegeeks.com/2018/01/secure-spring-boot-web-app-single-sign-okta.html

總結(jié)

以上是生活随笔為你收集整理的通过Okta的单点登录保护Spring Boot Web App的安全的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。