使用 nimbus-jose-jwt 时,当请求远程 url 进行缓存更新等时,我可以使用 RemoteJWKSet 找到(参见日志)

Posted

技术标签:

【中文标题】使用 nimbus-jose-jwt 时,当请求远程 url 进行缓存更新等时,我可以使用 RemoteJWKSet 找到(参见日志)【英文标题】:When using nimbus-jose-jwt, with RemoteJWKSet can i find(see in logs) when request are made to remote url for cache update etc 【发布时间】:2021-12-31 02:05:02 【问题描述】:

我正在使用带有RemoteJWKSet 的 nimbus-jose-jwt,并且希望在向远程 url 发出缓存更新等请求时找到(参见日志)。 对于 Spring Boot 应用程序,我设置了 logging.level.com.nimbusds=TRACE,但找不到与远程 url 调用相关的任何日志记录,以便从远程服务器检索 jwks。 有没有办法找到何时调用远程服务器来检索 jwks。

编辑: 如果有人想看代码,需要的jwks代码上传到github:NimbusJose-JWKSCaching。

【问题讨论】:

【参考方案1】:

查看the source code of the RemoteJWKSet.java,它不会自行进行任何日志记录。它使用DefaultResourceRetriever class 从远程 URL 下载 JWKS 资源。 DefaultResourceRetriever 也没有明确记录任何内容。它的作用是使用标准 Java java.net.HttpURLConnection class 来请求 JWKS 资源。

这意味着您可以使用标准的 Java 日志记录工具来记录您需要的信息。以下是一些可能有助于实现这一目标的答案:

Java: Display request of an HttpURLConnection before sending Log all network interactions of Java application limiting java ssl debug logging

【讨论】:

欢迎并感谢您的建议。 ++1 我试过 logging.level.root=TRACElogging.level.java.net.HttpURLConnection=TRACElogging.level.sun.net.www.protocol.http.HttpURLConnection.level=TRACE 。但发现没有额外的日志记录。我的设置有什么问题吗? 我认为您还需要更改处理程序的日志记录级别。如果您正在使用控制台日志记录处理程序,则将其日志记录级别更改为 ALL 像这样java.util.logging.ConsoleHandler.level = ALL 如果你不介意 - 你能指导我在弹簧靴方面。这个日志跟踪对我来说非常重要。 其实这并不是SpringBoot特有的。该日志记录工具由 Java 提供。您可以通过使用-Djava.util.logging.config.file=/path/to/app.properties 的JVM 启动参数指定日志记录属性文件来启用Java 日志记录。有关如何提供 logging.properties 的信息,请参阅 this question。更多详情可以查看Java Logging Overview Here's a gist 具有最少的日志记录配置,在您的情况下应该足够了。

以上是关于使用 nimbus-jose-jwt 时,当请求远程 url 进行缓存更新等时,我可以使用 RemoteJWKSet 找到(参见日志)的主要内容,如果未能解决你的问题,请参考以下文章

编码实战2022年还在用jjwt操作jwt?,推荐你使用nimbus-jose-jwt,爽到飞起~

在 nimbus-jose-jwt 中,lifespan 和 refreshTime 有啥区别?

10.Vue请求远端数据库

如何使用 RSA 加密 JWT

第16篇-JAVA 类加载与反射

springboot 集成jwt