JHipster学习记录 - 2 JHipster UAA

https://www.jhipster.tech/using-uaa/
https://www.baeldung.com/jhipster-uaa-secured-micro-service

JHipster UAA介绍

前面我们介绍的JHipster Registry解决了服务注册与发现以及配置中心的问题。而这个UAA则是为了解决授权问题。
它主要上做了2件事

  1. 它提供了用户管理的服务,实际上uaa默认生成一个user表,并提供了user的增删查改服务。当然,如果对它对用户管理不满意,就可以在uaa项目的基础上做开发
  2. 它提供了token生成和token校验的功能

UAA部署

  1. 新建一个uaa文件夹
  2. 进入uaa文件夹,执行jhipster命令
  3. 通过问答选择生成uaa项目,这里不细说,问答很简单基本一看就会
  4. 运行 ./mvnw

为验证uaa是否启动成功,可以执行以下命令:

$ curl -X POST --data \
 "username=user&password=user&grant_type=password&scope=openid" \
 http://web_app:changeit@localhost:9999/oauth/token

上面的命令,向uaa发送了几个参数,主要是usernamepassword,去获取token

不出意外,uaa会返回如下数据,这就代表uaa启动成功了

{
  "access_token" : "eyJh...(token omitted)",
  "token_type" : "bearer",
  "refresh_token" : "eyJ...(token omitted)",
  "expires_in" : 299,
  "scope" : "openid",
  "iat" : 1539650162,
  "jti" : "8066ab12-6e5e-4330-82d5-f51df16cd70f"
}

注意:

  1. 返回里最重要的是access_tokenrefresh_token
  2. 通过返回我们知道,这个token的过期时间只有5分钟(300秒),可以设置uaa的配置文件里的uaa.web-client-configuration.access-token-validity-in-seconds值来改变token过期时间

UAA的使用

现在我们拿到了access_token,使用它来发送一个简单调用

$ curl -H "Authorization: Bearer eyJh...(access token omitted)" \ 
 http://localhost:9999/api/account

这个请求,是向uaa发送一个请求,查看账户信息
重点关注Authorization: Bearer eyJh...(access token omitted),这是向请求头里加入了一个键值对
- keyAuthorization
- valueBearer token(这个token就是上面/oauth/token请求返回给我们的access_token)

正常情况下,uaa会返回当前token所属用户的信息:

{
  "id" : 4,
  "login" : "user",
  "firstName" : "User",
  "lastName" : "User",
  "email" : "user@localhost",
  "imageUrl" : "",
  "activated" : true,
  "langKey" : "en",
  "createdBy" : "system",
  "createdDate" : "2018-10-14T17:07:01.336Z",
  "lastModifiedBy" : "system",
  "lastModifiedDate" : null,
  "authorities" : [ "ROLE_USER" ]
}

通过以上调用,我们可初步了解uaa的工作原理:

  • 任何请求都需要在请求头中加入access_token以供uaa校验,否则请求会被拒绝
  • access_token有过期时间,过期后不需要再通过用户名密码去获取token,而是通过refresh_token去更新access_token

虽然到目前为止,我们已经拥有了registry和uaa,但是还需要解决2个问题

  1. 通过前端访问后端资源
  2. 微服务间互相调用

因此下一步我们会使用JHipster Gateway来实现前端访问后台

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值