使用 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=TRACE
和 logging.level.java.net.HttpURLConnection=TRACE
和 logging.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,爽到飞起~