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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

通过aws部署推荐系统_通过AWS Elastic Beanstalk轻松进行Spring Boot部署

發布時間:2023/12/3 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过aws部署推荐系统_通过AWS Elastic Beanstalk轻松进行Spring Boot部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過aws部署推薦系統

朋友不允許朋友寫用戶身份驗證。 厭倦了管理自己的用戶? 立即嘗試Okta的API和Java SDK。 數分鐘之內即可在任何應用程序中對用戶進行身份驗證,管理和保護。

幾乎所有應用程序都依賴于身份驗證。 開發人員以及雇用他們的公司都想確認誰在發出請求,他們是誰。 而且,這需要足夠快地進行以實現良好的用戶體驗。 幸運的是,有很棒的工具可以提供幫助。

具有Spring Security的Spring Boot是基于Java的Web開發的絕佳解決方案。 使用相對較少的代碼,開發人員可以輕松,安全地實現,測試,更新和擴展身份驗證方案。

在本教程中,您將在Spring Boot中使用OAuth 2.0 / OpenID Connect和Okta作為OAuth提供程序構建一個非常簡單的“ Hello World”應用程序。 它將使用AWS作為云提供商,并通過AWS Elastic Beanstalk進行部署。

為什么選擇AWS Elastic Beanstalk?

在云基礎設施提供商方面,AWS一直是市場的領導者,其服務使部署云應用程序變得快速而輕松。 Elastic Beanstalk是一項部署和配置服務,通過自動完成在AWS基礎架構上設置應用程序的過程,您只需單擊幾下即可部署整個基礎架構。 此外,它通過自動置備,負載平衡,自動擴展和運行狀況監視來幫助管理應用程序的資源利用。

創建一個Spring Boot應用程序

在開始云部署之前,您將需要應用程序本身。 您的應用程序的第一個版本將有一個簡單的頁面,其中將顯示Hello, {user}! 如果輸入用戶名,否則它將顯示Hello, World! 除此以外。 您將使用Spring MVC和Thymeleaf來完成任務。

Thymeleaf是服務器端模板引擎。 它允許您在客戶端的Web瀏覽器中呈現服務器參數之前,將服務器參數傳遞給HTML。

您可以從頭開始創建項目嗎? 可以,但是您不需要。 您可以改用Spring Initializr。 這將幫助您生成需要的所有依賴項的項目。

轉到Spring Initializr網站 ,然后輸入以下信息:

- Project: Maven Project - Language: Java - Group: com.okta - Artifact: hello-world - Dependencies: Spring Web Starter, Thymeleaf

您可以選擇使用Maven或Gradle生成項目。 本教程顯示了使用Maven的步驟,但是您可以在Gradle上輕松地遵循它。

提供信息后,單擊生成項目 。 該站點將生成一個zip文件,您可以下載并解壓縮該文件。 在您最喜歡的IDE中打開項目,一切順利!

創建網頁

使用Spring MVC,您需要創建一個Controller來表示網頁。 它將映射到端點/hello ,還映射到/ ,它代表主頁。 它返回hello-world模板作為響應。

創建類HelloWorldController :

@Controller public class HelloWorldController {@GetMapping({"/", "hello"})public String helloWorld(@RequestParam(required = false, defaultValue = "World") String name, Model model) {model.addAttribute("name", name);return "hello-world";} }

到目前為止,一切都很好。 接下來,創建html模板。 但是,此模板是什么? 你為什么需要它?

模板是Spring MVC用于在用戶瀏覽器中呈現信息HTML頁面。

您定義Thymeleaf HTML頁面以接收model對象中定義的所有屬性。

在src\main\resources\templates ,創建文件hello-world.html :

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"><body><h1 th:text="'Hello, ' + ${name} + '!'"></h1></body> </html>

這將創建一個HTML頁面,該頁面在正文中顯示<h1>標記以及問候消息。 ${name}屬性不是本機HTML,它是Thymeleaf的一部分,它從model對象接收值,以在將信息發送到瀏覽器之前呈現信息。

現在,您已經創建了控制器和模板,可以運行它,看看它是否有效! 打開HelloWorldApplication類并執行main方法。

或者,從命令行執行:

./mvnw spring-boot:run

如果在Web瀏覽器中轉到http:// localhost:8080 / ,將看到以下消息:

Hello, World!

如果需要自定義消息,則可以添加name參數。 例如, http:// localhost:8080 /?name = Daniel將返回:

Hello, Daniel

添加Spring Security

對于SaaS,開發人員希望確保其應用程序安全。 用戶不應看到其他用戶的數據。

Spring Security處理身份驗證,授權和其他安全方面。 要將其添加到您的項目中,請轉到pom.xml文件,并在<dependencies>標記內添加以下代碼:

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

而已! 當您將Spring Security添加為依賴項時,默認情況下會啟用安全性。 當您嘗試訪問端點時,必須先登錄才能繼續。

讓我們測試一下。 運行該應用程序,然后轉到http:// localhost:8080 / 。 您將看到以下結果:

如預期的那樣,現在它將您重定向到登錄頁面,該頁面將要求用戶名和密碼。 您現在必須問自己:我應該使用哪個用戶名和密碼?

默認用戶名是user 。 每次設置應用程序啟動時,Spring都會更改它而不是設置默認密碼。 您可以通過查看應用程序日志來查看當前的日志。 尋找這樣的東西:

Using generated security password: 29aa0d09-eaca-47ae-bcad-e5b22affd466

在實際的應用程序中,此行為不是您想要的。 用戶期望密碼保持不變,除非他們自己更改。 讓我們添加一個配置來實現它。

創建類SecurityConfiguration :

@EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter {private PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().passwordEncoder(passwordEncoder()).withUser("john.doe").password(passwordEncoder().encode("secret")).roles("USER");}@Beanpublic PasswordEncoder passwordEncoder() {return passwordEncoder;} }

上面的類擴展了WebSecurityConfigurerAdapter ,并允許您更改身份驗證管理方法。 在此示例中,您創建了一個用戶,但是您可以創建任意數量的用戶。 只需在第一個之后添加一個新的withUser調用即可。

現在,用戶已通過您的應用程序身份驗證,您不再需要輸入用戶名。 而是,您將基于當前用戶顯示信息。 在HelloWorldController內部,在代碼中進行以下更改:

@Controller public class HelloWorldController {@GetMapping({"/", "hello"})public String helloWorld(Model model, Principal principal) {model.addAttribute("name", principal.getName());return "hello-world";} }

Principal界面存儲當前用戶的名稱。 Spring Security處理繁瑣的工作:您只需要將其添加為參數,該方法就會獲得正確的值。

要查看此更改,請停止應用程序并再次運行。 如果您訪問http:// localhost:8080 / ,它將要求您再次登錄。 使用john.doe作為用戶名secret作為密碼。 提交信息后,您將看到以下文本:

Hello, john.doe!

現在您可以在云中部署應用程序了!

將應用程序部署到AWS Elastic Beanstalk

要部署服務,您將使用AWS Elastic Beanstalk。 如果您沒有AWS賬戶,請在此處創建一個賬戶。

登錄到AWS控制臺后 ,轉到服務,然后在搜索中鍵入Elastic Beanstalk 。 單擊它,它會將您重定向到“歡迎”頁面。 單擊入門按鈕,開始在云中創建您的應用程序。 您將看到以下屏幕:

在這里,您將創建一個Web應用程序。 在上面的字段中輸入以下信息:

Application name: hello-world Platform: Java Application code: Upload Your code

在上傳代碼之前,您需要將其導出為JAR文件。 進入您的應用程序文件夾,然后鍵入以下命令:

./mvnw package -DskipTests

運行后,在target文件夾下上傳文件hello-world-0.0.1-SNAPSHOT.jar 。

上傳完成后,單擊“ Create application按鈕。 AWS將開始創建環境,顯示該過程中發生的情況的日志。

設置環境后,AWS會將您重定向到儀表板。 在信息中心菜單上方,您會找到用于訪問該應用程序的URL。 在新標簽頁中打開它,它將加載您的網頁。

現在,您會收到502錯誤響應,這是預期的。 默認情況下,Elastic Beanstalk在端口5000上運行應用程序,而Spring Boot在端口8080上運行。讓我們指導您的應用程序在端口5000上運行以解決此問題。

單擊配置儀表盤菜單。 您將看到以下屏幕:

您可以在環境中更改許多變量和功能:添加負載平衡器,增加實例數量,或在這種情況下添加環境變量。

轉到軟件卡,然后單擊“ 修改” 。 查找“ Environment properties然后將以下值添加到列表中:

SERVER_PORT : 5000

更改后,單擊Apply按鈕,然后等待AWS在環境中應用更改。 當消息Environment update completed successfully. 出現時,再次打開URL。

現在工作了! 輸入您在代碼中定義的用戶名和密碼john.doe和secret 。 然后它將重定向到hello頁面,該頁面將向您顯示與本地環境相同的結果:

Hello, john.doe!

如果遇到問題,可以隨時檢查日志。

  • 在菜單中,單擊Logs ,這會將您重定向到以下頁面:
  • 轉到Request Logs > Full Logs 。 這將生成一個包含您所有環境日志的zip文件
  • 下載并解壓縮文件
  • 轉到var/log/rotated
  • 在那邊,您會從您的應用程序中找到另一個zip文件。 解壓縮它,然后打開解壓縮的文件以查看應用程序日志

到目前為止一切正常嗎? 恭喜,您的第一個Spring Boot應用程序已在云中運行! 太好了,不是嗎? 但是,等等,在慶祝之前,您還有很多工作要做。

使您的應用程序安全生產就緒

還記得您創建了一個用戶并將憑據放入代碼中嗎? 該策略可能適用于測試目的,但是對于實際應用而言,這是一個巨大的難題。

處理身份管理不是一件容易的事,您將希望使用服務而不是“自己動手”。

Okta是出色的身份管理服務,可立即提供身份提供者,身份驗證,授權和用戶安全性。 讓我們配置您的應用程序以使用它。

  • 創建一個Okta帳戶
  • 登錄到您的帳戶
  • 點擊應用
  • 單擊添加應用程序
  • 選擇Web ,然后單擊下一步按鈕。
  • 在表單中填寫以下選項:
Name: hello-world Base URIs: http://localhost:8080/, ${BEANSTALK_URL} Login redirect URLs: http://localhost:8080/login/oauth2/code/okta, ${BEANSTALK_URI}/login/oauth2/code/okta Grant Type allowed: Client Credentials. Authorization Code

將${BEANSTALK_URL}更改${BEANSTALK_URL}您的AWS環境URL。 例如,我的值是HelloWorld-env.t3z2mwuzhi.us-east-1.elasticbeanstalk.com 。

大! 您將本地和生產環境列入了白名單。 如果您從他們的Okta應用程序中調用,它將允許該請求。

使用Okta和OAuth 2.0保護應用程序安全

在Okta中使用您的應用程序,您需要更改代碼才能開始使用它。 Okta從現在開始為您處理身份驗證。

用okta依賴項替換pom.xml文件中的Spring Security依賴項,該文件本身包括Spring Security。 將以下代碼放入<dependencies>標記內:

<dependency><groupId>com.okta.spring</groupId><artifactId>okta-spring-boot-starter</artifactId><version>1.2.1</version> </dependency>

該庫將處理您的應用程序與Okta之間的通信。 您所要做的就是識別您的Okta信息。 在本地設置以下環境變量:

OKTA_OAUTH2_ISSUER={ORG_URL}/oauth2/default OKTA_OAUTH2_CLIENT_ID={CLIENT_ID} OKTA_OAUTH2_CLIENT_SECRET={CLIENT_SECRET}

大! 您將本地和生產環境列入了白名單。 如果您從這些地方調用Okta應用程序,它將允許該請求。

您的{ORG_URL}將顯示在Okta儀表板中,只需單擊菜單中的“ Dashboard ”即可。 您將在右上角看到組織URL。

您可以在Okta應用程序中找到{CLIENT_ID}和{CLIENT_SECRET} :

  • 在Okta的菜單中,轉到“ Applications
  • 選擇hello-world應用程序
  • 單擊General選項卡
  • 向下滾動到Client Credentials

在這里,您將看到客戶端ID和密碼。

通過這些更改,您現在可以通過OpenID Connect進行身份驗證。 當用戶轉到主頁時,您的應用程序會將其重定向到Okta登錄頁面,然后返回到網頁。

OpenID Connect是OAuth 2.0授權框架之上的一個薄層,專注于身份和身份驗證。

使用OpenID Connect,您需要更改接收經過身份驗證的用戶的方式。 轉到HelloWorldController類并更新代碼:

@Controller public class HelloWorldController {@GetMapping({"/", "hello"})public String helloWorld(Model model, @AuthenticationPrincipal OidcUser user) {model.addAttribute("name", user.getGivenName());return "hello-world";} }

這仍然使用模型將身份驗證信息傳遞給Thymeleaf,但是從使用Principal轉變為使用OidcUser 。 這使您可以檢索所需的任何屬性。 在此示例中,我們需要given_name屬性。

注意:由于您使用Okta進行身份驗證,因此您不再需要舊的配置。 繼續并刪除SecurityConfiguration類。

讓我們運行該應用程序! 再次啟動它,然后轉到http:// localhost:8080 / 。 注意,您已重定向到Okta登錄頁面:

如果提供用戶名和密碼,則將您重定向到/端點。 就我而言,我將看到以下消息:

Hello, Daniel!

現在您有了一個安全的Web應用程序! 最好的部分:您不必擔心自己實施身份驗證。

在AWS Elastic Beanstalk上重新部署應用程序

您有一個可用于生產的應用程序,因此將其發送到您的生產環境! 登錄到AWS控制臺 ,然后轉到您的Elastic Beanstalk環境 。

  • 選擇在先前步驟中創建的環境。
  • 在菜單中,單擊Configuration
  • 按下Software卡內的Modify按鈕。

添加您在本地環境中使用的相同環境變量:

OKTA_OAUTH2_ISSUER={ORG_URL}/oauth2/default OKTA_OAUTH2_CLIENT_ID={CLIENT_ID} OKTA_OAUTH2_CLIENT_SECRET={CLIENT_SECRET}

進行更改后,單擊“ Apply 。

最后一步是將應用程序更新到最新版本。 進入項目文件夾,然后鍵入:

./mvnw package -DskipTests

此命令使用您的應用程序的當前版本生成一個JAR文件。 轉到AWS Elastic Beanstalk儀表板,然后單擊上Upload and deploy按鈕。 選擇創建的aven文件(例如hello-word-0.0.1-SNAPSHOT.jar ),然后單擊Deploy按鈕。

為確保其正常運行,請單擊AWS Elastic Beanstalk URL。 如果您尚未登錄,它將把您重定向到Okta的登錄名。當您輸入有效的憑據時,它將把您重定向到Hello World頁面! 就我而言,結果將是:

Hello, Daniel!

恭喜你! 您已在云中部署了應用程序并以正確的方式處理了安全性。

如果您想看一下代碼,可以在此處找到帶有示例的存儲庫。

您是否想全面了解有關安全性,OAuth 2.0和Spring的更多信息? 我們建議這些職位:

  • 使用Spring Security進行簡單身份驗證
  • 通過Spring Boot和OAuth 2.0輕松進行單點登錄

與往常一樣,在下面留下評論,不要忘了在Twitter上關注我們并訂閱我們的YouTube頻道。

“使用AWS Elastic Beanstalk輕松進行Spring Boot部署”最初于2019年8月7日發布在Okta Developer Blog上。

朋友不允許朋友寫用戶身份驗證。 厭倦了管理自己的用戶? 立即嘗試Okta的API和Java SDK。 數分鐘之內即可在任何應用程序中對用戶進行身份驗證,管理和保護。

翻譯自: https://www.javacodegeeks.com/2019/09/easy-spring-boot-deployment-aws-elastic-beanstalk.html

通過aws部署推薦系統

總結

以上是生活随笔為你收集整理的通过aws部署推荐系统_通过AWS Elastic Beanstalk轻松进行Spring Boot部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。