主要观点:
- 工作开发中常需简单应用模板,文中创建连接数据库、暴露 REST 端点并基于角色访问控制的 Java 应用。
- 数据库用 PostgreSQL,安全用 Keycloak,均在容器中部署,开发时用 podman 测试容器创建。
- 应用用 Spring Boot 框架和 Flyway 进行数据库版本控制,这些技术是 Java EE 世界的行业标准。
- 构建原型的需求是创建暴露 REST 端点的图书馆应用,实现多对多关系。
- 给出完整工作应用的 GitHub 地址,文中代码片段取自该仓库。
关键信息:
- 需定义环境变量如 DOCKER_POSTGRES_PASSWORD 等。
- 配置 PostgreSQL 和 Keycloak 的容器创建及相关操作。
- 在 Java 应用中编写自定义代码提取 Keycloak 加入 JWT 的角色。
- 在 REST 控制器中用@PreAuthorize 注解限制访问。
- 启动容器后需添加数据库密码,可用 curl 测试应用。
重要细节:
- 配置 PostgreSQL 容器时设置相关环境变量和端口映射。
- Keycloak 容器创建及创建 realm、用户、角色等操作,包括使用默认客户端 account-console 并进行相关配置。
- Java 中提取角色的代码逻辑,如从 JWT 中获取 realm_access 中的 roles 并添加前缀生成 GrantedAuthority。
- REST 控制器中用@PreAuthorize 注解根据角色限制访问不同端点。
- 通过 curl 登录获取令牌并测试 creator 和 viewer 角色的功能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。