Files
project-auth-server/bootstrap/build/reports/jacoco/test/html/com.project.auth.config.auth.security/SecurityExceptionHandler.java.html
T

77 lines
5.3 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>SecurityExceptionHandler.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">bootstrap</a> &gt; <a href="index.source.html" class="el_package">com.project.auth.config.auth.security</a> &gt; <span class="el_source">SecurityExceptionHandler.java</span></div><h1>SecurityExceptionHandler.java</h1><pre class="source lang-java linenums">package com.project.auth.config.auth.security;
import com.project.auth.application.support.audit.AuthAuditEventType;
import com.project.auth.application.support.logging.LogSanitizer;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import java.util.Objects;
public class SecurityExceptionHandler implements AuthenticationEntryPoint, AccessDeniedHandler {
<span class="fc" id="L19"> private static final Logger log = LoggerFactory.getLogger(SecurityExceptionHandler.class);</span>
private final HandlerExceptionResolver handlerExceptionResolver;
private final SecurityAuditTrailWriter securityAuditTrailWriter;
public SecurityExceptionHandler(
HandlerExceptionResolver handlerExceptionResolver,
SecurityAuditTrailWriter securityAuditTrailWriter
<span class="fc" id="L27"> ) {</span>
<span class="fc" id="L28"> this.handlerExceptionResolver = Objects.requireNonNull(</span>
handlerExceptionResolver,
&quot;handlerExceptionResolver must not be null&quot;
);
<span class="fc" id="L32"> this.securityAuditTrailWriter = Objects.requireNonNull(</span>
securityAuditTrailWriter,
&quot;securityAuditTrailWriter must not be null&quot;
);
<span class="fc" id="L36"> }</span>
@Override
public void commence(
HttpServletRequest request,
HttpServletResponse response,
AuthenticationException authException
) {
<span class="fc" id="L44"> recordAudit(request, AuthAuditEventType.AUTHENTICATION_REQUIRED, &quot;Authentication required.&quot;);</span>
<span class="pc bpc" id="L45" title="1 of 2 branches missed."> if (response.isCommitted()) {</span>
<span class="nc" id="L46"> log.warn(&quot;Response already committed; cannot render authentication error body. requestPath={}&quot;,</span>
<span class="nc" id="L47"> LogSanitizer.requestPath(request.getRequestURI()));</span>
<span class="nc" id="L48"> return;</span>
}
<span class="fc" id="L50"> handlerExceptionResolver.resolveException(request, response, null, authException);</span>
<span class="fc" id="L51"> }</span>
@Override
public void handle(
HttpServletRequest request,
HttpServletResponse response,
AccessDeniedException accessDeniedException
) {
<span class="fc" id="L59"> recordAudit(request, AuthAuditEventType.ACCESS_DENIED, &quot;Access denied.&quot;);</span>
<span class="pc bpc" id="L60" title="1 of 2 branches missed."> if (response.isCommitted()) {</span>
<span class="nc" id="L61"> log.warn(&quot;Response already committed; cannot render access-denied error body. requestPath={}&quot;,</span>
<span class="nc" id="L62"> LogSanitizer.requestPath(request.getRequestURI()));</span>
<span class="nc" id="L63"> return;</span>
}
<span class="fc" id="L65"> handlerExceptionResolver.resolveException(request, response, null, accessDeniedException);</span>
<span class="fc" id="L66"> }</span>
private void recordAudit(HttpServletRequest request, AuthAuditEventType type, String description) {
try {
<span class="fc" id="L70"> securityAuditTrailWriter.record(request, type, description);</span>
<span class="nc" id="L71"> } catch (RuntimeException auditFailure) {</span>
<span class="nc" id="L72"> log.warn(&quot;Security audit write failed; continuing with response rendering. type={}&quot;,</span>
type, auditFailure);
<span class="fc" id="L74"> }</span>
<span class="fc" id="L75"> }</span>
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.13.202504020838</span></div></body></html>