javascript
将Spring Boot应用程序与Amazon Cognito集成
在本文中,我們將展示如何使用Spring Security 5.0中引入的OAuth 2.0客戶端庫 ,在Spring Boot應用程序中為身份驗證用戶使用Amazon Cognito服務。
什么是AWS Cognito?
Amazon Cognito是由AWS提供的服務,除了提供對訪問AWS服務的授予憑證的支持外,AWS還提供用戶管理服務(例如注冊和登錄)。 除了與Facebook,Google,SAML,OpenId等身份提供者集成之外,它還擁有自己的身份提供者
對于Web應用程序開發人員有什么好處?
Web應用程序開發人員(服務器端/單頁應用程序)甚至移動應用程序開發人員都可以將用戶注冊和身份驗證的負載卸載到Amazon Cognito,并專注于實現業務需求。
Cognito支持多因素身份驗證(MFA),電子郵件和電話號碼驗證,密碼強度管理等功能。 它還支持與其他身份提供商(例如Facebook,Google和自定義SAML集成)的身份驗證,其中cognito充當與它們集成的適配器。
簡而言之,開發人員可以專注于業務功能,并讓AWS處理用戶注冊和身份驗證。
設置Amazon Cognito
Cognito包含兩個主要組件:
- 用戶池–用于用戶和身份管理,管理應用程序客戶端詳細信息(即將使用Cognito進行身份驗證的客戶端)
- 身份池–用于授予AWS憑證來訪問AWS服務
讓我們配置用戶池,并創建一個可用于與cognito連接的應用程序客戶端。
創建用戶池
創建應用客戶端
設置應用客戶端
設置用戶池域名
創建測試用戶
這些是設置Cognito用戶池和應用程序客戶端要遵循的幾個步驟。
配置Spring Boot應用程序
我們將利用Spring Security 5中包含的OAuth客戶端庫及其與Spring Boot的集成 。
更新pom.xml以添加OAuth客戶端依賴項
將以下依賴項添加到pom.xml ,以便能夠獲取OAuth客戶端庫
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency>添加與OAuth客戶端相關的屬性
我們需要定義一些與注冊OAuth提供程序和設置OAuth提供程序有關的屬性。 需要添加以下屬性:
app.url=http://localhost:9999 cognito.rooturl=https://test-userpool.auth.eu-west-1.amazoncognito.com spring.security.oauth2.client.registration.cognito.provider=cognito spring.security.oauth2.client.registration.cognito.client-id=<client-id> spring.security.oauth2.client.registration.cognito.client-secret=<client-secret> spring.security.oauth2.client.registration.cognito.client-name=test-client spring.security.oauth2.client.registration.cognito.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.cognito.scope=email,openid spring.security.oauth2.client.registration.cognito.redirect-uri-template=${app.url}/login/oauth2/code/cognitospring.security.oauth2.client.provider.cognito.authorizationUri=${cognito.rooturl}/oauth2/authorize spring.security.oauth2.client.provider.cognito.tokenUri=${cognito.rooturl}/oauth2/token spring.security.oauth2.client.provider.cognito.jwkSetUri=https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Mi1q5QPXa/.well-known/jwks.json spring.security.oauth2.client.provider.cognito.user-info-uri=${cognito.rooturl}/oauth2/userInfo spring.security.oauth2.client.provider.cognito.userNameAttribute=usernameJWK URI是根據此處給出的準則構建的。
創建一個HTML頁面以顯示經過身份驗證的用戶詳細信息
我們添加了一個index.html來顯示使用Thymeleaf-Spring安全方言登錄的用戶詳細信息,如下所示:
<div class="container"><div class="row"><div class="col">Authenticated successfully as [[${#authentication.name}]]<br/>Principal: [[${#authentication.principal}]]<div><a th:href="@{/logout}" class="btn btn-primary">Logout</a></div></div></div> </div>測試集成
只需運行主類,該應用程序將開始在http:// localhost:9999 /上運行 。 導航到該URL時,您將重定向到Cognito進行身份驗證,一旦成功通過身份驗證,您將被帶到類似于以下內容的應用程序頁面:
該應用程序的完整代碼可以在此處找到。 在后續文章中,我們將研究如何定制Principal對象,利用用戶信息端點,通過Spring安全性進行角色管理,以及單一頁面應用程序如何利用Cognito。
翻譯自: https://www.javacodegeeks.com/2019/04/integrate-spring-boot-application-cognito.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的将Spring Boot应用程序与Amazon Cognito集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux device driver(
- 下一篇: 罗非鱼最新消息(罗非鱼备案)