=== echo 가 왜 401 을 내나 === at java.base/sun.nio.ch.Net.connect0(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.connect(Unknown Source) ~[na:na] at java.base/sun.nio.ch.Net.connect(Unknown Source) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source) ~[na:na] at java.base/java.net.SocksSocketImpl.connect(Unknown Source) ~[na:na] at java.base/java.net.Socket.connect(Unknown Source) ~[na:na] at java.base/sun.security.ssl.SSLSocketImpl.connect(Unknown Source) ~[na:na] at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source) ~[na:na] at java.base/sun.net.NetworkClient.doConnect(Unknown Source) ~[na:na] at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:na] at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsClient.(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsClient.New(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source) ~[na:na] at org.springframework.http.client.SimpleClientHttpRequest.executeInternal(SimpleClientHttpRequest.java:79) ~[spring-web-6.2.19.jar!/:6.2.19] at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:88) ~[spring-web-6.2.19.jar!/:6.2.19] at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:81) ~[spring-web-6.2.19.jar!/:6.2.19] at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:900) ~[spring-web-6.2.19.jar!/:6.2.19] ... 101 common frames omitted === echo 의 issuer 설정 === [{"name":"SERVER_PORT","value":"8081"},{"name":"SERVER_FORWARD_HEADERS_STRATEGY","value":"native"},{"name":"JAVA_TOOL_OPTIONS","value":"-XX:MaxRAMPercentage=70"},{"name":"SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI","value":"https://auth.hyeonworks.com/realms/keycloak-patterns"},{"name":"SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI","value":"https://auth.hyeonworks.com/realms/keycloak-patterns/protocol/openid-connect/certs"}] === 401 의 WWW-Authenticate === HTTP/1.1 401 Unauthorized Server: nginx/1.22.1 Date: Thu, 17 Sep 2026 07:17:43 GMT Content-Length: 0 Connection: keep-alive Cache-Control: no-cache, no-store, max-age=0, must-revalidate Expires: 0 Pragma: no-cache === realm 의 accessTokenLifespan === { "accessTokenLifespan" : 60, "ssoSessionIdleTimeout" : 1800 }=== 시계 차이 === host 1789629559 kc-0 1789629465