OAuth 2.0 기반 SSO

OAuth 2.0 기반의 SSO 동작 방식과 구현 방법을 설명한다.

그림 1 LINE WORKS와 고객사 간 OAuth 2.0 기반 SSO
그림 1 NAVER WORKS와 고객사 간 OAuth 2.0 기반 SSO

  1. NAVER WORKS 서비스 사용
    사용자는 NAVER WORKS 서비스를 사용하기 위해 웹 브라우저에서 URL로 접근하거나, NAVER WORKS 앱 또는 드라이브 탐색기를 실행한다.

  2. Authorization Code 발급 요청
    NAVER WORKS에 로그인되어 있지 않은 경우, 고객사의 인증 시스템으로 Authorization Code 발급을 요청한다.

  3. (고객사에 로그인되어 있지 않으면) 로그인 페이지 실행
    고객사 시스템에 로그인되어 있지 않으면, 사용자에게 자체 제작한 로그인 페이지를 제공한다.

  4. 아이디/비밀번호 입력
    사용자는 고객사 로그인 정책에 따라 아이디/비밀번호를 입력한다.

  5. 고객사 인증 처리 후, Authorization Code 발급
    아이디/비밀번호로 고객사 시스템에 인증 처리를 하고, Authorization Code를 발급한다.
    만약, 고객사 시스템에 이미 로그인되어 있다면, 3~4번 단계를 생략하고, 바로 Authorization Code를 발급한다.
    Authorization Code는 Access Token을 반환하는 데 사용하고 소멸되는 일회성 코드여야 한다.

  6. Authorization Code 반환 (redirect)
    최초 Authorization Code 발급 요청 시 받은 Request 중 NAVER WORKS 인증 시스템의 redirect_uri로 Authorization Code를 redirect한다.

  7. Authorization Code로 Access Token 요청
    Authorization Code를 파라미터로 고객사 인증 시스템에 Access Token을 요청한다.

  8. Access Token 반환
    고객사 인증 시스템은 Authorization Code를 검증한 후, Access Token을 발급하여 반환한다.

  9. Access Token으로 사용자 정보 요청
    Access Token을 파라미터로 고객사 인증 시스템에 사용자 정보를 요청한다.

  10. 사용자 정보 반환
    고객사 인증 시스템은 Access Token을 검증한 후, 사용자의 ExternalKey를 반환한다.

  11. NAVER WORKS 인증 토큰 발급
    NAVER WORKS 인증 시스템은 사용자 정보를 기반으로 NAVER WORKS용 인증 토큰을 발급한다.

OAuth 2.0 기반 API 인증 {#api-auth}

NAVER WORKS의 IMAP/CalDAV 인증 방법은 부분적인 OAuth 2.0 기반으로 동작한다.

ALT 그림 2 OAuth 2.0 기반 API 인증

  1. IMAP에서 아이디/비밀번호 설정 후 실행
    사용자는 Outlook, Native앱 등에서 NAVER WORKS 사용을 위한 아이디/비밀번호를 설정한 후 실행한다.

  2. Authorization Code 발급 요청 (API)
    NAVER WORKS에서는 사용자가 설정한 아이디/비밀번호를 고객사 인증 시스템으로 전달하고 인증 확인과 Authorization Code 발급을 요청한다. 네트워크 구간은 반드시 SSL이 적용되어 있어야 한다.

  3. 아이디/비밀번호로 인증 처리 후 Authorization Code 발급
    고객사 인증 시스템은 전달받은 아이디/비밀번호로 고객사 인증을 확인하고, 성공 시 Authorization Code를 발급한다. 인증 실패 시엔 오류 코드를 반환한다.

  4. Authorization Code 반환
    2번 API 요청에 대한 응답으로 Authorization Code를 반환한다. 인증 실패 시엔 오류 코드를 반환한다.

  5. Authorization Code로 Access Token 요청
    Authorization Code를 파라미터로 고객사 인증 시스템에 Access Token을 요청한다.

  6. Access Token 반환
    고객사 인증 시스템은 Authorization Code를 검증한 후, Access Token을 발급하여 반환한다.

  7. Access Token으로 사용자 정보 요청
    Access Token을 파라미터로 고객사 인증 시스템에 사용자 정보를 요청한다.

  8. 사용자 정보 반환
    고객사 인증 시스템은 Access Token을 검증한 후, 사용자의 ExternalKey를 반환한다.

  9. NAVER WORKS 인증 토큰 발급
    NAVER WORKS는 사용자 정보를 기반으로 NAVER WORKS용 인증 토큰을 발급한다.