cognito_将Spring Boot应用程序与Amazon Cognito集成

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

cognito

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

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

相关文章

how to build a paper's architecture?

【0】README 0.1&#xff09; these contents below are from PhD Hongjun Wang on ML class in #9133. best regards! 0.2&#xff09; these contents below are just for reference. 【1】related to build a paper’s architecture 1.1&#xff09; problem? what’s…

python之路 mysql 博客园_Python之路(二十七):Mysql(下)

本结目录数据库操作数据表操作外键约束多表查询索引事务python连接Mysql数据库操作此操作针对windows环境下该操作再Mysql服务器启动以及客户端连接之后对数据库操作之前&#xff0c;引申一些较为听的懂的白话1、显示数据库show databases; --后面记得跟英文字符的分号show cre…

APP视觉稿该怎么切图和标注

本篇教程跟大家分享UI设计的一些知识&#xff0c;就是APP怎么切图和标注&#xff0c;还不懂的同学&#xff0c;赶紧了解一下。 首先&#xff1a;哪些东西要切出来&#xff1f; 简单来说就是代码不好实现的东西就直接切成一张图放到软件里面展示&#xff0c;例如图片&#xff…

skynet.fork_Apache Ant 1.10.6发布–用于junitlauncher的fork模式以及新的jmod和链接任务

skynet.forkApache Ant 1.10.6已于本周发布。 此版本包含许多错误修复以及一些非常令人兴奋的新功能。 完整的发行说明可在此处获得 &#xff0c;下载本身也可以在此处获得 。 在本文中&#xff0c;我将介绍该版本中引入的一些新功能。 使用junitlauncher任务在派生的JVM中运行…

使用MRUnit,Mockito和PowerMock进行Hadoop MapReduce作业的单元测试

0、preliminary 环境搭建 Setup development environment Download the latest version of MRUnit jar from Apache website: https://repository.apache.org/content/repositories/releases/org/apache/mrunit/mrunit/. For example if you are using the Hadoop version 1.…

python奇偶求和_python 判断奇偶并求和,运行过程有错误,希望高手给指导一下。...

问题是&#xff1a;b) Add to the condition in the while loop so that it will stop if either the user inputs a zero or the sum is larger than limit (if limit is None then ignore the second stopping condition). Do not use a break statement to implement this f…

产品经理如何进行需求管理?

文章目录交付需求第一步&#xff1a;提交需求1、流程图2、结构图3、原型图4、产品需求文档第二步&#xff1a;需求评审制定需求实施计划1、和研发确定开发计划2、和设计人员确定UI设计计划3、和运营人员确定运营计划管控需求变更1、分析需求2、分析变更的可行性3、 变更需求需求…

sap wad_使用网真和WAD热部署Kubernetes

sap wad在Kubernetes环境中测试企业应用程序时&#xff0c;更改&#xff0c;重新打包和重新部署应用程序的周转率可能会很高。 网真旨在通过将本地运行的进程代理到我们的Kubernetes集群中来缓解这种情况&#xff0c;就像本地进程是集群的一部分一样。 如果我们将这种方法与诸如…

关于产品的核心问题

文章目录交互设计产品方向产品定位产品使命产品愿景产品逻辑用户价值用户体验产品价值什么样的产品才是合格的&#xff1f;什么样的产品才是优秀的&#xff1f;产品经理关注的核心点做产品前产品经理必须明确三个问题交互设计 定义和设计系统的行为就是交互设计&#xff0c;说…

正则表达式总结之查找

【0】、写在前面 以下内容总结于shell脚本学习指南 【1】我们说查找文本要用到三种文本匹配程序 &#xff1a; 1.1&#xff09;grep 使用的是基本正则表达式&#xff08;basic regular expression&#xff0c;BRE&#xff09; 1.2&#xff09;扩展式grep 使用 egrep&#xf…

java hipster!_通过Java Hipster升级Spring Security OAuth和JUnit测试

java hipster!“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 使用单元测试和集成测试来验证代码质量是一种很好的方式来表明您对代码…

在 Mac 上显示或隐藏文件扩展名

文章目录对于一个文件对于所有文件通过命令来设置更改扩展名显示警告对于一个文件 在 Mac 上&#xff0c;选择文件&#xff0c;然后选取“文件”>“显示简介”&#xff0c;或按下 Command-I。 点按“名称与扩展名”旁边的三角形来展开下面的部分。 若要显示或隐藏文件扩展…

dism++封装系统使用教程_客栈管理系统“订单来了”客房订单盒子使用教程

原标题&#xff1a;客栈管理系统“订单来了”客房订单盒子使用教程「订单来了」是非标住宿行业领先的移动互联云PMS&#xff0c;是以PMS为基础&#xff0c;聚合全渠道的营销管理生态平台&#xff0c;为客栈/民宿提供信息化一体解决方案。已累计服务国内外400城市、30000商家&am…

文本替换sed+字段处理cut,join+awk重新编排字段

【1】&#xff53;&#xff45;&#xff44;工具(Stream Editor)——流编辑器 sed 本身也是一个管线&#xff08;管道&#xff09;命令&#xff0c;可以分析 standard input 的啦&#xff01; 而且 sed 还可以将数据进行取代、删除、新增、截取特定行等等的功能呢&#xff01;…

netsuite 数据集成_Java中带有NetSuite数据实体的对象关系映射(ORM)

netsuite 数据集成对象关系映射&#xff08;ORM&#xff09;技术使使用关系数据源更加容易&#xff0c;并且可以将逻辑业务模型与物理存储模型联系在一起。 遵循本教程&#xff0c;将NetSuite数据的连接集成到基于Java的ORM框架Hibernate中。 您可以使用Hibernate将面向对象的…

python内置装饰器property_python之内置装饰器(property/staticmethod/classmethod)

python内置了property、staticmethod、classmethod三个装饰器&#xff0c;有时候我们也会用到&#xff0c;这里简单说明下1、property作用&#xff1a;顾名思义把函数装饰成属性一般我们调用类方法成员&#xff0c;都是如下写法&#xff1a;class propertyTest():def __init__(…

关于bochs用X11启动的说明

关于网络上有很多关于 bochs启动时 连接到X Windows 报错&#xff1a; cannot connect to X display . 昨天搞了半天晚上 今天早上 直到现在 才搞懂。 主要的原因 是我使用了终端 比如 xshell or putty 去连接 centos &#xff0c;而以这种方式的连接 是只能够 传递字符&a…

在MyEclipse中访问MySql

Window 选项卡 选择 Open PerSpective 选择 MyEclipse Database Explorer&#xff0c;打开数据库视图 在 DB Browser 中单击右键&#xff0c;选择 New … 在 Database Driver 界面配置 a. Driver template: 连接的数据库模板 b. Driver name: 自定义的名字 c. Connection URL&a…

自动化测试框架 2019_2019年用于自动化的5个最佳Java测试框架

自动化测试框架 2019几十年来&#xff0c;Java一直是开发应用程序服务器端层的首选编程语言。 尽管JUnit一直在与开发人员一起帮助他们进行自动化的单元测试&#xff0c;但随着时间的推移和测试的发展&#xff0c;当自动化测试不断增长时&#xff0c;已经开发了许多基于Java的开…

X86汇编语言中的registers相关

0、写在前面 本文中总结于王爽老师的汇编语言&#xff0c;建议有兴趣的都买一本&#xff0c;以支持王爽老师的辛勤付出。再者&#xff0c;这本书写的确实很nice。 8086CPU共有14个registers&#xff1a;AX&#xff0c; BX&#xff0c; CX&#xff0c; DX&#xff0c; SI&#…