API Call Sequence

EMP 연동 방식 중 EMP가 제공하는 웹 로그인을 사용하는 경우에 대해, EMP API 호출 흐름을 설명합니다.

EMP API는 OAuth 2.0 - Authorization Code Grant Type 프로토콜에 기반하여 설계되었습니다. (단, 변수명/ required option 등은 표준과 다소 차이가 있을 수 있습니다.)

다음 용어 정의를 참고하십시오.

  • Authorization Server (OAuth 2.0): EMP Proxy 서버에 해당합니다. 이하 EMP로 표현합니다.
  • Client Application (OAuth 2.0): 여러분의 서비스에 해당합니다. 이하 서비스로 표현합니다.

① Request Authorization (Login)

API to be Used

GET {{EMPBaseUrl}}/authorize

Sequence

  1. 서비스는 GET {{EMPBaseUrl}}/authorize를 호출하여, EMP에 LG 계정 (혹은 LG 계정과 연동하는 3rd party 계정) 로그인을 요청합니다. 이때, 여러분의 서비스는 다음 값을 전달해야 합니다.
    • client_id: EMP가 서비스를 식별하기 위한 값으로, LG가 발급한 EMP App Key를 입력
    • redirect_uri: 서비스의 Callback URI (EMP가 로그인 프로세스를 완료한 후 사용자의 웹 브라우저(user-agent)를 서비스에 돌려줄 때 돌아갈 주소)
    • response_type: ​code로 입력 
    • sate크로스 사이트 요청 위조 (cross-site request forgery) 방어를 위한 값 
  2. EMP는 사용자의 웹브라우저(user-agent)를 로그인 페이지로 이동시키고 로그인을 진행합니다. 
  3. 로그인이 정상적으로 이루어지면 EMP는 인증 코드 (Authorization Code)를 서비스에 전달합니다. 이때, EMP는 사용자의 웹브라우저를 서비스가 제공한 redirect_uri로 보내며, 인증 코드는 redirect_uri에 query string으로 포함되어 서비스에 전달됩니다. 

② Request Access Token

API to be Used

POST {{EMPBaseUrl}}/token  (grant_type=authorization_code)

Sequence

  1. 서비스는 POST {{EMPBaseUrl}}/token을 호출하여, EMP에 액세스 토큰 발급을 요청합니다. 이때, 여러분의 서비스는 다음 값을 전달해야 합니다.
    • client_id: EMP가 서비스를 식별하기 위한 값으로, LG가 발급한 EMP App Key 
    • code:  EMP가 발급한 인증 코드 (Authorize 요청 후 EMP로부터 돌려받은 redirect_uri에 포함되어 있음)
    • redirect_uri: 서비스의 Callback URL (Authorize 요청 시 사용한 값과 동일한 값 입력)
    • grant_typeauthorization_code로 입력 
    • backend_url: EMP 로그인 후 전달받은 backend_url (EMP API v2를 사용하는 경우에만 입력)
  2. EMP는 서비스를 인증하고, Authorization Code를 검증하고, Redirect_URI를 확인합니다.
  3. 모든 것이 정상이라면 EMP는 API 호출 응답 결과로 서비스에 액세스 토큰 (access_token)을 발급합니다.

EMP_sequence_diagram