Microsoft Entra ID에서 리프레시 토큰과 액세스 토큰의 차이점과 그 중요성
By Mirko Peters ·
Microsoft Entra ID에서 리프레시 토큰과 액세스 토큰의 차이점과 그 중요성
Automatically translated with AI from the original post. Read the English original

리프레시 토큰과 액세스 토큰이 실제로 무엇이 다른지 궁금하셨다면 제대로 찾아오셨습니다. Microsoft Entra ID와 현대 클라우드 보안의 세계에서 이 두 토큰 유형은 각각 고유한 역할과 특성, 보안 규칙을 가지고 핵심 역할을 합니다. 이러한 차이를 정확히 이해해 두면 Microsoft 365, Azure 또는 Entra 플랫폼에 연결된 모든 앱의 보안 로그인 흐름을 설계할 때 큰 도움이 됩니다.
이것은 단순한 이론이 아닙니다. 어떤 토큰을 언제 사용할지, 어디에 저장할지, 그리고 어떻게 안전하게 보호할지를 아는 것은 Microsoft 생태계에서 일하는 IT 전문가, 개발자, 관리자에게 핵심 역량입니다. 이 선택은 앱의 보안 수준뿐 아니라 사용자가 매일 겪는 경험에도 영향을 미칩니다. 특히 로그인 상태를 유지하거나 보안 문제에서 복구하는 과정에서 그렇습니다.
이 가이드 전반에서 액세스 토큰과 리프레시 토큰이 인증 및 권한 부여 구성에서 어떻게 맞물리는지, 수명이 왜 중요한지, 그리고 각 토큰의 고유한 특징이 무엇인지 구체적으로 살펴보겠습니다. 특히 Microsoft Entra ID 환경을 중심으로 다룹니다. 글을 끝까지 읽으시면 클라우드 토큰 관리라는 복잡한 영역에서 강력한 보안 조치와 원활한 사용자 경험의 균형을 맞추는 방법을 알게 되실 것입니다.
최신 인증에서 토큰 이해하기
최신 인증은 올바른 시점에 올바른 권한을 부여하는 것이 핵심이며, 그 중심에 디지털 토큰이 있습니다. 온라인 앱이나 서비스를 사용하고 있다면, 인식하지 못하더라도 이미 토큰을 사용하고 있을 가능성이 큽니다. 토큰은 비밀번호를 매번 제공하지 않고도 애플리케이션이 클라우드 서비스에 사용자를 대신해 인증할 수 있도록 중개하는 역할을 합니다.
토큰은 Microsoft Entra ID와 같은 플랫폼에서 로그인과 보안 액세스를 지원하는 OAuth 2.0 프레임워크의 핵심입니다. 이제 앱은 세션 ID나 취약한 쿠키를 관리하는 대신, 이러한 영리한 디지털 "통행증"에 의존하여 사용자를 식별하고 민감한 클라우드 리소스에 대한 접근을 허용합니다. 이러한 변화로 대규모 조직이 클라우드로 전환하면서 보안은 더욱 엄격해지고 동시에 더 편리해졌습니다.
핵심은 서로 다른 작업을 위해 여러 종류의 토큰을 사용한다는 점입니다. 어떤 토큰은 임시 접근용으로, 빠르게 사용하고 버리도록 설계되어 있습니다. 다른 토큰은 백그라운드에서 세션을 유지하여 로그인을 반복하지 않고도 하루를 자연스럽게 보낼 수 있게 해 줍니다. 액세스 토큰과 리프레시 토큰의 이러한 구분은 Entra ID를 포함한 Microsoft 클라우드 서비스가 사용자 경험과 조직 보안의 균형을 유지하는 방식에서 매우 중요합니다.
이 섹션에서는 토큰이 무엇인지, 어떤 유형이 있는지, 그리고 오늘날 인증 환경에서 각 역할이 왜 그토록 중요한지 기본 개념을 정리합니다. 가장 근본적인 질문인 토큰이란 정확히 무엇인지부터 자세히 살펴보겠습니다.
토큰이란 무엇인가?
디지털 보안에서 토큰은 디지털 자격 증명 역할을 하는 작은 데이터 조각입니다. 호텔 키카드의 디지털 버전이라고 생각하시면 됩니다. 애플리케이션이 다른 시스템에 사용자의 신원이나 권한을 증명하기 위해 제시하는 것입니다. 토큰은 클라우드 앱과 API에서 인증(당신이 본인이 맞는지 확인)과 권한 부여(지금 하려는 작업이 허용되는지 확인)에 모두 사용될 수 있습니다.
토큰은 일반적으로 OAuth 2.0과 같은 최신 표준을 따르며, JSON Web Token(JWT)과 같은 베어러 토큰 형태로 제공되는 경우가 많습니다. 이러한 토큰은 기존 세션 ID보다 이동성이 높고, 구조화된 클레임을 담을 수 있으며, 클라우드 리소스와 분산 시스템에 대한 안전한 접근을 지원하기 때문에 선호됩니다.
액세스 토큰이란 무엇인가?
액세스 토큰은 인증에 성공한 후 앱에 발급되는 수명이 짧은 디지털 자격 증명입니다. 주된 목적은 비밀번호나 기타 민감한 정보를 노출하지 않고, API, 사용자 데이터, 클라우드 스토리지와 같은 특정 리소스에 대해 임시적이고 범위가 엄격하게 제한된 접근 권한을 부여하는 것입니다.
이 토큰은 제한된 시간 동안만 유효하며, Microsoft Entra ID에서는 보통 30~90분입니다. 앱은 사용자가 권한이 있음을 증명하기 위해 모든 API 요청에 이 토큰을 함께 보냅니다. OAuth 2.0 표준에 따라 액세스 토큰은 Microsoft 365, Azure, 그리고 Entra ID에 연결된 모든 서비스에서 작동하며, 세분화되고 시간 제한이 있는 권한을 제공합니다.
리프레시 토큰이란 무엇인가?
리프레시 토큰은 최초 로그인 이후 신뢰된 애플리케이션에 발급되는 지속성 자격 증명입니다. 액세스 토큰과 달리 리프레시 토큰의 핵심 역할은 현재 토큰이 만료되었을 때 사용자에게 다시 인증을 요구하지 않고 조용히 새로운 액세스 토큰을 받아오는 것입니다.
즉, 리프레시 토큰은 장기간 유지되는 세션을 가능하게 하여 사용자가 반복해서 로그인해야 하는 번거로움을 줄여 줍니다. Microsoft 환경에서 리프레시 토큰은 원활한 사용자 경험에 필수적입니다. 앱은 세션과 디바이스를 가로질러, 심지어 네트워크가 일시적으로 끊긴 뒤에도 백그라운드에서 조용히 액세스를 갱신할 수 있으며, 그동안 민감한 자격 증명은 안전하게 보호됩니다.
액세스 토큰과 리프레시 토큰의 주요 차이점
얼핏 보면 액세스 토큰과 리프레시 토큰은 무작위 문자열처럼 보일 수 있지만, 역할과 수명은 전혀 다릅니다. 두 토큰은 서로 바꿔 쓸 수 없으며, Microsoft Entra ID 인증 흐름에서 각각 아주 구체적인 목적을 위해 설계되었습니다.
액세스 토큰은 API를 호출하고 데이터를 가져올 때 쓰는 일종의 '출입 허가증'이지만, 사용할 수 있는 기간은 짧습니다. 보안 위험을 최소화하기 위해 의도적으로 수명을 짧게 설계되었으며, 특히 토큰이 유출될 경우를 대비한 것입니다. 반면 리프레시 토큰은 더 오래 유지됩니다. 사용자 뒤에서 조용히 권한을 다시 부여하여 사용자 경험이 끊기지 않도록 하는 것이 목적입니다.
이러한 차이를 이해하는 것은 단순한 이론 공부가 아닙니다. 전략을 잘못 고르거나 토큰을 잘못된 위치에 저장하면, 사용자는 잦은 재로그인으로 불편을 겪거나 보안 체계에 심각한 구멍이 생기게 됩니다. 이어지는 섹션에서는 각 토큰의 역할, 수명, 그리고 실제 환경에서 무엇이 토큰을 안전하게 또는 위험하게 만드는지를 이론이 아닌 현실 관점에서 살펴보겠습니다.
Microsoft 365, Azure 또는 Entra ID와 연결된 서비스를 설계하고 있다면 다음 차이점을 주의해서 살펴보십시오. 이 차이점은 앱이 강력한 보안과 모든 사용자에 대한 끊김 없는 세션 운영 사이에서 균형을 잡는 방식을 결정합니다.
기능적 역할: 각 토큰이 하는 일
액세스 토큰은 API와 클라우드 리소스에 접근하는 티켓이지만, 그 효력에는 한계가 있습니다. 액세스 토큰이 만료되면 리프레시 토큰이 함께 있지 않는 한 방법이 없습니다. 리프레시 토큰은 무대 뒤 출입 패스와 같아서, 사용자에게 다시 묻지 않고도 앱이 조용히 새 액세스 토큰을 요청할 수 있게 해 줍니다.
결국 Microsoft 365와 Azure 클라우드 환경에서 액세스 토큰은 '지금 이 순간'의 작업을 처리하고, 리프레시 토큰은 세션이 바뀌어도 그 작업이 백그라운드에서 계속 이어지도록 합니다. 이 조합 덕분에 보안이 유지되는 워크플로를 구성할 수 있고, 사용자가 반복적인 재인증으로 골머리를 앓지 않게 됩니다.
토큰 수명과 만료가 중요한 이유
액세스 토큰의 수명이 짧은 데는 이유가 있습니다. Entra ID에서는 기본적으로 보통 30분에서 90분입니다. 짧은 기간 동안만 필요한 접근 권한을 부여하고 만료되도록 하여, 토큰이 유출되더라도 위험을 줄이기 위한 것입니다. 반면 리프레시 토큰은 장거리 주자와 같습니다. 앱의 요구 사항과 구성된 보안 정책에 따라 며칠, 몇 주, 심지어 몇 달 동안 유지되는 경우가 많습니다.
이 차이는 중요합니다. 수명이 짧은 토큰은 노출 위험이 적지만 그만큼 자주 갱신해야 합니다. 수명이 긴 리프레시 토큰은 세션을 끊기지 않게 하지만, 잘못된 사람의 손에 들어가면 위험도 커집니다. 핵심은 보안과 사용자 편의의 균형을 맞추는 것입니다.
액세스 토큰과 리프레시 토큰의 보안 특성
- 1. 액세스 토큰 보안: 액세스 토큰은 즉시, 일시적으로 사용하기 위한 것입니다. 보통 1시간 미만으로 유효하므로, 도난당하더라도 위험에 노출되는 기간은 짧습니다. 다만 베어러 토큰이므로 토큰을 가진 누구나 사용할 수 있습니다. 따라서 반드시 HTTPS로만 전송해야 하며, 클라이언트의 영구 저장소가 아닌 메모리에 보관해야 합니다.
- 2. 리프레시 토큰 보안: 리프레시 토큰은 수명이 길고 훨씬 민감합니다. 리프레시 토큰이 침해되면 공격자는 사용자가 로그아웃한 뒤에도 새 액세스 토큰을 지속적으로 얻을 수 있습니다. 따라서 안전한 저장이 매우 중요하며, 가능하면 보안 enclave(모바일에서는 하드웨어 기반 저장소, 브라우저에서는 HTTP 전용 보안 쿠키 등)에 보관해야 합니다.
- 3. 공격 표면: HTTPS가 적용되지 않으면 액세스 토큰이 전송 중에 가로채이거나 메모리 덤프에서 발견될 수 있습니다. 리프레시 토큰을 로컬 스토리지나 세션 스토리지에 저장하면 크로스 사이트 스크립팅(XSS) 공격에 매우 취약해집니다. Microsoft 환경에서 추가 보호를 원한다면 조건부 액세스 정책을 적용하고, 비정상적인 토큰 사용을 모니터링하십시오.
- 4. 해지와 위험: 액세스 토큰은 대개 상태 비저장(stateless) JWT이므로 만료 전에 해지할 수 없는 경우가 일반적입니다. 반면 리프레시 토큰은 침해가 감지되면 권한 부여 서버가 능동적으로 해지하거나 무효화할 수 있습니다. 리프레시 토큰을 통해 공격자가 지속적인 액세스를 악용하는 위험과 통제 방법은 Entra ID의 OAuth 동의 공격에 대한 이 개요에서 자세히 살펴볼 수 있습니다.
- 5. Microsoft 클라우드의 완화 방안: 수명이 짧은 액세스 토큰, 엄격한 동의 제어, 강력한 로깅, 관리자 동의 적용을 함께 활용하면 위험을 줄이는 데 도움이 됩니다. ID 확산을 관리하고 더 나은 보안 정책을 시행하려면 Entra ID 보안 거버넌스를 설명한 이 팟캐스트 에피소드에서 설명하는 보안 거버넌스를 구현해야 합니다.
위험을 줄이는 수명이 짧은 액세스 토큰
액세스 토큰의 수명을 짧게 유지하는 설계 선택은 단순한 과잉 경계가 아니라 현명한 위험 관리입니다. 수명이 짧은 액세스 토큰이 탈취되더라도 공격 가능 시간이 매우 짧습니다. 한 시간 이내에 쓸모가 없어지므로 대부분의 측면 이동(lateral movement) 시도와 토큰 재전송 사고를 차단할 수 있습니다.
Microsoft 365와 Azure 같은 분산 시스템에서는 이 방식이 사용자 권한 변경이나 로그아웃 작업이 신속하게 적용되도록 보장하기도 합니다. 만료가 빠르면 승인되지 않은 토큰 사용이 노출되는 범위가 좁아지므로, 유통 중인 모든 토큰에 대한 중앙 해지 목록 없이도 신속한 대응이 가능합니다.
원활한 재인증을 위한 지속형 리프레시 토큰
지속형 리프레시 토큰은 사용자 경험을 매끄럽게 하는 데 목적이 있습니다. 매시간 로그인 화면을 띄우는 대신, 리프레시 토큰을 사용하면 앱이 만료된 액세스 토큰을 새 토큰으로 교체할 수 있으며, 대개 사용자가 알아차리지 못할 만큼 즉시 자동으로 처리됩니다. 하루 종일 Microsoft 365 앱을 사용하거나 연결이 불안정한 모바일 클라이언트를 쓰는 경우 생산성에 큰 차이를 만듭니다.
트레이드오프도 있습니다. 수명이 긴 리프레시 토큰은 침해될 경우 더 큰 위험을 수반합니다. 그래서 현명한 앱은 해지 메커니즘과 조건부 액세스 정책을 함께 적용하여, 원활한 재인증의 이점과 토큰 유출 시 악용될 가능성을 균형 있게 관리합니다.
Microsoft Entra ID의 토큰 수명 주기 관리
토큰을 발급받는 것은 절반에 불과하며, 시간이 지나면서 토큰을 관리하는 방식이 보안과 사용자 경험의 차이를 만듭니다. Microsoft Entra ID에서 토큰 수명 주기는 액세스 토큰이나 리프레시 토큰이 생성되는 순간부터 갱신, 교체(rotation), 또는 완전한 해지가 이루어지는 방식과 시점까지 모두 포함합니다.
이 프로세스는 OAuth 2.0 모범 사례와 세션 제어를 위한 Microsoft 고유의 메커니즘에 따라 구성됩니다. 재전송 공격 같은 실시간 위협, 클록 스큐(clock skew) 같은 시간 관련 문제, 그리고 전 세계에 분산된 시스템의 세부 사항까지 고려해야 합니다. 이를 올바르게 수행하려면 토큰 교체, 검증 단계, 해지 경로에 익숙해야 합니다.
Microsoft의 접근 방식에 따르면, 조직은 정책 적용, 관리 제어, 상세한 로깅을 활용해 토큰 확산을 관리할 수 있습니다. 특히 클라우드에 연결된 디바이스 수가 급증하는 상황에서는 더욱 그렇습니다. 대규모 환경에서 ID 보안 정책을 확장하는 방법에 대해서는 Entra ID 조건부 액세스와 위험 감소를 다룬 이 팟캐스트 에피소드에서 실질적인 거버넌스 조언을 확인할 수 있습니다.
다음에서는 토큰을 교체하고 갱신하는 방법, Entra ID가 토큰을 발급하고 검증하는 방식, 그리고 시간 설정과 구현상의 세부 사항에서 주의해야 할 점을 살펴봅니다. 이 단계를 올바르게 수행하면 앱과 사용자 모두 만족할 것입니다.
토큰 교체 및 갱신 모범 사례
- 1. 토큰을 자주 교체하십시오: 액세스 토큰은 만료될 때마다 항상 새로 발급받고, 유효 기간을 억지로 연장하지 마십시오. 리프레시 토큰은 사용할 때마다 교체하는 방식을 채택하십시오. 즉, 새 액세스 토큰을 얻기 위해 사용할 때마다 새 리프레시 토큰으로 대체합니다. 이렇게 하면 이전 토큰을 훔친 공격자를 차단하는 데 도움이 됩니다.
- 2. 이전에 사용된 토큰을 무효화하십시오: 리프레시 토큰이 새 토큰으로 대체되는 즉시 해지("블랙리스트 등록")하는 것을 기본 절차로 삼으십시오. 이렇게 하면 가장 최근에 발급된 리프레시 토큰만 유효한 상태로 남아, 재전송 공격이 가능한 기간을 줄일 수 있습니다.
- 3. 취약한 클라이언트에 토큰을 노출하지 마십시오: 꼭 필요한 경우가 아니라면 단일 페이지 앱(SPA)과 같은 프런트엔드 퍼블릭 클라이언트에 리프레시 토큰을 보내지 마십시오. 부득이하게 보내야 한다면 PKCE(Proof Key for Code Exchange)와 같은 추가 통제 수단을 반드시 함께 적용하십시오.
- 4. 의심스러운 사용 모니터링: 다른 위치나 디바이스에서 리프레시 토큰이 재사용되는 등 비정상적인 토큰 사용을 탐지하려면 Microsoft Entra ID에 내장된 모니터링과 관리자 알림을 활용하십시오. 조건부 액세스 대응을 자동화해 침해된 세션을 즉시 종료하고 피해 범위를 제한하십시오.
- 5. 주요 앱의 규정 준수: Microsoft 365, Azure AD, Entra ID를 지원하는 애플리케이션에는 토큰 순환(rotation) 패턴을 위한 기본 지원 기능이 있습니다. 최소한 이들의 기본 정책을 채택하십시오(예: Exchange Online의 1회용 리프레시 토큰). 그런 다음 민감한 워크로드에는 필요에 따라 보안을 강화하십시오.
Entra ID에서 토큰이 발급되고 검증되는 방식
- 1. 토큰 발급(권한 부여 서버): 인증에 성공하면 Microsoft Entra ID(권한 부여 서버)가 액세스 토큰을 발급하고, 요청된 경우 리프레시 토큰도 발급합니다. 이들은 일반적으로 JWT 형식이며, 강력한 서명 알고리즘(예: RS256)과 Microsoft가 관리하는 개인 키로 디지털 서명됩니다.
- 2. 토큰 클레임과 내용: 액세스 토큰에는 사용자, 사용자 권한(스코프), 만료 정보에 관한 클레임이 포함됩니다. 리프레시 토큰은 불투명(opaque)한 형태이며, Entra ID가 세션을 안전하게 갱신하는 데 필요한 정보를 담고 있습니다.
- 3. 리소스 서버에서의 검증: 앱이나 API가 액세스 토큰을 받으면 Entra ID의 JWKS 엔드포인트에 게시된 공개 서명 키로 디지털 서명을 확인합니다. 이 검증을 통해 토큰이 정상적으로 발급되었고, 변조되지 않았으며, 아직 유효한지(만료되거나 취소되지 않았는지) 확인할 수 있습니다.
- 4. 보안 점검: Entra ID는 모든 리소스 서버와 API에서 대상(audience) 검사, 스코프 적용, 서명 검증을 지원합니다. 중요한 앱이라면 접근을 허용하기 전에 항상 이러한 클레임을 확인하고 서명을 검증하십시오.
- 5. 취소 및 블랙리스트 처리: 상태를 저장하지 않는(stateless) 액세스 토큰과 달리, 리프레시 토큰은 Entra ID가 취소할 수 있으므로 침해가 의심될 때 즉시 대응할 수 있습니다. 관리자는 정책을 업데이트해 사용자를 강제로 로그아웃시키거나 토큰 유효 기간을 제한할 수 있습니다.
유예 기간과 구현 시 유의점
유예 기간(grace period)은 토큰 기반 인증에서 실제 환경의 시간 차이로 생기는 문제를 완화합니다. 서버와 클라이언트는 종종 약간씩 다른 시계로 동작하는데, 이를 클록 스큐(clock skew)라고 합니다. Microsoft Entra ID는 토큰 만료를 확인할 때 대략 5분 정도의 여유 시간을 둡니다. 이를 통해 시스템 시간의 순간적인 차이 때문에 로그인이 실패하지 않도록 합니다.
최상의 결과를 얻으려면 NTP를 사용해 모든 서버의 시계를 동기화하십시오. 고가용성 구성이나 다중 리전 배포에서는 토큰 만료 기간이 조금 늘어날 수 있다는 점도 이해해야 합니다. 유예 기간에 관해서는 Entra ID 문서의 권장 사항을 참고하고, 특히 리전이나 시간대를 이동하는 사용자의 실제 트래픽 흐름을 기준으로 동작을 항상 테스트하십시오.
클라이언트 애플리케이션에서 토큰의 안전한 저장 및 처리
아무리 강력한 토큰이라도 저장되는 위치만큼만 안전합니다. 그래서 Microsoft Entra ID 인증을 다루는 모든 앱에서 안전한 저장과 처리는 가장 실질적인 과제입니다. 액세스 토큰이나 리프레시 토큰을 어디에 저장할지는 브라우저, 모바일, 데스크톱 등 클라이언트 유형에 따라 달라집니다. 각 환경에는 고유한 장점과 맹점, 그리고 흔히 빠지는 함정이 있습니다.
브라우저의 localStorage에 토큰을 저장하는 것이 무해하다고 생각한다면 다시 생각해 보십시오. XSS 공격 한 번이면 토큰이 탈취될 수 있습니다. 모바일 앱은 더 안전해 보이지만, 루팅이나 탈옥을 하면 “안전하다”고 여겨지던 토큰도 노출될 수 있습니다. 그리고 단일 페이지 앱(SPA)에서는 악성 스크립트가 접근할 수 없는 안전한 저장소 자체가 사실상 없습니다.
이 섹션에서는 앱 유형별로 올바른 저장 방식을 선택하는 데 필요한 지침을 제공합니다. HTTP 전용 보안 쿠키, 브라우저 세션 메모리, 플랫폼별 보안 저장소 등 실질적인 선택지를 살펴보고, 영구 토큰을 안전하게 보관하기 위해 반드시 지켜야 할 단계도 다룹니다. 또한 클라이언트 시크릿을 숨길 수 없는 퍼블릭 클라이언트에 특별한 주의가 필요한 이유를 설명하고, 모든 시나리오에 맞는 위험 인식 기반의 저장 및 순환 계획을 세우는 데 도움을 드립니다.
앱의 보안은 이런 선택에 달려 있으므로 우연에 맡기지 마십시오. 앱이 튼튼하게 버틸지, 아니면 토큰 탈취의 첫 징후에 무너질지를 결정하는 안전한 패턴과 안전하지 않은 패턴을 함께 살펴보겠습니다.
클라이언트 유형별 리프레시 토큰의 안전한 저장
- 1. 웹 애플리케이션(브라우저): 브라우저에서 리프레시 토큰을 저장하기에 가장 안전한 곳은 HTTP 전용 Secure 쿠키입니다. localStorage나 sessionStorage와 달리 이 쿠키는 JavaScript로 읽을 수 없으므로 XSS에 영향을 받지 않습니다. 토큰을 localStorage에 저장하지 마십시오. 스크립트 기반 공격에 취약하며 민감한 정보는 어떤 것도 보관해서는 안 됩니다.
- 2. 단일 페이지 애플리케이션(SPA): SPA에는 안전한 영구 저장소가 없습니다. 할 수 있는 최선은 세션이 유지되는 동안 토큰을 브라우저 메모리(JavaScript 변수)에 보관하는 것입니다. 페이지를 새로 고치면 토큰이 사라지므로 위험이 최소화됩니다. 직접 통제할 수 없는 저장소나 쿠키에 리프레시 토큰을 영구 저장하지 마십시오. 가능한 한 수명이 짧은 액세스 토큰과 자동 갱신(silent renewal)에 의존하십시오.
- 3. 모바일 앱: 리프레시 토큰은 기기의 보안 키체인(iOS Keychain/Android Keystore)에 저장하십시오. 이러한 플랫폼 보안 저장소는 다른 앱과 시스템 프로세스의 접근을 차단하도록 설계되어 있습니다. 기기가 침해되거나 루팅되더라도 토큰을 추출하기는 어렵습니다.
- 4. 데스크톱 애플리케이션: 영구 토큰을 저장할 때는 Windows Credential Locker와 같은 운영 체제 수준의 자격 증명 관리자를 사용하십시오. 악성코드가 가져갈 수 있는 일반 텍스트 파일이나 사용자 디렉터리에는 절대 기록하지 마십시오.
- 5. 엔터프라이즈 경계: 모든 경우에 디바이스 암호화, 사용자 잠금 화면, 원격 초기화(remote wipe) 기능과 같은 추가 통제를 적용하십시오. 매우 민감한 워크로드의 경우, 기기에 저장된 리프레시 토큰을 노출하거나 사용하기 전에 단계별 인증(step-up authentication)을 요구하십시오.
퍼블릭 클라이언트의 토큰 교체(Rotation)에 대한 특별 고려 사항
- 1. 퍼블릭 클라이언트는 비밀을 저장할 수 없습니다: SPA와 일부 모바일 앱과 같은 퍼블릭 클라이언트는 리프레시 토큰이나 클라이언트 비밀을 안전하게 숨길 수 없습니다. 저장된 모든 항목은 노출될 수 있다고 가정하십시오.
- 2. 수명이 짧은 액세스 토큰만 사용하십시오: 가능하면 리프레시 토큰을 최소화하거나 없애십시오. 장기간 보관하는 대신 수명이 짧은 액세스 토큰에 의존하고, 필요할 때 대화형 재인증을 요청하십시오.
- 3. 사용할 때마다 토큰을 교체하십시오: 리프레시 토큰을 반드시 사용해야 한다면 일회용 교체 패턴을 구현하십시오. 부여할 때마다 새 리프레시 토큰을 발급하고 이전 토큰은 폐기하십시오.
- 4. 추가 보안을 위해 PKCE와 함께 사용하십시오: OAuth 흐름에서 PKCE(Proof Key for Code Exchange)를 요구하십시오. 노출된 환경에서도 대부분의 가로채기 공격을 차단할 수 있습니다.
액세스 토큰 및 리프레시 토큰 관리 모범 사례
토큰 보안 규칙을 아는 것과 이를 일상적인 실무에 적용하는 것은 별개의 문제입니다. 민감한 Microsoft 365 데이터, Azure 워크로드 또는 Entra ID 시나리오를 다룰 때는 위험이 더 큽니다. 빈틈없는 보호와 잦은 로그인에 사용자가 불평하지 않는 사용자 경험을 함께 갖춰야 하기 때문입니다.
이 섹션에서는 대규모로 리프레시 토큰과 액세스 토큰을 관리할 때 반드시 해야 할 일과 피해야 할 일을 정리합니다. 솔직히 말해, Microsoft 클라우드에는 복잡한 조건부 액세스부터 모니터링과 거버넌스를 위한 Microsoft Defender 및 Microsoft Purview와의 긴밀한 통합까지 고유한 특성이 있습니다. 여기서 다루는 모범 사례는 토큰 발급, 보안 저장, 교체, 사용, 그리고 문제가 생겼을 때 신속하게 차단하는 방법까지 모든 단계를 포괄합니다.
지금 바로 적용할 수 있는 실행 가능한 핵심 내용을 곧 소개합니다. 앱이 "더 편리하면서도 더 안전하게"라는 두 가지 약속을 함께 지킬 수 있도록 돕겠습니다. 사용자 생산성을 해치지 않으면서 Microsoft 365 보안 태세를 강화하는 방법에 대해 더 알고 싶다면 사용자를 번거롭게 하지 않으면서 M365 보안을 강화하는 방법에 관한 이 더 넓은 가이드를 놓치지 마십시오. Defender, Purview, 그리고 Entra ID 환경의 조건부 액세스를 다룹니다.
아래에서는 Microsoft 기반 구현에서 액세스 토큰과 리프레시 토큰을 선택하고, 처리하고, 보호하기 위한 핵심 규칙을 요약합니다.
토큰 선택 및 처리에 대한 핵심 요약
- 액세스 토큰은 즉각적이고 단기적인 리소스 접근에만 사용하십시오. 끊김 없는 영구 세션이 꼭 필요하고 보안 통제가 갖추어진 경우에만 리프레시 토큰에 의존하십시오.
- 토큰을 안전하게 저장하십시오. 웹에서는 HTTP 전용 쿠키, 모바일에서는 키체인, 데스크톱 애플리케이션에서는 자격 증명 보관소와 같이 플랫폼이 강제하는 보안 저장소를 사용하십시오. 민감한 토큰을 일반 텍스트나 브라우저 localStorage에 저장하지 마십시오.
- 토큰 교체와 취소를 구현합니다. 갱신할 때마다 새로 고침 토큰이 교체되고 이전 토큰이 무효화되도록 하여 공격이 가능한 시간을 줄입니다.
- 세션 기간과 사용자 경험의 균형을 맞춥니다. 액세스 토큰의 수명을 너무 짧게 설정하면 사용자가 계속 로그인하라는 메시지를 보게 되므로 피해야 합니다. 반대로 너무 길게 설정하면 토큰이 유출되었을 때 불필요한 노출이 생길 수 있으니 주의해야 합니다.
- 토큰 사용을 모니터링하고, 관리하며, 감사합니다. Microsoft Defender 및 Purview 같은 도구와 연동하고, 위험한 로그인 상황에는 조건부 액세스를 적용합니다. 침해가 의심되거나 감지되면 즉시 액세스를 취소합니다.
결론 및 간단한 지식 점검
액세스 토큰과 새로 고침 토큰의 차이를 이해하는 것은 OAuth 2 프로세스에서 확인만 하고 넘어갈 일이 아니라, Entra ID와 같은 Microsoft ID 플랫폼에서 안전하고 매끄러운 경험을 구축하는 핵심입니다. 특히 여러 기기나 서비스에서 사용자 세션을 함께 관리할 때는 보안을 위한 짧은 토큰 수명과 편의를 위한 긴 갱신 주기 사이에서 적절한 균형을 찾는 것이 중요하며, 이는 실제로 많은 노하우가 필요한 일입니다.
간단한 지식 점검을 해 볼까요? 다음 질문을 스스로에게 던져 보십시오. 인터넷 연결이 불안정한 앱에서는 토큰 만료를 어떻게 처리하겠습니까? 새로 고침 토큰이 백엔드 마이크로서비스까지 전달되어야 할까요? 이 내용이 도움이 되었거나 새롭게 배운 것이 있다면 의견을 공유해 주십시오. 상위 댓글은 새로운 대화의 문을 열고 커뮤니티 전체에 활력을 줍니다. 마음에 드셨다면 계속 함께하며 보안 역량을 키워 나가시기 바랍니다!