Token

정은경·2020년 3월 3일
0

IT Terms

목록 보기
2/22

Access Token/Refresh Token/ID Token

  • Access Token
    HTTP Request의 authorization 헤더에 넣은 토큰
    일반적으로 JWT 형식을 많이 씀
    토큰은 분실의 위험이 있기때문에 보통 30분-1시간의 유효기간을 가짐
    어렵긴하지만 서버에서 토큰을 revoke하는 것이 불가능하진 않음
  • Refresh Token
    새로운 엑세스 토큰을 얻을 수 있는 장기토큰(long lived token)
    보통은 특정 리소스를 위한 엑세스 토큰을 얻음 (audience)
    리프레시 토큰을 안전하게 사용할 수 있는 클라이언트만이 리프레시 토큰을 사용해야 함
  • ID Token
    유저의 ID
    일반적으로 JWT 형식임
    ID 토큰은 절대 인증정보나 어떠한 리프레시 토큰 정보(audience information)를 가지고 있으면 안됨
    유저ID는 단순하게 사용자를 구분(identify)하기 위해 사용함

출처: https://winsmarts.com/access-tokens-and-refresh-tokens-and-id-tokens-5261bc26e8a2

Access Token

'Access Token' 위키피디아 자료 번역

https://en.wikipedia.org/wiki/Access_token

엑세스 토큰(Access Token)은 로그인 세션을 위한 보안자격(security credentials)을 가지고 있으며, 이는 사용자/사용자 그룹/사용자 권한/특별한 경우 응용프로그램을 식별한다.

개요
엑세스 토큰은 프로세스/쓰레드의 보안id(security identity)를 켑슐화한 오브젝트이다. 토큰은 보안 결정을 하거나 시스템 개체에 대한 임의로 손상되서는 안되는 정보(tamper-proof information)를 저장하는데 사용된다.
반면에 토큰은 오직 보안정보에 일반적으로 사용되며, 토큰이 생설될 때, 부가적인 자유 형식의 데이터를 첨부할 수 있다. 토큰은 특별한 권한 없이 복제될 수 있다. 예를들면, 출시한 애플리케이션의 접속제한을 하기 위하여 낮은 권한을 가진 토큰을 생성하는 것이다. 엑세스 토큰은 윈도우즈 운영체제에서 프로세스/쓰레드가 보장 정보를 가지고 있는 오브젝트들과 상호작용을 하는데 사용된다. 윈도우즈에 엑세스 토큰의 시스템 오븍제트 타입은 'Token'이다.

엑세스 토큰은 사용자가 시스템에 로그온할 때 로그온(logon) 서비스에 의해 생성되며, 사용자에 의해 제공받은 보안정보(credentials)는 인증 데이터베이스(authentication database)로부터 인증된다. 인증 데이터베이스는 로그온 세션을 위한 초기 토큰(initial token)을 구성하는 정보인,
"사용자 id, primary group id, 포함된 다른 group, 그외 정보'들을 포함하는 보안정보(credential information)를 가지고 있다.
토큰은 사용자 세션에서 생성된 초기 프로세스에 첨부된다. 그리고, 초기 프로세스에 의해 생성된 후속 프로세스 (subsequent process)에 의하여 상속된다.
엑세스 컨트롤(access control)이 되어있는 어떤 자원에 프로세스가 접근하려 할때마다, 윈도우즈는 타켓 오브젝트의 보안 디스크립터(security descriptor) 안의 데이터와 현재 유요한 엑세스 토큰을 비교하여 허용가능 여부를 확인한다.(reconcile) 엑세스 체크 평가(access check evaluation)의 결과는 어떠한 엑세스가 허용되었는지, 만약 그렇다면 어떤 작동(읽기,쓰기/수정, 등)을 호출하는 응용프로그램이 수행되도록 허용되었는지 확인하는 지표가 된다.

토큰의 타입(2)

  • Primary Token
    프라이머리 토큰은 프로세스랑만 관련이 있으며, 프로세스의 보안 서브젝트를 나타낸다.
    프라이머리 토큰의 생성과 프로세스와의 연관성은 특권 분리라는 이름으로 서로 다른 특권(privilege)을 요구하는 둘다 특권된 오퍼레인션이다. (권한분리(privilege separation): 인증 서비스를 토큰을 생성하고, 로그온 서비스는 사용자의 Operating System shell과 관련있다고 보는 것)
    프로세스는 초기에 부모 프로세스의 프라이머리 토큰을 상속받는다.

  • Impersonation Token (위장 토큰)
    위장토큰은 보안 오브젝트에 접근하기 위하여 서버 애플리케이션에게 임시적으로 클라이언트가 되도록 허용하는, Windows NT에서 구현된 보안 콘셉트이다.
    위장 토큰은 4가지 가능한 레벨이 있다:

    • anonymous (익명)
      서버에게 anonymous/unidentified user의 접근을 주는 것
    • identification (신원)
      서버가 클라이언트의 identity를 검사하도록 하는 것
      하지만, 그 identity를 오븍젝트에 접근하기 위해 사용하지는 않음
    • impersonation (위장)
      클라이언트를 대신하여 서버가 행동하는 것
    • delegation (위임)
      위장(impersonation)과 동일하나,
      서버가 보안을 통해 연결하는 원격시스템까지 확장한 것
      클라이언트는 서버로 접근가능한 impersonation의 최대레벨을 연결 파라미터로 선택할 수 있다.
      delegation/impersonation은 권환된 동작(privileged operations)이다.
      impersonation은 초기에는 아니지만, 권한없는 서버가 의지가 없는 권하있는 클라이언트로 위장함으로써 디폴트 레벨이 'identification'인 것을 제한하기 위하는 실패한 클라이언트 API 구현에서 역사적으로 carelessness이다.
      위장토큰은 쓰레드랑만 사용될 수 있으며, DCE RPC, DDE, named pipe와 같은 IPC 메커니즘에 의해 현재 쓰레드에 암시적으로 생성/사용된다.

토큰의 구성

토큰은 아래와 같은 다양한 필드들로 구성되어 있다:

  • identifier (식별자)
  • 로그온 세션과 연관된 식별자 (the identifier of the associated logon session)
    : 세션은 인증서비스에 의해서 관리되면, 사용자가 로그인할 때 제공하는 정보(credentials)들을 모음으로 된 인증 패키지로 채워져있음
    보안정보(credential)는 사용자가 재인증할 필요없이(single sign-on) 원격시스템에 접근하는데 사용되며, 커버로스와 같은 인증 권한(authentication authority)을 쉐어하는 시스템에서 제공됨
  • 사용자 식별자
    : 이 필드는 엄격하게 read-only만 가능한 매우 중요한 필드
  • 그룹 사용자의 식별자
    : 그룹 식별자는 삭제될 수 없으나, disable되거나 deny-only로 변경가능
    가장 중요한 그룹 중에 하나는 세션id로 지정됨
    휘발성 그룹은 display와 같은 휘발성 오브젝트가 세션에 관여하는 접근을 허용하는 로그온 세션을 나타냄
  • 그룹 식별자 제안하기 (optional 항목)
    : 이 부가적인 그룹의 모음은 부가적은 접근을 부여하지 않음
    보다 제한하는 형태로 사용함
    이러한 그룹에 허용이 되었을 때만 오브젝트에 접근하도록 허용됨
    제한 그룹(restricting group)은 삭제/disable 불가
    제한 그룹은 최근에 추가되었으며, 샌드박스(sandbox) 구현에 사용됨
  • 권한 (privileges)
    : 사용자가 가지고 있는 특별한 권한을 의미
    보안을 고려하지 않는 프로그램으로 부터의 피해를 예방하기 위해서, 대부분의 권한은 디폴트로 disable되어 있음.
    Windows XP Service Pack 2와 Windows Server 2003의 시작으로,
    SE_PRIVILEGE_REMOVED 속성을 가진 AdjustTokenPrivileges()을 호출함으로써
    토큰으로부터 권한은 영구적으로 제거될 수 있음
  • 디폴트 소유자
    : 토큰과 연관된 주체에 의해 생성된
    오브젝트에 대한 프라이머리 그룹과 ACL을 의미

1. Access Token 이란?

2. Access Token과 Refresh Token의 차이점은?

  • Oauth 2.0에서 Refresh Token 사용!

Reference

추가 살펴보기

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글