Skip to content

Commit c501285

Browse files
jan-olaveideJan-Olav Eide
and
Jan-Olav Eide
authored
skip validation for async requests when the client id gone (#969)
Co-authored-by: Jan-Olav Eide <jan-olav,eide@nav.no>
1 parent 6c367ed commit c501285

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

token-validation-filter/src/main/kotlin/no/nav/security/token/support/filter/JwtTokenValidationFilter.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
11
package no.nav.security.token.support.filter
22

3+
import jakarta.servlet.DispatcherType
4+
import jakarta.servlet.DispatcherType.*
35
import jakarta.servlet.Filter
46
import jakarta.servlet.FilterChain
57
import jakarta.servlet.FilterConfig
8+
import jakarta.servlet.RequestDispatcher.ERROR_EXCEPTION
69
import jakarta.servlet.ServletRequest
710
import jakarta.servlet.ServletResponse
811
import jakarta.servlet.http.HttpServletRequest
912
import jakarta.servlet.http.HttpServletResponse
1013
import no.nav.security.token.support.core.context.TokenValidationContextHolder
1114
import no.nav.security.token.support.core.http.HttpRequest
1215
import no.nav.security.token.support.core.validation.JwtTokenValidationHandler
16+
import org.slf4j.LoggerFactory
1317

1418
open class JwtTokenValidationFilter(private val jwtTokenValidationHandler : JwtTokenValidationHandler, private val contextHolder : TokenValidationContextHolder) : Filter {
15-
19+
private val log = LoggerFactory.getLogger(JwtTokenValidationFilter::class.java)
1620
override fun destroy() {}
1721

1822
override fun doFilter(request : ServletRequest, response : ServletResponse, chain : FilterChain) {
1923
if (request is HttpServletRequest) {
20-
doTokenValidation(request, response as HttpServletResponse, chain)
24+
if (request.dispatcherType == ASYNC && (request.getAttribute(ERROR_EXCEPTION) as? String)?.contains("broken pipe", ignoreCase = true) == true) {
25+
log.trace("Skipping token validation for async request, client is gone")
26+
chain.doFilter(request, response)
27+
}
28+
else {
29+
doTokenValidation(request, response as HttpServletResponse, chain)
30+
}
2131
}
2232
else {
2333
chain.doFilter(request, response)

0 commit comments

Comments
 (0)