无需Java代码通过JHipster生成有安全验证的微服务应用
让我们继续登录到我们的应用程序,并导航到Account>Login菜单项。我们将使用admin/admin作为凭据,缺省情况下,JHipster将自动创建。一切进展顺利。欢迎页面将显示确认登录成功的消息:您被登录为使用“admin”!
检查L过程:首先,网关将我们的凭证发送到UAA的OAuth2令牌端点,该端点验证它们,并生成包含访问和刷新JWT令牌的响应。网关然后将这些令牌作为cookie发送回浏览器。
本教程,从Baeldun,主要展示了如何通过JPHISTER自动生成安全的微服务应用程序,而无需编写Java代码行,包括角前端和微服务后端。以下是翻译的主要步骤,包括原文的更详细的截图:
在本教程中,我们将探讨JHipster的用户帐户和授权服务(简称UAA)以及如何使用它来保护完全成熟的基于JHispter的微服务应用程序。更好的是,所有这些都可以在不编写任何代码的情况下完成!
JHipster的UAA是一个微服务,独立于应用程序中的其他服务构建、部署和运行。它被用作:
- OAuth2授权服务器,基于Spring Boot的实现
- 身份管理服务器,公开用户帐户CRUD API
JHipster UAA还支持典型的登录功能,比如自注册和“记住我”。当然,它与其他JHipster服务完全集成。
在开始任何开发之前,我们需要一个正在运行的JHipster注册中心,它允许我们创建不同的服务来查找并彼此通信。
1.生成新的JHipster UAA服务
使用JHipster命令行实用程序生成我们的UAA服务:
这提示我们回答一些定制问题。第一个问题是我们想要生成什么样的应用程序。使用箭头键,我们将选择“JHipster UAA(用于微服务OAuth2身份验证)”选项。
接下来是应用程序名称、服务器端口和服务发现的输入。在大多数情况下,默认答案是好的。
应用程序的基本名称影响许多生成的工件,我们选择“uaa”(小写)。
回答这些问题之后,JHipster将创建所有项目文件并安装NPM包依赖项(在本例中没有真正使用)。我们现在可以使用本地Maven脚本来构建和运行UAA服务:
关键信息是:Connected to the JHipster Registry config server!,这表明UAA能够自行注册,并可供其他微服务和网关发现。
2. 测试UAA服务
由于生成的UAA服务本身没有UI,因此我们必须使用直接API调用来测试它是否如预期那样工作。
在将其用于其他部分或系统之前,我们必须确保有两个功能:OAuth2令牌生成和帐户检索。
首先,让我们使用一个简单的curl命令从UAA的OAuth端点获得一个新的令牌:
这里,我们使用密码授权过程,使用两对凭据。在这个过程中,我们使用基本的HTTP身份验证来发送客户机凭证,并将它们直接编码在URL中。最终用户凭证是使用标准用户名和密码参数作为主体的一部分发送的。我们还使用一个名为“user”的用户帐户,默认情况下该帐户在测试配置文件中是可用的。
假设我们正确地提供了所有的细节,我们将得到包含访问令牌和刷新令牌的答案:
我们现在可以使用返回的 access_token来访问帐户资源获取相关帐户的信息,该 帐户资源在UAA服务中可用:
注意,我们必须在访问令牌到期之前发出此命令。默认情况下,UAA服务发出的令牌有效期为5分钟,这对于生产来说是一个明智的价值。
我们可以通过编辑与正在运行的应用程序的配置文件相对应的应用程序-<profile>YML文件,修改uaa来更改有效令牌的生命期。网络客户端配置。以秒为单位的访问令牌有效性。该文件位于UAA项目的src/main/resources/config目录中。
3. 生成启用UAA的网关
既然我们确信UAA服务和服务注册表正在运行,那么让我们创建一个与之交互的生态系统。最后,我们将添加:
- 基于Angular的前端
- 一个微服务后端
- 一个支持这两者的API网关
让我们从网关开始,因为它是一个与UAA协商身份验证的服务。它托管我们的前端应用程序,并将API请求路由到其他微服务。我们将在新创建的目录中使用JHipster命令行工具:
和以前一样,我们必须回答几个问题才能生成项目。重要的是以下内容:
- 应用类型: 必须是“Microservices gateway/微服务网关”
- 申请名称:这次我们将使用“gateway/网关”
- 服务发现:选择“JHipster registry /JHipster注册表”
- 身份验证类型: 我们必须在此处选择“Authentication with JHipster UAA server/使用JHipster UAA服务器进行身份验证”选项
- UI框架: 让我们选择“Angular 6”
一旦JHipster生成了所有工件,我们就可以使用提供的Maven包装器脚本构建和运行网关:
将浏览器指向http://localhost:8080来访问我们的应用程序,它应显示默认生成的主页。
让我们继续登录到我们的应用程序,并导航到Account>Login菜单项。我们将使用admin/admin作为凭据,缺省情况下,JHipster将自动创建。一切进展顺利。欢迎页面将显示确认登录成功的消息:您被登录为使用“admin”!
检查L过程:首先,网关将我们的凭证发送到UAA的OAuth2令牌端点,该端点验证它们,并生成包含访问和刷新JWT令牌的响应。网关然后将这些令牌作为cookie发送回浏览器。
接下来,访问/UAA/API/account API的前端,网关再次转发到UAA。在此过程中,网关获取包含访问令牌的cookie,并使用它的值将授权头添加到请求。
如果必要,我们可以检查UAA和Gateway的日志,以详细查看所有这些过程。我们还可以通过设置org.阿帕奇。http.电线记录器级别为DEBUG。
无需Java代码通过JHipster生成有安全验证的微服务应用的更多相关文章
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- 18家大厂Java面试题整理了350道(分布式+微服务+高并发)
一.性能调优系列 1.Tomcat性能调优 JVM参数调优: -Xms 表示JVM初始化堆的大小, -Xmx表示JVM堆的最大值.这两个值的大小一般根据需要进行设置. 当应用程序需要的内存超出堆的最大 ...
- Java代码实体类生成SQL语句(Java实体类转数据库)
有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可. 下载:ht ...
- mongodb3.0分片及java代码连接操作测试(开启用户验证)
最近抽时间搭建了一下mongodb简单的分片,整个过程还算是蛮顺利,只不过在用户验证这一块遇到了一些问题,好在最后终于搞定. 一.服务器搭建过程: 1.安装四个mongodb:一个作为config.一 ...
- JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)
[我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...
- Java代码实现文件添加数字签名、验证数字签名
Linux下实现加签.验签 1.使用OpenSSL 生成公钥和密钥: #用 OpenSSL, Linux 上自带,常用命令如下: #生成 RSA 私钥(传统格式的) openssl genrsa -o ...
- Java架构技术进阶之:从分布式到微服务,深挖Service Mesh
自从几十年前第一次引入分布式系统这个概念以来,出现了很多原来根本想象不到的分布式系统使用案例,但同时也引入了各种各样的新问题. 当这些系统还是比较少比较简单的时候,工程师可以通过减少远程交互的次数来解 ...
- Java进阶专题(二十二) 从零开始搭建一个微服务架构系统 (上)
前言 "微服务"一词源于 Martin Fowler的名为 Microservices的,博文,可以在他的官方博客上找到http:/ /martinfowler . com/art ...
- 【多线程】java多线程Completablefuture 详解【在spring cloud微服务之间调用,防止接口超时的应用】【未完成】
参考地址:https://www.jianshu.com/p/6f3ee90ab7d3 示例: public static void main(String[] args) throws Interr ...
随机推荐
- corntab被黑记录
多出来的corntab 最近服务器经常出现负载过高的情况,经过运维排查,出现了一个corntab定时任务 不是开发的锅,别背 一开始运维认为是这个定时任务是我们开发的. 排查后,明确了服务器是被黑了. ...
- Python 基本语法,文件读写,数据结构和类型
Python 基本语法,文件读写,数据结构和类型 1.基本语法 解释型(无需编译).交互式.面向对象.跨平台.简单好用 中文编码:http://www.cnblogs.com/huxi/archive ...
- java开发篇---验证码
验证码的作用:防止恶意破解密码.刷票.论坛灌水.刷页. 有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银 ...
- Android 开发自己的网络收音机2——电台列表(SlidingMenu侧滑栏)
上一篇文章总体规划了这个项目的情况,今天讲讲实现电台列表.今天其实主要想讲解的是SlidingMenu,也就是我们平时说的侧滑栏,现在很多应用都有用这种UI效果.SlidingMenu侧滑栏功能实现的 ...
- Linux 增量系统备份和部分还原策略
. . . . . 完全用 Linux 已经有快半年的时间了,一直想要全盘备份一下数据,但是却一直没有做,为什么呢? 一方面是东西比较多,备份一次要很长的时间:另一方面是一直在纠结用哪种方式备份比较好 ...
- PowerDesigner导入java类生成类图
1;打开PowerDesigner 2;file—>Reverse Engineer—>Object Language... 3;弹出一个对话框,在General模块下Model Name ...
- Spark 介绍(基于内存计算的大数据并行计算框架)
Spark 介绍(基于内存计算的大数据并行计算框架) Hadoop与Spark 行业广泛使用Hadoop来分析他们的数据集.原因是Hadoop框架基于一个简单的编程模型(MapReduce),它支持 ...
- idea properties文件unicode码问题
在git hub上下载了个工程.但是properties文件一直显示不了中文: # \u662F\u5426\u4F7F\u7528\u8FDC\u7A0B\u914D\u7F6E\u6587\u4E ...
- mybatis动态sql中的两个内置参数(_parameter和_databaseId)
mybatis动态sql中的两个内置参数(_parameter和_databaseId) <!-- mybatis动态sql的两个内置参数 不只是方法传递过来的参数可以被 ...
- 使用JAAS登录kerberos服务器
java代码: package com.snsprj.jaas0822; import javax.security.auth.*; import javax.security.auth.callba ...