将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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

什么是HDMI视频光端机?

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

pdh光端机相关知识介绍

目前随着网络信息技术的发展&#xff0c;我们拥有了更加先进的技术运用技巧&#xff0c;其中一个就是pdh光端机的使用。我们自从使用了pdh光端机&#xff0c;对于信息的传输大大的打破了传统的信息传输的缺点。那么&#xff0c;作为一种新生的技术&#xff0c;相信大家对于它的…

ClassNotFoundException:是否会减慢您的JVM?

大多数Java开发人员都熟悉臭名昭著且非常常见的java.lang.ClassNotFoundException 。 虽然通常已经很好地了解了此问题的根源&#xff08;类路径中缺少类/库&#xff0c;类加载器委派问题等&#xff09;&#xff0c;但对整体JVM和性能的影响通常是未知的。 这种情况可能会严重影…

pdh光端机的优点介绍

PDH光端机&#xff08;Plesiochronous Digital Hierarchy&#xff0c;准同步数字系列&#xff09;是小容量光端机&#xff0c;一般是成对应用&#xff0c;也叫点到点应用&#xff0c;容量一般为4E1&#xff0c;8E1&#xff0c;16E1。接下来杭州飞畅科技的小编来为大家详细介绍下…

什么是485光端机,485数据光端机产品介绍

485光端机&#xff0c;光纤modem&#xff0c;485光纤收发器&#xff0c;485光端机器&#xff0c;串口光端机&#xff0c;串口转光纤&#xff0c;串口光猫&#xff0c;485光纤猫&#xff0c;提供RS-232/485/422串口转光纤功能&#xff0c;实现光纤与RS-232/485/422串口的数据双向…

OpenShift Origin中的Kubernetes Spark运算符(第1部分)

本系列有关Radanalytics.io的Kubernetes Spark运算符 OpenShift起源 。 它是一个开源的运营商来管理 Apache Spark集群和应用程序。 为了在OpenShift Origin上部署操作员&#xff0c;第一次需要为其克隆GitHub存储库&#xff1a; git clone https://github.com/radanalytics…

什么是模拟光端机?模拟光端机优缺点介绍!

模拟光端机是光端机的一种&#xff0c;主要是采用模拟调频、调幅、调相的方式将基带的视频、音频、数据等信号调制在某一载频上&#xff0c;通过发射光端机进行传输。传输的光信号&#xff1a;模拟光端机发射的光信号是模拟光调制信号&#xff0c;它随输入的模拟载波信号的幅度…

30路电话光端机

30路电话光端机就是把传统的电话信号转换成光信号并在光纤上传输的设备。30电话光端机是成对使用&#xff0c;一端去接程控交换机&#xff0c;中间是通过光纤传输&#xff0c; 另一端直接接使用电话机&#xff0c;一般是用来延长通信距离的&#xff01; 30路电话光端机采用的专…

工厂方法设计模式

工厂方法模式是流行的创新设计模式之一。 它并不特别依赖于工厂对象来创建对象。 相反&#xff0c;其想法是在同一类中使用单独的方法来创建对象。 Factory Method模式定义了一个用于创建对象的接口&#xff0c;但是让子类决定如何实例化其对象。 每个子类必须定义其Factory方…

为什么单模光端机价格比多模光端机价格高

光端机的传输媒介为光纤&#xff0c;这个问题要从了解光纤光缆开始。目前常用的光纤有两大类&#xff1a;多模光纤和单模光纤。 以多模光纤制成的光缆是最早投入商用的光缆&#xff0c;由于存在色散严重、衰耗大、可用带宽窄、成本高等问题&#xff0c;已经退出了作为光缆主战…

PDH光端机常见故障及解决方法介绍

在PDH光端机的使用过程中&#xff0c;可能会出现一些影响网络的故障。那么我们该怎么去判断分析&#xff0c;并解决问题呢&#xff1f;下面&#xff0c;飞畅科技就几种PDH光端机常见故障做出分析&#xff0c;希望能帮到大家。 PDH光端机的故障可分为永久性故障和间断性故障。永…