将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

创建应用客户端

亚马逊Cognito

设置应用客户端

亚马逊Cognito

设置用户池域名

亚马逊Cognito

创建测试用户

亚马逊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=username

JWK 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进行身份验证,一旦成功通过身份验证,您将被带到类似于以下内容的应用程序页面:

亚马逊Cognito

该应用程序的完整代码可以在此处找到。 在后续文章中,我们将研究如何定制Principal对象,利用用户信息端点,通过Spring安全性进行角色管理,以及单一页面应用程序如何利用Cognito。

翻译自: https://www.javacodegeeks.com/2019/04/integrate-spring-boot-application-cognito.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤教育】国家开放大学2018年春季 7402-22T社会问题 参考试题

试卷编号&#xff1a;7402 座位号 2017——2018学年度第二学期期末考试 社会问题 试题 2018年7月 答题框&#xff1a; 1&#xff0e;社会问题研究的&#xff08; &#xff09;功能是回答社会问题是怎样的。 A、描述性研究 B、解释性研究 C、预测性研究 D、规范性研究 2&#…

网管型工业以太网交换机的几种管理方式

网管型工业交换机按其字面上的意思就是可以网络管理的交换机&#xff0c;管理方式有三种&#xff0c;可通过串口管理、可通过Web管理、通过网管软件管理&#xff0c;提供了基于终端控制口(Console)、基于Web页面以及支持Telnet远程登录网络等多种网络管理方式。因此网络管理人员…

【渝粤教育】国家开放大学2018年秋季 0359-21T会计学原理 参考试题

试卷编号&#xff1a;0390 座位号 2018—2019学年度第一学期期末考试 古代诗歌散文专题试题 2019年1月 1&#xff0e;在四言诗的发展史上&#xff0c; 是一个具有转折意义的人物&#xff0c;他突破了《诗经》的格局&#xff0c;为四言诗注入了新的活力。 2&#xff0e; 是屈原…

有线电视的现状与发展,全国一网与广电5G一体化建设

2020年&#xff0c;中宣部印发《全国有线电视网络整合发展实施方案》&#xff0c;国家广电总局对《方案》进行贯彻落实&#xff0c;就“全国一网”整合工作进行动员部署。从“三网融合”到“全国一网”&#xff0c;终于不再只是纸上谈兵&#xff0c;而是已经提上日程。 按照《…

网管型交换机和非网管型交换机的区别

随着互联网的普及&#xff0c;我们对于交换机的需求是越来越多&#xff0c;也是越来越重要。关于交换机这一块&#xff0c;我前面介绍过它的分类&#xff0c;看过的朋友应该都知道&#xff0c;交换机可以分为网管型交换机和非网管型交换机&#xff0c;看其字面意思已经很明确的…

【渝粤教育】国家开放大学2018年秋季 0731-22T书记员工作与实务 参考试题

试卷代号&#xff1a;1013 金融统计分析试题答案及评分标准&#xff08;半开卷&#xff09; &#xff08;供参考&#xff09; 2019年1月 一、单项选择题&#xff08;每小题2分&#xff0c;共40分。每小题有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1…

网络监控系统中如何选择工业交换机?

做网络网络监控系统工程项目的朋友应该都知道&#xff0c;一个中大型网络监控系统不可能单独使用一台或者几台工业交换机就能实现传输效果&#xff0c;这个需要进行工业交换机级联&#xff1a;分别选择不同的工业交换机作为接入层、汇聚层和核心层。你们&#xff0c;我们在做项…

IPTV是什么 IPTV有什么功能

IPTV即交互式网络电视&#xff0c;是一种利用宽带网&#xff0c;集互联网、多媒体、通讯等技术于一体&#xff0c;向用户提供包括数字电视在内的多种交互式服务的崭新技术。它能够很好地适应当今网络飞速发展的趋势&#xff0c;充分有效地利用网络资源。 IPTV既不同于传统的模…

选择交换机需要了解的一些性能参数

工业交换机主要是应用于复杂的工业环境中的实时以太网数据传输&#xff0c;这就要求我们在选购工业交换机时必须对产品的性能有所了解&#xff0c;要求我们所选购的工业交换机产品能够符合当下的工业环境要求。那么&#xff0c;新手在选购工业交换机时主要需要参考那些因素呢&a…

工业以太网交换机的重要技术参数分析

在当下的网络发展进程中&#xff0c;以太网交换机可以说是发挥了很重要的作用&#xff0c;特别是随着ASIC技术的不断发展&#xff0c;以太网交换机在产品性能及价格方面得到了极大的提升&#xff0c;使得以太网交换机技术有了更广阔的发展空间。以太网交换机就是在强大的ASIC芯…

如何在Java中使用Zxing和JFreeSVG创建QR Code SVG?

在本文中&#xff0c;我们将研究如何使用Zxing QR代码生成库和JFreeSVG库在Java中创建QR Code SVG图像。 QR码生成 下面的代码使用Zxing库创建一个表示QR Code的java.awt.image.BufferedImage对象&#xff1a; public static BufferedImage getQRCode(String targetUrl, int w…

以太网应用于控制时存在的问题

现如今&#xff0c;随着网络技术的发展&#xff0c;以太网传输可以说是深受一些大用户的喜爱&#xff0c;但是传统的以太网是一种商用网络&#xff0c;如果要应用到工业控制中还存在一些问题&#xff0c;主要有以下几个方面。接下来我们就跟随飞畅科技的小编一起来看看吧&#…

HDMI高清光端机产品特点及应用场合介绍

HDMI光端机由发送器和接收器组成&#xff0c;能通过单根光纤把计算机主机的音频&#xff0c;视频&#xff0c;USB延长到远端&#xff0c;用户可以在远端实时收听到电脑主机的图像和声音&#xff0c;并使用电脑。同时在电脑主机的近端&#xff0c;也提供了一个DVI&#xff0c;VG…

【渝粤教育】国家开放大学2018年秋季 1289T中国当代文学专题 参考试题

试卷代号&#xff1a;1301 病理生理学 试题 2019年1月 一、单项选择题&#xff08;每题2分&#xff0c;共40分&#xff09; 1.基本病理过程是指( )。 A.每一种疾病的发病机制和规律 B.机体重要系统在不同疾病中出现常见的共同的病理生理变化 C.各系统的不同疾病所共有的致病因素…

java8 base64_Java 8中的Base64 –加入乐趣为时不晚

java8 base64最后&#xff0c;Java 8发布了。 最后&#xff0c;有一种执行Base64编码的标准方法。 长期以来&#xff0c;我们一直依赖于Apache Commons Codec&#xff08;无论如何还是很棒的&#xff09;。 内存敏感的编码人员将拼命使用sun.misc.BASE64Encoder和sun.misc.BASE…

【渝粤教育】国家开放大学2018年秋季 2083T信息技术与教育技术(2) 参考试题

试卷代号&#xff1a;2099 民事诉讼法学 试题 注意事项 2019年1月 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完 考卷和答题纸后才可离开考…

HDMI视频光端机传输故障如何调试?

HDMI高清光端机就是光信号传输的终端设备。在广泛领域应用中&#xff0c;往往需要把HDMI信号源输送远处进行处理。最为突出的问题有&#xff1a;远处接收到的信号出现偏色、模糊&#xff0c;信号产生重影和拖尾及网纹干扰。那么&#xff0c;HDMI高清视频光端机传输故障该如何调…

【渝粤教育】国家开放大学2018年秋季 2405T现代汉语(1) 参考试题

试卷代号&#xff1a;2444 | 酒店管理概论试题 2019年1月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试 结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完 考卷和答题纸后才可离开考…

前9个免费的Java流程监视工具以及如何选择一种

这样就可以运行Java代码了。 也许它甚至可以在生产服务器上运行。 在您完成出色工作之后&#xff0c;我们得到了好消息和令人讨厌的消息。 令人讨厌的消息是&#xff0c;现在开始调试。 就是调试和应用程序性能监视。 这意味着您不仅需要查看编写的代码&#xff0c;还可以查看…

什么是HDMI视频光端机?

HDMI高清光端机对视频音频发布等起到传输作用&#xff0c;HDMI光端机由发送器和接收器组成&#xff0c;能通过单根光纤把计算机主机的音频&#xff0c;视频&#xff0c;USB延长到远端&#xff0c;用户可以在远端实时收听到电脑主机的图像和声音&#xff0c;并使用电脑控制。那么…