본문 바로가기

개발

[TIL] Namespace, Scope, Claim이란 (feat. oAuth)

반응형

# What I Learned


Namespace

  • 서비스의 custom claim이 다른 서비스나 예약된 claim과 충돌하는 것을 방지하기 위해 사용
  • 주료 도메인을 사용함
  • e.g. https://engster.co.kr

Scope

  • 어떤 클레임들에 접근을 요청하고 있는지를 명시할 때 사용

Claim

  • 유저정보나 메타정보에 관해 정보를 가지고 있는 Key/Value 짝(Pairs)
  • 특정한 entity특정한 property를 가지고 있음을 나타냄
  • 클레임들은 scope에 맵핑됨 (아래의 클레임들은 profile scope에 맵핑)
{
    "family_name": "Silverman",
    "given_name": "Micah",
    "locale": "en-US",
    "name": "Micah Silverman",
    "preferred_username": "micah.silverman@okta.com",
    "sub": "00u9vme99nxudvxZA0h7",
    "updated_at": 1490198843,
    "zoneinfo": "America/Los_Angeles"
}
  • 어떤 요청이 이루어지고 토큰이 발행됨. 그 토큰은 요청에 명시되어있는 scope에 기반한 특정한 정보(claim)를 포함하고 있음

Public Claims

  • 'name'이나 'email'과 같은 공개 정보

Private Claims

  • 우리의 어플리케이션에 국한된 정보 (user_id또는 permission_level)

ID Tokens

id_token은 JWT토큰인 경우가 많다.

→ 유저 식별 정보가 토큰에 인코딩되어 있음

exp나 signature 섹션을 통해 토큰이 간섭받지 않았음을 검증할 수 있음

# References


Create Namespaced Custom Claims

Identity, Claims, & Tokens - An OpenID Connect Primer, Part 1 of 3

Introduction to Claims | Resource Library | Curity Identity Server

반응형