@@ -25,21 +25,23 @@ public class CampusWiFiValidationService {
2525 private static final String WIFI_CACHE_KEY_PREFIX = "campus_wifi_validation:" ;
2626
2727
28- public WiFiValidationResult validateCampusWiFi (String ssid , String bssid , HttpServletRequest request ) {
28+ public WiFiValidationResult validateCampusWiFi (String gatewayIp , String bssid , HttpServletRequest request ) {
2929
3030 try {
3131 // 서버에서 클라이언트 IP 추출
3232 String ipAddress = IpUtil .getClientIp (request );
33- log .info ("Wi-Fi validation request - SSID: {}, BSSID: {}, IP: {}" , ssid , bssid , ipAddress );
33+
34+ log .info ("Wi-Fi validation request - Gateway IP: {}, BSSID: {}, Client IP: {}" , gatewayIp , bssid , ipAddress );
35+
3436
3537 // 캠퍼스 내부인지 확인
36- boolean isInCampus = isInCampusNetwork (ssid , bssid , ipAddress );
38+ boolean isInCampus = isInCampusNetwork (gatewayIp , bssid , ipAddress );
3739
3840 if (isInCampus ) {
39- cacheValidationResult (ssid , ipAddress , true );
41+ cacheValidationResult (gatewayIp , ipAddress , true );
4042 return WiFiValidationResult .valid ("캠퍼스 네트워크입니다" );
4143 } else {
42- cacheValidationResult (ssid , ipAddress , false );
44+ cacheValidationResult (gatewayIp , ipAddress , false );
4345 return WiFiValidationResult .invalid ("캠퍼스 네트워크가 아닙니다" );
4446 }
4547
@@ -50,43 +52,41 @@ public WiFiValidationResult validateCampusWiFi(String ssid, String bssid, HttpSe
5052 }
5153
5254
53- public WiFiValidationResult validateFromCache (String ssid , String bssid , HttpServletRequest request ) {
55+ public WiFiValidationResult validateFromCache (String gatewayIp , String bssid , HttpServletRequest request ) {
5456 try {
5557 // 서버에서 클라이언트 IP 추출
5658 String ipAddress = IpUtil .getClientIp (request );
57- log .info ("Wi-Fi validation cache request - SSID: {}, BSSID: {}, IP: {}" , ssid , bssid , ipAddress );
58- // IP 주소와 SSID를 통해 키를 생성 후 Redis에서 조회
59- String cacheKey = buildCacheKey (ssid , ipAddress );
59+ // Gateway IP와 클라이언트 IP를 통해 키를 생성 후 Redis에서 조회
60+ String cacheKey = buildCacheKey (gatewayIp , ipAddress );
6061 Boolean cachedResult = (Boolean ) redisTemplate .opsForValue ().get (cacheKey );
6162
6263 if (cachedResult != null ) {
63- log .debug ("Wi-Fi validation cache hit - SSID: {}, IP: {}, Result: {}" , ssid , ipAddress , cachedResult );
6464 return cachedResult
6565 ? WiFiValidationResult .valid ("캠퍼스 네트워크입니다 (캐시)" )
6666 : WiFiValidationResult .invalid ("캠퍼스 네트워크가 아닙니다 (캐시)" );
6767 }
6868
6969 // 캐시에 없으면 전체 검증 수행
70- log . debug ( "Wi-Fi validation cache miss - performing full validation" );
71- return validateCampusWiFi (ssid , bssid , request );
70+
71+ return validateCampusWiFi (gatewayIp , bssid , request );
7272
7373 } catch (Exception e ) {
74- log . error ( "Wi-Fi cache validation error" , e );
74+
7575 return WiFiValidationResult .error ("Wi-Fi 검증 중 오류가 발생했습니다: " + e .getMessage ());
7676 }
7777 }
7878
7979
80- private boolean isInCampusNetwork (String ssid , String bssid , String ipAddress ) {
80+ private boolean isInCampusNetwork (String gatewayIp , String bssid , String ipAddress ) {
8181
8282 // 설정 파일 Wi-fi 목록 불러오기
8383 List <CampusWiFiProperties .WiFiNetwork > activeNetworks = wifiProperties .networks ()
8484 .stream ()
8585 .filter (CampusWiFiProperties .WiFiNetwork ::active )
8686 .toList ();
8787 for (CampusWiFiProperties .WiFiNetwork network : activeNetworks ) {
88- // 1. SSID 체크
89- if (!network .isValidSSID ( ssid )) {
88+ // 1. Gateway IP 체크 (SSID 대신 사용)
89+ if (!network .isValidGatewayIP ( gatewayIp )) {
9090 continue ;
9191 }
9292 if (bssid != null && !bssid .isEmpty () && !network .isValidBSSID (bssid )) {
@@ -100,13 +100,13 @@ private boolean isInCampusNetwork(String ssid, String bssid, String ipAddress) {
100100 }
101101
102102
103- private String buildCacheKey (String ssid , String ipAddress ) {
104- return WIFI_CACHE_KEY_PREFIX + ssid + ":" + ipAddress ;
103+ private String buildCacheKey (String gatewayIp , String ipAddress ) {
104+ return WIFI_CACHE_KEY_PREFIX + gatewayIp + ":" + ipAddress ;
105105 }
106106
107107
108- private void cacheValidationResult (String ssid , String ipAddress , boolean isValid ) {
109- String cacheKey = buildCacheKey (ssid , ipAddress );
108+ private void cacheValidationResult (String gatewayIp , String ipAddress , boolean isValid ) {
109+ String cacheKey = buildCacheKey (gatewayIp , ipAddress );
110110 Duration ttl = Duration .ofMinutes (wifiProperties .validation ().cacheTtlMinutes ());
111111 redisTemplate .opsForValue ().set (cacheKey , isValid , ttl );
112112 }
0 commit comments