fix: 인증 로컬스토리지 복구 흐름에서 TokenStore 적재가 보장되지 않은 상태로 인증 통과 처리되는 보안 누수 현상 수정 (401 오류 원천 차단)
TaxBaik CI/CD / build-and-deploy (push) Successful in 54s
TaxBaik CI/CD / build-and-deploy (push) Successful in 54s
This commit is contained in:
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user