问题标签 [light-4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oauth-2.0 - Light-OAuth2 刷新令牌永远存在?(必须明确删除)
我有一个关于light-oauth2刷新令牌的问题。似乎它们永远不会过期,因此必须手动撤销,这会导致 IMO 维护和安全问题,并且似乎也与 light-oauth2 文档相矛盾。
(注意:我对这种行为的解释持开放态度,因为它背后可能有很好的理由。这对我来说只是(目前)违反直觉。)
更多细节
刷新令牌在 refresh_token 表中无限累积。CacheStartupHookProvider中似乎没有任何代码为它们提供 TTL。如您所见,似乎在 1 天后驱逐刷新令牌的代码已被注释掉(第 108-119 行):
此外,light-oauth2 文档指出:
“授权服务器发出新的刷新令牌,客户端必须丢弃旧的刷新令牌并用新的刷新令牌替换它。授权服务器在向客户端发出新的刷新令牌后撤销旧的刷新令牌。 ” (强调我的)
但我自己的测试表明这并没有发生。例如:
- 调用 light-oauth2 代码服务 (GET),并使用发送到重定向 uri 的授权代码。
- 使用授权码调用light-oauth2(POST:授权码授权类型)。它将返回一个授权令牌 T1 和一个刷新令牌 R1。
- 使用刷新令牌 R1调用 light-oauth2 令牌服务(POST:刷新令牌授予类型)。它将返回一个授权令牌 T2 并刷新令牌 R2。
- 使用刷新令牌 R1再次调用 light-oauth2 令牌服务(同样是 POST:刷新令牌授予类型)。它将返回一个授权令牌 T3 并刷新令牌 R3。
第 4 步似乎与文档相矛盾,文档说授权服务器在向客户端发出新的刷新令牌后撤销旧的刷新令牌。然而,从上面的步骤 4 来看,即使在新的刷新令牌 R2 已经发布之后,刷新令牌 R1 似乎也没有被撤销。R1 仍然能够获得新的授权令牌。
所以现在,R1、R2 和 R3 都可以用来获取新的授权令牌,并且可用的刷新令牌集不断增长。
我的问题是这是遗漏还是设计使然(也许应该更新文档)。如果是设计使然,这样做的理由是什么?在我看来
- 发行这么多永不过期的刷新令牌是不安全的
- 它创建了一个维护复杂性,必须手动从数据库中删除刷新令牌,而不是让它们自动过期并被驱逐。
- 向数据库添加这么多新的刷新令牌会更慢并且似乎没有必要(例如:为什么每次发布新的授权令牌时都需要新的刷新令牌?如果仅在授权代码授予中发布新的刷新令牌似乎更有效类型)
谢谢你的帮助
oauth-2.0 - Light-oauth hazelcast 用途
我已经查看了文档。
我不太清楚榛树是如何使用的。我的意思是,我查看了类似 docker 的文件,但没有找到任何 hazelcast 部署。
哪些服务使用 hazelcast?
另一方面,你为什么要使用 imDg (hazelcast) 和持久的类 sql 数据库?
你在 hazelcast 中存储了什么,你在 mysql(或任何类似 sql 的数据库)中存储了什么?
light-4j - 我们如何在 logback.xml 中为 light-4j 应用程序集成访问日志?
我们如何在 logback.xml 中集成访问日志?为此有一个类AccessLogHandler,但它没有实现MiddlewareHandler,所以我们不能在handlers.yml中注入它。有没有一种简单的方法可以像 spring 为 tomcat 提供的那样在 access.log 中记录传入的 HTTP 请求?
light-4j - 如何为 Docker 创建 light-4j fatjar
我正在尝试运行您的 petstore-example 并通过 mvn install exec:exec 构建并运行服务器...但现在我正在尝试执行 docker 部分:我想知道因为您只添加了petstore.jar 到 docker-image,但不是所有其他依赖项 jar(如服务器)。因此在 docker-container 中找不到 Main-Class com.networknt.server.Server。
light-4j - 在 light-4j 应用程序的访问日志中打印查询参数?
我的 light-4j 应用程序正在使用 AuditHandler 打印访问日志。打印的默认格式是:
{"timestamp":1580470146236,"endpoint":"/mmt/register@post","X-Correlation-Id":"123456","statusCode":200,"responseTime":70}
但是,客户端使用查询参数访问 API:/mmt/register?id=2
如何自定义访问日志,以便在访问日志中也打印查询参数?{"timestamp":1580470146236,"endpoint":"/mmt/register@post?id=2","X-Correlation-Id":"123456","statusCode":200,"responseTime":70}
我当前的 logback 设置是:
light-4j - Light-4j 是否类似于 AOP 编程?
在阅读 Light-4j 文档时,看起来 Light-4j 与 AOP 编程非常相似。Light-4j 和 AOP 编程有什么关系?
light-4j - 是否有任何真正的轻量级 4j 示例用于将 json 请求映射到 Java POJO 对象?
我碰巧必须使用 light 4j 。我在 light 4j 的整个源代码库中找不到简单 CRUD 服务的简单示例。
所有这些示例都只是在其处理程序中返回虚拟响应。
他们都没有真正注入服务并执行任何逻辑。
Q1) 是否有人知道 light 4j 的任何文档或示例源代码在 CRUD 操作方面是完整的,包括如何注入具有多种实现的服务?PS:那里的文档只显示了如何获得一个服务的所有实现,而不是一个单一的实现。
Q2)实际问题:如何将一个非常简单的 JSON 请求正文转换为 JAVA POJO 对象。
我发现的所有可能性中最糟糕的是这个。
请求有效载荷
请不要推荐像这样在这个 JSON 中添加密钥:
因为这个 BodyHandler 不必要地读取输入流并将其转换为linkedHasMap。
所以我不能简单地在我的逻辑中读取请求输入流并将其传递给 JACKSON 映射器来创建我的 POJO。
请帮我摆脱这个。
json-schema-validator - 如何添加自定义 Json 模式验证器
我们在项目中使用light4j json 模式验证器。
版本1.0.36
是否可以添加自定义验证器,例如 ISO8601 时间/持续时间最小值和最大值?如果是这样,您如何添加自定义验证?
我们意识到这些不是 json 模式标准的一部分,但我们只是在内部使用它来验证我们的配置 json。
docker - Light4J Oauth2 docker-compose 错误提示找不到指定的 Dockerfile
遵循有关在本地运行 light4J oAuth 的文档中给出的内容。我能够在整个 repo 上运行 maven clean install,但是当我尝试运行 docker compose up 时,它失败说 DockerFile 不存在。下面是 light4J oAuth 存储库的主存储库。 https://github.com/networknt/light-oauth2
文档步骤如下。 https://doc.networknt.com/getting-started/light-oauth2/
运行“mvn clean install”,然后运行“docker-compose -f docker-compose-mysql.yml up”。给出以下错误。“错误:找不到指定的 Dockerfile:Dockerfile”。
以下是mac上的docker安装。 docker-installtion-on-mac-local
如果有人知道可能是什么问题,并将我引导到正确的方向,那将是很棒的。谢谢。
apache-camel - 如何使用包含对另一个模式的引用的模式验证 JSON?
我想使用 JSON 模式文件验证 JSON 文件,该文件包含对另一个 JSON 模式文件的引用。
我为我的 Apache Camel 路由添加了JSON Schema Validator。因为我使用 JSON 模式版本draft-07并且默认版本是draft-04,所以我暴露了一个JsonSchemaLoader
,另见https://stackoverflow.com/a/63417253/5277820。
第一个模式test-schema-1
是从类路径加载的,但第二个模式test-schema-2
是从互联网加载的。使用的 IDhttp://mycompany/test-schema2.json
只是一个 ID 而不是真正的资源,因此我得到一个异常。
有没有办法从类路径中加载第二个 JSON 模式?
Spring Boot 应用程序
JSON 模式
test-schema-1
:
test-schema-2
:
日志