미디어 인증

이 페이지에서는 Kollus VOD의 미디어 인증에 대해 설명합니다.

미디어 인증

Kollus VOD의 미디어 인증은 고객사가 가지고 있는 고유한 보안 키와 사용자 키를 이용하여 암호화된 JWT(JSON Web Token)를 생성합니다. 동영상 링크를 통해 동영상 재생을 요청하면 사용자에게 발급한 토큰을 전달받아 암호화된 데이터를 복호화한 다음, 현재 접속한 계정의 정보를 확인하여 동영상을 재생합니다.

미디어 인증 용어

  • 보안 키(security key): 미디어 토큰을 생성하기 위해 필요한 정보입니다. 보안 키는 서비스 계정마다 기본 설정되어 있습니다.

  • 사용자 키(user key): 회원으로 인증된 사용자에 대한 고유키로, Kollus VOD 서버에 요청하여 반환받은 문자열입니다. 각각의 세션에서는 새로운 사용자 키가 생성됩니다.

  • 미디어 콘텐츠 키(media content key): Kollus VOD의 전송 채널에 저장된 콘텐츠에 부여되는 고유한 키입니다.

참고

Kollus VOD 콘솔에서 서비스 계정 > 사용자 키 에서 보안 키와 사용자 키 확인이 가능합니다.

JWT란

JWT(Json Web Token)은 웹 서버에서 사용자 인증(authentication)과 권한 부여(authorization)를 위해 사용되는 기술 중 하나입니다. 토큰 기반 인증 방식을 사용하여 JWT 토큰(access token)을 생성하고 이를 HTTP 헤더에 포함시켜 서버가 클라이언트를 식별할 수 있도록 합니다.

JSON 웹 토큰은 다음 세 부분으로 구성됩니다.

  • 헤더(header): 어떤 알고리즘으로 암호화할 것인지, 토큰은 어떤 타입을 쓸 것인지 등의 토큰 관련 정보가 담겨 있습니다.

  • 페이로드(payload): 토큰에 담을 정보를 지니고 있습니다. 주로 클라이언트의 고유 ID 값 및 유효 기간 등이 포함되는 영역입니다. key-value 형식으로 이루어진 한 쌍의 정보를 클레임(claim)이라고도 합니다.

  • 서명(signature): 부호화시킨 header와 payload를 가지고 서버가 발급해 준 키로 암호화합니다. header와 payload는 단순히 인코딩된 값이기 때문에 제3자가 복호화 및 조작할 수 있지만, signature는 서버 측에서 관리하는 비밀키가 유출되지 않는 이상 복호화할 수 없습니다. 따라서 signature는 토큰의 위변조 여부를 확인하는 데 사용됩니다.

JWT 인증 과정

JSON 웹 토큰은 header, payload, signature 총 3가지 부분으로 이루어져 있습니다. Kollus VOD는 payload부분에 특정한 데이터를 삽입하여 토큰을 생성해줍니다.

암호화 알고리즘은 HMAC SHA256 (HS256)으로 하고, secret key는 보안 키, payload에는 payload에 맞춘 JSON string을 추가하여 JWT를 생성합니다.

생성한 JWT를 이용하여 비디오 게이트웨이에 요청하기

생성한 JWT와 사용자 키를 다음과 같은 형식의 URL로 생성하여 호출합니다.

https://v.kr.kollus.com/s?jwt=생성한 JWT&custom_key=사용자 키

인증 과정

  1. 클라이언트 로그인 요청이 들어오면, 서버는 검증 후 클라이언트 고유 ID 등의 정보를 payload에 담습니다.

  2. 암호화할 비밀키를 사용해 JWT을 발급합니다.

  3. 사용자는 전달받은 JWT를 서버에 전달합니다.

  4. 서버는 토큰의 signature를 비밀키로 복호화한 다음, 위변조 여부 및 유효 기간 등을 확인합니다.

  5. 유효한 토큰이라면 요청에 응답합니다.

JWT 예제

'catenoid' 라는 아이디를 가진 사용자가 미디어 컨텐츠 키 ‘vnCVPVyV’를 재생하는 경우

{
	"cuid": “catenoid”,
	"expt": 1703980800,
	"mc": [{
		"mckey": “vnCVPVyV“
	}]
}
  • cuid: 데이터베이스에 저장된 사용자의 ID

  • expt: 영상 재생 토큰 만료 시간

  • exp: JWT 토큰 만료 시간

  • mc: 미디어 콘텐츠 키(media_content_key)

참고

JWT에 대한 자세한 사항은 Developer Guide의 JWT 문서에서 확인할 수 있습니다.

Last updated