向后端发送无效承载令牌时如何记录

Posted

技术标签:

【中文标题】向后端发送无效承载令牌时如何记录【英文标题】:How To Log When Invalid Bearer Token Is Sent To Backend 【发布时间】:2021-01-29 05:43:10 【问题描述】:

我有一个 Jhipster 构建的后端,并希望在请求发送无效身份验证承载令牌时进行记录。

目前使用 Postman,我可以发送一个有效的令牌来获取我需要的信息,并且记录如下:

2020-10-14 10:11:37.591 DEBUG 4132 --- [  XNIO-1 task-1] s.n.www.protocol.http.HttpURLConnection  : sun.net.www.MessageHeader@77674d5d5 pairs: GET /auth/realms/p
latform-development/protocol/openid-connect/certs HTTP/1.1: nullAccept: application/json, application/jwk-set+jsonUser-Agent: Java/11.0.7Host: sso.eva-int.c
omConnection: keep-alive
2020-10-14 10:11:37.630 DEBUG 4132 --- [  XNIO-1 task-1] s.n.www.protocol.http.HttpURLConnection  : sun.net.www.MessageHeader@2527b0a66 pairs: null: HTTP/1.1 200
 OKConnection: keep-aliveCache-Control: no-cacheContent-Type: application/jsonContent-Length: 1703Date: Wed, 14 Oct 2020 17:11:36 GMT
2020-10-14 10:11:37.649 DEBUG 4132 --- [  XNIO-1 task-1] jdk.event.security                       : X509Certificate: Alg:SHA256withRSA, Serial:17251f0f612, Subjec
t:CN=platform-development, Issuer:CN=platform-development, Key type:RSA, Length:2048, Cert Id:1603036153, Valid from:5/26/20, 10:02 AM, Valid until:5/26/30, 10:04
 AM

当我发送一个无效令牌时,我会收到一个状态为 401 的响应,并且标题显示“invalid_token”,这很好,但应用程序中没有记录任何内容。

处理这个问题的代码似乎来自 Spring Security 依赖项。有没有办法让它注销更多信息?

【问题讨论】:

您选择了哪种身份验证类型? 【参考方案1】:

Spring Security 有自己的日志记录,您只需要启用它即可。

将以下内容放入您的 application.properties:

logging.level.org.springframework.security=DEBUG

大多数其他 Spring 模块也是如此。

尝试在日志配置中设置属性,例如回退。

这也是 application.yml 版本:

logging:
  level:
    org:
      springframework:
        security: DEBUG

【讨论】:

在我的 application.yml 中包含该输出时,我没有看到任何其他输出。在安全配置中使用@EnableWebSecurity(debug = true) 为我提供了所有请求的安全过滤器链输出,但除此之外仍然没有记录无效令牌。 您所做的是不同的事情,它不会启用您的 Spring 安全日志。请按照以下链接更好地了解 Spring 日志记录。 Spring logiging tutorial 因此,当我使用参数-Dspring-boot.run.arguments=--logging.level.org.springframework.security=DEBUG 运行应用程序时,我会得到我正在寻找的额外日志记录。把它放在我的 application.yml 中并没有给出输出。 这最终起作用了,但我把它放在了错误的 application.yml 中。谢谢!

以上是关于向后端发送无效承载令牌时如何记录的主要内容,如果未能解决你的问题,请参考以下文章

如何暂停http请求,直到在localstorage中收到并记录令牌?

如何使 SignalR 承载身份验证安全或如何不记录查询字符串

是否可以使用无状态逻辑(无数据库)使令牌无效?

无效的 API 令牌

Servicestack导致承载令牌无效

如何简单地获取承载令牌以向 Azure DevOps API 发送请求?