From 13b00504ac893071f882ac228aa1f4daf7aa7186 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Wed, 24 Jun 2026 15:32:18 +0900 Subject: [PATCH] =?UTF-8?q?-=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EC=95=BD?= =?UTF-8?q?=EA=B4=80=20=ED=83=AD=20UI=20=EA=B0=9C=EC=84=A0=20-=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A1=A4=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=A1=B0=EC=A0=95=20-=20=ED=95=84?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5=20=EA=B2=BD=EA=B3=A0=20=EB=A9=94?= =?UTF-8?q?=EC=84=B8=EC=A7=80=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EB=AF=B8=EC=99=84=EB=A3=8C=20=EA=B2=BD=EA=B3=A0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../portal/portaluser/entity/TwoFactorAuth.java | 13 +++++++++++++ .../repository/TwoFactorAuthRepository.java | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/src/main/java/com/eactive/apim/portal/portaluser/entity/TwoFactorAuth.java b/src/main/java/com/eactive/apim/portal/portaluser/entity/TwoFactorAuth.java index 0b0e714..a838918 100644 --- a/src/main/java/com/eactive/apim/portal/portaluser/entity/TwoFactorAuth.java +++ b/src/main/java/com/eactive/apim/portal/portaluser/entity/TwoFactorAuth.java @@ -28,6 +28,11 @@ public class TwoFactorAuth { @Convert(converter = PersonalDataEncryptConverter.class) private String recipient; + // recipient 가 암호화 컬럼이라 값으로 동등 조회/중복정리가 불가능하므로, + // recipient 평문의 결정적 해시(HMAC-SHA256, hex)를 별도 조회 키로 둔다. (비암호화) + @Column(name = "recipient_key", length = 64) + private String recipientKey; + @Column(name = "auth_number", length = 255) private String authNumber; @@ -49,6 +54,14 @@ public class TwoFactorAuth { this.recipient = recipient; } + public String getRecipientKey() { + return recipientKey; + } + + public void setRecipientKey(String recipientKey) { + this.recipientKey = recipientKey; + } + public String getAuthNumber() { return authNumber; } diff --git a/src/main/java/com/eactive/apim/portal/portaluser/repository/TwoFactorAuthRepository.java b/src/main/java/com/eactive/apim/portal/portaluser/repository/TwoFactorAuthRepository.java index b8219c9..ef636a0 100644 --- a/src/main/java/com/eactive/apim/portal/portaluser/repository/TwoFactorAuthRepository.java +++ b/src/main/java/com/eactive/apim/portal/portaluser/repository/TwoFactorAuthRepository.java @@ -6,7 +6,16 @@ import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface TwoFactorAuthRepository extends JpaRepository { + + // recipientKey(결정적 해시) 기반 조회/정리. recipient 가 암호화 컬럼이라 값 동등 조회가 깨지는 문제를 우회한다. + Optional findByRecipientKey(String recipientKey); + + void deleteAllByRecipientKey(String recipientKey); + + // 아래 두 메서드는 recipient(암호화 컬럼) 기반이라 신뢰할 수 없음 — 신규 코드에서는 RecipientKey 버전을 사용할 것. + @Deprecated Optional findByRecipient(String recipientKey); + @Deprecated void deleteAllByRecipient(String recipient); }