fix: 인증 로컬스토리지 복구 흐름에서 TokenStore 적재가 보장되지 않은 상태로 인증 통과 처리되는 보안 누수 현상 수정 (401 오류 원천 차단)
TaxBaik CI/CD / build-and-deploy (push) Successful in 54s

This commit is contained in:
2026-06-29 15:35:32 +09:00
parent 0d3615b44d
commit 917600a793
@@ -32,21 +32,22 @@ public class CustomAuthenticationStateProvider : AuthenticationStateProvider
// TokenStore가 비어있으면 localStorage에서 복원 (페이지 리로드 후) // TokenStore가 비어있으면 localStorage에서 복원 (페이지 리로드 후)
if (string.IsNullOrEmpty(accessToken)) if (string.IsNullOrEmpty(accessToken))
{ {
accessToken = await _localStorage.GetItemAsStringAsync("accessToken"); var storedToken = await _localStorage.GetItemAsStringAsync("accessToken");
if (!string.IsNullOrEmpty(accessToken)) if (!string.IsNullOrEmpty(storedToken))
{ {
var refreshToken = await _localStorage.GetItemAsStringAsync("refreshToken"); var refreshToken = await _localStorage.GetItemAsStringAsync("refreshToken");
var ticksStr = await _localStorage.GetItemAsStringAsync("tokenExpiry"); var ticksStr = await _localStorage.GetItemAsStringAsync("tokenExpiry");
if (long.TryParse(ticksStr, out var ticks)) if (long.TryParse(ticksStr, out var ticks))
{ {
_tokenStore.AccessToken = accessToken; _tokenStore.AccessToken = storedToken;
_tokenStore.RefreshToken = refreshToken; _tokenStore.RefreshToken = refreshToken;
_tokenStore.TokenExpiryTicks = ticks; _tokenStore.TokenExpiryTicks = ticks;
accessToken = storedToken;
} }
} }
} }
if (string.IsNullOrEmpty(accessToken)) if (string.IsNullOrEmpty(_tokenStore.AccessToken))
{ {
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity())); return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
} }