前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UAA 教程

UAA 教程

原创
作者头像
安宁
修改2020-07-06 10:41:28
1.8K0
修改2020-07-06 10:41:28
举报

UAA 是 User Account and Authentication 首字母的缩写, 是 CloudFoundry(一个 PaaS 服务供应商)开源的用户帐号和身份认证服务,可用于搭建 OAuth2 认证授权服务器。

1. 参考

2. 本地运行

打开 uaa github 页面,按照文档说明,检出源码,默认分支为 develop,因为 develop 分支内容会不断更新,内容更新后可能运行效果与文档描述不符,所以这里使用最近的一个固定版本 74.21.0。

服务会使用 8080 和 8081 端口,如果这些端口已被使用会导致启动失败。启动成功后,服务处于监听状态:

gradlew run
gradlew run

Figure 1. 本地启动项目

如果启动失败,可以通过命令 sudo lsof | grep uaa.log 找到日志文件:

log location
log location

Figure 2. 定位日志文件

然后查看日志信息: tail -100f /private/var/folders/1s/ly4n5ft11r19j6859j20mb380000gn/T/uaa-8080/logs/uaa.log

服务停止后,8080 端口会释放,但 8081 端口不会,需要手动 kill 8081 端口,才能再次启动服务。

3. 配置 MYSQL 数据库

默认使用 hsqldb 内存数据库,你可以切换成 postgresql 或者 mysql。

打开配置文件 uaa/src/main/resources/uaa.yml:

启用 MYSQL profile:

enable mysql profile
enable mysql profile

Figure 3. 启用 MYSQL 配置

修改 MYSQL 配置:

modify mysql config
modify mysql config

Figure 4. 修改 MYSQL 配置

在本地创建 uaa 数据库: create database uaa

使用 MYSQL8 会有问题,这是一个已知的 BUG 940,因为 UAA 使用的 groups 表在 MYSQL8 中成了关键字,目前官方尚未修复此 BUG。笔者本机之前使用的 8.0 版本,测试无法使用,重新通过 docker 装了一个 5.7.30 版本才可以。

4. 修改 JWT 签名

UAA 默认使用 HMAC256 加密算法生成签名,签名 key 值默认为:tokenKey。连接 UAA 认证服务器的资源服务器也需要用此签名 key 校验 token 值。在使用 org.springframework.security:spring-security-oauth2-jose:5.3.2.RELEASE搭建资源服务器时,Spring 默认使用 client_secret 的值作为签名 key,所以两者不兼容。

为了统一两者,改成 RSA 签名方式,打开 scripts/cargo/uaa.yml 文件,修改 jwt.token.signing-key

modify signing key
modify signing key

Figure 5. 修改签名 Key

modify signing key2
modify signing key2

Figure 6. 修改签名 Key

HMAC256 是对称加密,所有只有一个值。RSA 是非对称加密,所以需要配置 2 个值,jwt.token.signing-key 配置私钥,jwt.token.verification-key 配置公钥。

5. 部署到 Tomcat

通过 ./gradlew run 启动服务,不能在后台运行,也不能部署到服务器,现修改配置将其部署到 Tomcat,笔者这里使用的版本是 Tomcat 9.0.36。

拷贝 scripts/cargo/log4j2.properties 文件至 uaa/src/main/resources 目录下。

拷贝 scripts/cargo/uaa.yml 的内容至 uaa/src/main/resources/uaa.yml 中:

change uaa
change uaa

直接把拷贝的内容放在末尾,然后通过 --- 分割。

部署 uaa/build/libs/cloudfoundry-identity-uaa-0.0.0.war 到 Tomcat 实例:

tomcat uaa
tomcat uaa

先在 IDEA 内运行检查下是否存在问题,然后可以直接在 tomcat 目录下通过命令启动:

tomcat uaa2
tomcat uaa2

6. 修改 issuer 地址

这是一个已知的问题 #805。 当你在资源服务器中将 issuer 配置为 http://localhost:8080/uaa 时,通过 http://localhost:8080/uaa/.well-known/openid-configuration 得到的 JSON 数据中 issuer 的值为 http://localhost:8080/uaa/oauth/token ,如此一来两个 issuer 的值就不同了,在使用org.springframework.security:spring-security-oauth2-jose:5.3.2.RELEASE搭建资源服务器时,Spring 会校验这两个值必须相等。你需要将 issuer 配置为 http://localhost:8080/uaa/oauth/token ,通过 http://localhost:8080/uaa/oauth/token/.well-known/openid-configuration 获取配置信息也是符合标准规范的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 参考
  • 2. 本地运行
  • 3. 配置 MYSQL 数据库
  • 4. 修改 JWT 签名
  • 5. 部署到 Tomcat
  • 6. 修改 issuer 地址
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档