Kakao i Connect Live::Kakao i Connect Live 2.0::개발자 가이드::인증 및 키 처리

페이지 이동경로

커넥트 라이브 인증 프로세스

Kakao i Connect Live(카카오 i 커넥트 라이브)의 모든 기능은 인증 과정을 통해 발급받은 토큰(Token)이 있어야 사용할 수 있으며, 카카오 i 커넥트 라이브에서는 이 토큰을 iCL 토큰이라 부릅니다. 카카오 i 커넥트 라이브 서비스를 사용하는 최종 사용자(End User)가 무료 사용자라 할지라도, 이 인증 과정을 통해 기능이 제한된 토큰을 발급받아야 해당 기능을 정상적으로 사용할 수 있습니다. iCL 토큰의 획득 과정은 다음과 같습니다.

카카오 i 커넥트 라이브 인증 및 API 호출 과정 그림카카오 i 커넥트 라이브 인증 및 API 호출 과정

안내
카카오 i 커넥트 라이브는 서비스의 구현 방식, 사용 목적 및 보안 요구 사항에 따라 SDK 기본 인증 방식인 카카오 i 커넥트 라이브 내부 인증과 서비스별 고유 인증 방식인 서비스 자체 인증을 모두 지원합니다.

기본 인증 방식: 커넥트 라이브 내부 인증

카카오 i 커넥트 라이브 SDK 2.0의 기본 인증 방식인 커넥트 라이브 인증을 사용하면 가장 간단하게 커넥트 라이브 서비스에서 제공하는 보안 기능을 사용할 수 있습니다. 인증을 위해 요구되는 별도의 서버가 없기 때문에 서버리스 아키텍쳐(Serverless Architecture)의 서비스를 개발하기 위한 최적의 선택입니다. 즉, 보안에서는 일부 제약이 있지만 보안을 위한 별도의 서버 작업과 개발을 하지 않아도 되므로 빠르게 기능을 검증하고 오픈하는 데 유리합니다. 커넥트 라이브 내부 인증 방식을 사용하기 위해서는 다음 두 가지 정보가 필요합니다.

커넥트 라이브 내부 인증 정보
구분 설명
서비스 ID(serviceId) 각 워크스페이스에 할당되어있는 공개 ID로, 서비스 구분에 활용되는 유일값
- 콘솔에서 발급
서비스 시크릿 API 호출 시 인증을 위한 필수값으로, 외부 유출에 유의 필요
- 콘솔에서 발급

커넥트 라이브 내부 인증은 서비스 ID, 서비스 시크릿 정보를 이용해 RFC 7616 HTTP Digest Access Authentication에 정의된 과정을 용도에 맞춰 수정한 인증 방식입니다. 인증 과정에서 서비스 시크릿은 클라이언트와 서버 사이에 직접 전달되지 않고, nonce (일종의 랜덤값)과 통합 후 해쉬(hash)로 처리해 그 결괏값을 비교하기 때문에 네트워크 구간에서 서비스 시크릿 정보가 유출될 우려가 없고 안전하게 보호됩니다.

기본 인증 방식 (커넥트 라이브 인증) 상세 절차 그림기본 인증 방식 (커넥트 라이브 인증) 상세 절차

주의
커넥트 라이브 내부 인증 방식의 경우, 네트워크 구간에서는 중요 정보가 안전하게 보호되지만, 앱 구간에서는 여전히 이 정보들이 유출될 우려가 있습니다. 정보들이 유출돼 부정한 앱에서 사용될 경우 해당 앱의 사용이 모두 고객의 총사용량에 더해지기 때문에 고객에게 불이익이 발생할 수 있습니다. 따라서 이 정보들은 앱 구간에서 반드시 안전하게 보호되어야 하며, 서비스 시크릿은 보안에 각별히 유의해야 합니다. 특히 데스크톱 웹 앱의 경우 공용 PC를 사용하는 등의 이유로 중요 정보의 유출 우려가 상대적으로 높기 때문에 앱 종료 후 중요 정보가 남아있지 않도록 주의해야 합니다.

서비스 인증 정보 발급하기

콘솔에서 새로운 서비스를 생성하면 서비스 ID서비스 시크릿 정보가 자동 발급됩니다. 고객사는 이렇게 발급받은 키 쌍을 사용하여 커넥트 라이브의 기능을 활용하여 서비스를 개발할 수 있습니다.

안내
카카오 i 커넥트 라이브 콘솔에서는 사용자 인증 정보 관리, 워크스페이스 관리, 멤버 초대 등의 기능을 제공합니다. 콘솔 사용과 관련한 자세한 설명은 부록. 카카오 i 커넥트 라이브 콘솔 문서를 참고하시기 바랍니다.
  1. 카카오 i 커넥트 라이브 콘솔에서 이메일과 비밀번호를 입력한 후, [로그인] 버튼을 클릭해 접속합니다.

  2. 좌측 [환경설정] 아이콘을 클릭해 워크스페이스 관리로 이동한 후, 서비스에서 [서비스 생성] 버튼을 클릭합니다.

    워크스페이스 관리 그림워크스페이스 관리

  3. 서비스 생성 팝업창에서 서비스 정보를 입력한 후 [생성] 버튼을 클릭해 서비스를 생성합니다.

    신규 서비스 생성 그림신규 서비스 생성

    서비스 생성 정보
    항목 설명
    서비스 이름 서비스 이름 작성
    - 영문, 한글, 숫자만 입력 가능
    설명 서비스 설명 작성(최대 31자)
    서비스 유형 서비스 유형 선택
    Video: 영상 기반 서비스
    ex) 화상회의
    Audio: 음성 기반 서비스
    ex) 음성통화
  4. 서비스 목록에서 생성된 서비스를 클릭하면 서비스 ID서비스 시크릿이 포함된 인증 정보를 확인할 수 있습니다.

    서비스 인증 정보 그림서비스 인증 정보

주의
서비스 시크릿과 어드민 시크릿은 외부에 유출되지 않도록 주의하시기 바랍니다.

인증 수행하기

콘솔에서 서비스 ID와 서비스 시크릿을 발급받은 후, signIn()_커넥트 라이브 내부 인증 메서드를 통해 인증을 수행합니다. 메서드에 대한 상세는 플랫폼별 문서를 참고하시기 바랍니다.

커넥트 라이브 내부 인증 메서드

고급 인증 방식: 서비스 자체 인증

커넥트 라이브 내부 인증 방식을 적용하면 가장 간단하게 커넥트 라이브 서비스를 활용할 수 있지만, 이 경우 모든 최종 사용자가 같은 아이디와 비밀번호를 공유해 서비스를 사용하는 것과 같이 동작합니다. 따라서 개별 사용자에 대한 세부 정책을 적용할 수 없고, 키 쌍이 공유되는 점은 높은 보안 요구사항을 충족하기 어려울 수 있습니다. 카카오 i 커넥트 라이브는 이러한 경우에 적용할 수 있는 고급 인증 방식인 서비스 자체 인증을 지원합니다. 서비스 자체 인증은 별도 앱 서버를 직접 구현해야 하는 부담이 있지만, 이를 통해 개별 사용자에 대한 권한을 직접 제어할 수 있고, 토큰의 구성에 따라 다양한 세부 정책을 적용할 수 있으며 고정된 값이 노출되는 구간이 없기 때문에 보안 측면에서도 장점이 있습니다.
서비스 자체 인증 방식은 개별 최종 사용자에게 신원 확인용 값(일반적으로 토큰)을 부여하고, 이를 확인해 권한을 부여하는 역할을 고객이 직접 구현하게 됩니다. 커넥트 라이브는 클라이언트 앱에서 받은 토큰을 다시 고객의 토큰 확인 API로 보내 해당 최종 사용자에게 커넥트 라이브 사용 권한을 부여할 것인지 확인하게 됩니다. 서비스 자체 인증을 사용하기 위해서는 다음 두 가지 정보가 필요합니다.

서비스 자체 인증 사용 시 필요한 정보
구분 설명
서비스 ID(serviceId) 각 워크스페이스에 할당되어있는 공개 ID로, 서비스 구분에 활용되는 유일값
- 콘솔에서 발급
토큰 확인 서버 URL 고객사가 자체 발급한 최종 사용자 신원 확인용 값을 확인하기 위한 API URL

커넥트 라이브는 사용자 인증 과정에서 고객사가 자체 발급한 토큰을 클라이언트 앱에서 전달받으면 값의 형태 및 구성 등에 관여치 않고 이를 그대로 고객사가 지정한 토큰 확인용 API에 전달해 유효한지 확인하여 사용자를 확인합니다. 이 과정에서 API로부터 성공 응답을 수신하면 정상적으로 인증이 완료된 것으로 취급해 iCL 토큰을 발급하고, 이후 커넥트 라이브 서비스 기능을 사용할 수 있도록 합니다.
커넥트 라이브는 고객이 발급한 토큰에 별도 제한을 하지 않지만 토큰 확인용 API를 호출할 때 이 값을 RFC 6750 The OAuth 2.0 Authorization Framework: Bearer Token Usage에 정의된 베어러 타입(Bearer type)의 액세스 토큰(Access Token)으로 취급해 Authorization 헤더에 기입하기 때문에 이 기준을 충족해야 합니다.

다음 도표에서는 편의상 토큰을 발급하고 확인하는 기능을 앱 서버(App Server)에 통합 구현한 것으로 가정하여 인증 과정을 설명합니다.

고급 인증 방식 (서비스 자체 인증) 상세 절차 그림고급 인증 방식 (서비스 자체 인증) 상세 절차

서비스 인증 정보 발급하기

콘솔에서 새로운 서비스를 생성하면 서비스 ID서비스 시크릿 정보가 자동 발급됩니다. 고객사는 이렇게 발급받은 키 쌍을 사용하여 커넥트 라이브의 기능을 활용하여 서비스를 개발할 수 있습니다.

안내
카카오 i 커넥트 라이브 콘솔에서는 사용자 인증 정보 관리, 워크스페이스 관리, 멤버 초대 등의 기능을 제공합니다. 콘솔 사용과 관련한 자세한 설명은 부록. 카카오 i 커넥트 라이브 콘솔 문서를 참고하시기 바랍니다.
  1. 카카오 i 커넥트 라이브 콘솔에서 이메일과 비밀번호를 입력한 후, [로그인] 버튼을 클릭해 접속합니다.

  2. 좌측 [환경설정] 아이콘을 클릭해 워크스페이스 관리로 이동한 후, 서비스에서 [서비스 생성] 버튼을 클릭합니다.

    워크스페이스 관리 그림워크스페이스 관리

  3. 서비스 생성 팝업창에서 서비스 정보를 입력한 후 [생성] 버튼을 클릭해 서비스를 생성합니다.

    신규 서비스 생성 그림신규 서비스 생성

    서비스 생성 정보
    항목 설명
    서비스 이름 서비스 이름 작성
    - 영문, 한글, 숫자만 입력 가능
    설명 서비스 설명 작성(최대 31자)
    서비스 유형 서비스 유형 선택
    Video: 영상 기반 서비스
    ex) 화상회의
    Audio: 음성 기반 서비스
    ex) 음성통화
  4. 서비스 목록에서 생성된 서비스를 클릭하면 서비스 ID 정보를 확인할 수 있습니다.

    • 서비스 자체 인증 방식에서는 서비스 시크릿 정보는 사용하지 않습니다.

    서비스 인증 정보 그림서비스 인증 정보

서비스 자체 인증 적용하기

콘솔에서 인증 방식을 커넥트 라이브 내부 인증 방식에서 서비스 자체 인증으로 변경합니다.

주의
인증 방식을 커넥트라이브 내부 인증 방식에서 서비스 자체 인증 방식으로 변경 시, 기존에 생성한 서비스 시크릿 정보는 삭제되며 다시 복구할 수 없습니다.
  1. 콘솔의 [환경설정] 아이콘 > 워크스페이스 관리 화면의 서비스에서 인증 방법을 변경할 서비스를 클릭합니다.

  2. 서비스 상세 화면의 인증에서 서비스 자체 인증으로 인증 방법을 선택 후 [저장] 버튼을 클릭합니다.

    안내
    인증 방법을 변경할 경우 기존 방법으로 인증된 서비스 사용이 불가할 수 있습니다.

    인증 방식 변경 그림인증 방법(서비스 자체 인증) 변경

  3. 토큰 확인 서버 URL에 고객 토큰을 확인할 API 엔드포인트를 입력합니다.

    토큰 확인 서버 URL 그림토큰 확인 서버 URL 입력

  4. 토큰 확인 가이드를 참고해 커넥트 라이브 시스템이 해당 API 엔드포인트로 정상적으로 접속하는지 확인할 수 있습니다.

토큰 확인 API 구현하기

서비스 토큰이 입력되면 커넥트 라이브는 해당 서비스에 지정된 토큰 확인용 API로 HTTP GET 요청을 보냅니다. 이 요청의 메시지 구성은 다음과 같습니다.

코드예제서비스 토큰 확인 요청 메시지 전문

    GET {토큰 확인 서버 Path} HTTP/1.1
    Host: {토큰 확인 서버 Host}
    Authorization: Bearer {서비스 토큰}

토큰 확인 서버는 이 요청을 받았을 때 Authorization 헤더에 포함된 서비스 토큰의 유효성 및 내용을 검사해 커넥트 라이브 사용 권한을 주려는 경우 HTTP 200 OK를, 그 외의 경우 다른 응답을 보내면 됩니다. 커넥트 라이브는 HTTP 200 OK 응답을 제외하고 모든 응답 코드를 권한 거절 응답으로 취급합니다.

코드예제권한 부여 응답(성공)

    HTTP/1.1 200 OK
    ...

코드예제권한 거절 응답(성공 외)

    HTTP/1.1 403 Forbidden
    ...

인증 수행하기

위 작업을 완료하면, signIn()_서비스 자체 인증 메서드를 통해 인증을 수행합니다. 메서드에 대한 상세는 플랫폼별 문서를 참고하시기 바랍니다.

서비스 자체 인증 메서드

부록. 앱 서버 샘플 확인하기

Github 프로젝트에서 JWT(JSON Web Token) 사용을 가정한 주요 언어별 앱 서버 샘플을 확인할 수 있습니다.

구분 링크
주요 언어별 앱 서버 샘플(Github) https://github.com/kakaoi-clive/icl2-external-server-sample
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.