🎯 Type
Architecture (구조 개선)
⚠️ AS-IS (현재 문제점)
현재 Kiosk BFF의 Device Token 인증 로직이 Core의 Repository를 직접 주입받아 DB를 조회하고 있습니다.
대상 파일:
- guideon-kiosk-bff/src/main/java/com/guideon/kiosk/global/security/DeviceTokenAuthFilter.java
- guideon-kiosk-bff/src/main/java/com/guideon/kiosk/global/security/DeviceTokenHandshakeInterceptor.java
현재 흐름:
- Kiosk BFF가 X-DEVICE-TOKEN 또는 WebSocket token query param을 받음
- Kiosk BFF에서 plain token을 SHA-256으로 해싱
- Kiosk BFF가 Core의 DeviceRepository를 직접 사용해서 DB 조회
- 유효한 device면 DeviceDetails를 생성해서 SecurityContext 또는 WebSocket session attributes에 저장
이 구조에서는 Kiosk BFF가 Core의 Entity/Repository/JPA 구조에 직접 의존하게 됩니다.
✨ TO-BE (개선 방향)
Device Token 검증 책임을 Core로 이동하고, Kiosk BFF는 Core 내부 API를 호출해서 인증 결과만 받는 구조로 변경하는 것이 좋을지 논의가 필요합니다.
제안 흐름:
- Kiosk BFF가 Device Token을 받음
- Kiosk BFF가 token을 SHA-256으로 해싱
- Kiosk BFF가 Core 내부 API로 tokenHash 검증 요청
- Core가 DeviceRepository로 DB 조회 및 active device 검증
- Core가 deviceId, siteId, zoneId, latitude, longitude 반환
- Kiosk BFF가 응답값으로 DeviceDetails 생성
예상 API:
- POST /internal/v1/devices/verify-token
또는
- GET /internal/v1/devices/verify?tokenHash={sha256}
확인하고 싶은 점:
- BFF에서 DeviceRepository를 직접 사용하는 것이 초기 의도였는지, 임시 구현이었는지
- REST 인증 필터와 WebSocket 핸드셰이크 인증을 모두 Core verify API 방식으로 바꿔도 되는지
- BFF가 Core에 plain token을 보낼지, SHA-256 hash를 보낼지
- DeviceTokenAuthFilter와 DeviceTokenHandshakeInterceptor가 공통 인증 client/helper를 공유하도록 정리해도 되는지
예상 작업:
🎯 Type
Architecture (구조 개선)
현재 Kiosk BFF의 Device Token 인증 로직이 Core의 Repository를 직접 주입받아 DB를 조회하고 있습니다.
대상 파일:
현재 흐름:
이 구조에서는 Kiosk BFF가 Core의 Entity/Repository/JPA 구조에 직접 의존하게 됩니다.
✨ TO-BE (개선 방향)
Device Token 검증 책임을 Core로 이동하고, Kiosk BFF는 Core 내부 API를 호출해서 인증 결과만 받는 구조로 변경하는 것이 좋을지 논의가 필요합니다.
제안 흐름:
예상 API:
또는
확인하고 싶은 점:
예상 작업: