Developer Console에서 클라이언트 앱이 등록되면 앱의 OAuth 범위(scope)를 설정해야 한다. scope는 클라이언트 앱이 사용하는 리소스에 대한 권한 세트를 의미하며, 클라이언트 앱에서 설정한 scope에 따라 호출할 수 있는 API 목록이 결정된다. scope는 앱 사용 시 발급되는 액세스 토큰의 접근 권한에도 반영된다.
API를 호출하려면 하나 이상의 scope가 필요하며, 이는 각 API 문서에 기술되어 있다.
OAuth scope 명칭은 기본적으로 {리소스명}.오퍼레이션 형태로 제공된다. 리소스명은 하위 리소스가 있으면 형태에 따라 점(.)으로 구분하여 나열할 수 있다. 아래 표기에 의하면 group 리소스는 folder라는 리소스가 하위에 있는 계층 구조가 된다.
하위 리소스는 상위 리소스의 권한을 이어받는다.
오퍼레이션은 해당하는 리소스를 사용할 수 있는 권한 범위를 나타낸다. 예를 들어, user 리소스는 다음과 같이 두 가지 오퍼레이션으로 나눌 수 있다.
user는 user 리소스에 대해 읽기 또는 읽기/쓰기를 할 수 있는 API를 실행할 수 있다. 반면, user.read는 user 리소스를 읽는 API는 실행할 수 있지만 새로운 user를 추가하거나 기존 user를 삭제하는 API는 실행할 수 없다. 이와 같이 클라이언트 앱이 리소스에 접근하는 권한의 범위를 설정할 수 있다.
참고
메시지 Bot을 통해 구성원에게 메시지를 전달하려면 user가 아닌 bot scope를 추가해야 한다.
Developer Console에서 각 클라이언트 앱에서 사용할 scope를 하나 이상 선택할 수 있다. 설정된 scope는 해당 클라이언트 앱을 통한 인증 시 로그인 화면에서 사용자들에게 표시되며, 사용하는 요금제에 따라 일부 scope는 표시되지 않을 수 있다.
메서드로 API의 scope를 유추할 수도 있다. 예를 들어, user와 관련된 scope는 메서드별로 다음과 같다.
user는 user.read에 해당하는 모든 API가 이미 속해 있으므로 user와 user.read scope를 동시에 추가할 필요는 없다. 하지만 user만 사용할 경우 의도하지 않은 조작으로 사용자 정보가 변경될 수 있으니, 단순히 사용자 정보를 조회할 목적이라면 user.read만을 사용해야 한다.
참고
일부 API는 위에 표시한 메서드와 scope가 다를 수 있으니, 반드시 사용하려는 API 문서를 참고해 정확한 scope를 확인한다.
Developer Console에서 제공하는 scope과 이용 가능한 플랜은 다음과 같다. 각 scope에 따라 클라이언트 앱이 접근할 수 있는 범위를 확인할 수 있다.
| Scope | Resource | Operation | Free plan | Lite plan | Standard,Standard Plus plan |
|---|---|---|---|---|---|
| openid | - | OIDC (OpenID Connect) 인증을 하기 위해 필요한 Scope. ID Token을 발급받기 위해 필수로 선택해야한다. | ○ | ○ | ○ |
| - | ID Token에 구성원의 email 정보가 포함된다. | ○ | ○ | ○ | |
| profile | - | ID Token에 구성원의 profile 정보가 포함된다. | ○ | ○ | ○ |
| audit | 감사/로그 | Read/Write | ○ | ||
| audit.read | 감사/로그 | Read | ○ | ○ | |
| monitoring.read | 모니터링 | Read | ○ | ○ | |
| board | 게시판 | Read/Write | ○ | ○ | ○ |
| board.read | 게시판 | Read | ○ | ○ | ○ |
| bot.message | 메시지 Bot | Read | ○ | ○ | ○ |
| bot | 메시지 Bot | Read/Write | ○ | ○ | ○ |
| bot.read | 메시지 Bot | Read | ○ | ○ | ○ |
| calendar | 캘린더 | Read/Write | ○ | ○ | ○ |
| calendar.read | 캘린더 | Read | ○ | ○ | ○ |
| contact | 주소록 | Read/Write | ○ | ○ | ○ |
| contact.read | 주소록 | Read | ○ | ○ | ○ |
| file | 내 드라이브 공용 드라이브 조직/그룹 폴더 | Read/Write | ○ | ||
| file.read | 내 드라이브 공용 드라이브 조직/그룹 폴더 | Read | ○ | ||
| form | 설문 | Read/Write | ○ | ○ | ○ |
| form.read | 설문 | Read | ○ | ○ | ○ |
| group | 그룹 | Read/Write | ○ | ○ | ○ |
| group.read | 그룹 | Read | ○ | ○ | ○ |
| group.note | 조직/그룹 노트 | Read/Write | ○ | ○ | ○ |
| group.note.read | 조직/그룹 노트 | Read | ○ | ○ | ○ |
| group.folder | 조직/그룹 폴더 | Read/Write | ○ | ○ | ○ |
| group.folder.read | 조직/그룹 폴더 | Read | ○ | ○ | ○ |
| 메일 | Read/Write | ○ | |||
| mail.read | 메일 | Read | ○ | ||
| orgunit | 조직 | Read/Write | ○ | ○ | ○ |
| orgunit.read | 조직 | Read | ○ | ○ | ○ |
| directory | 조직 구성원 직급 직책 고용형태 그룹 | Read/Write | ○ | ○ | ○ |
| directory.read | 조직 구성원 직급 직책 고용형태 그룹 | Read | ○ | ○ | ○ |
| security.external-browser | 외부 브라우저 사용 | Read/Write | ○ | ○ | ○ |
| security.external-browser.read | 외부 브라우저 사용 | Read | ○ | ○ | ○ |
| task | 할 일 | Read/Write | ○ | ○ | ○ |
| task.read | 할 일 | Read | ○ | ○ | ○ |
| user | 구성원 | Read/Write | ○ | ○ | ○ |
| user.read | 구성원 | Read | ○ | ○ | ○ |
| user.email.read | 구성원(email) | Read | ○ | ○ | ○ |
| user.profile.read | 구성원(profile) | Read | ○ | ○ | ○ |
| Scope | Resource | Operation | Lite, Standard,Standard Plus plan |
|---|---|---|---|
| openid | - | OIDC (OpenID Connect) 인증을 하기 위해 필요한 Scope. ID Token을 발급받기 위해 필수로 선택해야한다. | ○ |
| - | ID Token에 구성원의 email 정보가 포함된다. | ○ | |
| profile | - | ID Token에 구성원의 profile 정보가 포함된다. | ○ |
| audit | 감사/로그 | Read/Write | ○ |
| audit.read | 감사/로그 | Read | ○ |
| file | 내 드라이브 공용 드라이브 조직/그룹 폴더 | Read/Write | ○ |
| file.read | 내 드라이브 공용 드라이브 조직/그룹 폴더 | Read | ○ |
| group | 그룹 | Read/Write | ○ |
| group.read | 그룹 | Read | ○ |
| orgunit | 조직 | Read/Write | ○ |
| orgunit.read | 조직 | Read | ○ |
| directory | 조직 구성원 직급 직책 고용형태 그룹 | Read/Write | ○ |
| directory.read | 조직 구성원 직급 직책 고용형태 그룹 | Read | ○ |
| security.external-browser | 외부 브라우저 사용 | Read/Write | ○ |
| security.external-browser.read | 외부 브라우저 사용 | Read | ○ |
| user | 구성원 | Read/Write | ○ |
| user.read | 구성원 | Read | ○ |
| user.email.read | 구성원(email) | Read | ○ |
| user.profile.read | 구성원(profile) | Read | ○ |
| Scope | Resource | Operation | 결재 | 근태 | 급여 | 재무 |
|---|---|---|---|---|---|---|
| openid | - | OIDC (OpenID Connect) 인증을 하기 위해 필요한 Scope. ID Token을 발급받기 위해 필수로 선택해야한다. | ○ | ○ | ○ | ○ |
| - | ID Token에 구성원의 email 정보가 포함된다. | ○ | ○ | ○ | ○ | |
| profile | - | ID Token에 구성원의 profile 정보가 포함된다. | ○ | ○ | ○ | ○ |
| businessSupport.approval | 결재 | Read/Write | ○ | |||
| businessSupport.approval.read | 결재 | Read | ○ | |||
| businessSupport.attendance | 근태 | Read/Write | ○ | |||
| businessSupport.attendance.read | 근태 | Read | ○ | |||
| businessSupport.humanResource | 인사 | Read/Write | ○ | |||
| businessSupport.humanResource.read | 인사 | Read | ○ | |||
| businessSupport.businessPlace | 사업장 | Read/Write | ○ | |||
| businessSupport.businessPlace.read | 사업장 | Read | ○ | |||
| audit | 감사/로그 | Read/Write | ○ | ○ | ○ | ○ |
| audit.read | 감사/로그 | Read | ○ | ○ | ○ | ○ |
| board | 게시판 | Read/Write | ○ | ○ | ○ | ○ |
| board.read | 게시판 | Read | ○ | ○ | ○ | ○ |
| contact | 주소록 | Read/Write | ○ | ○ | ○ | ○ |
| contact.read | 주소록 | Read | ○ | ○ | ○ | ○ |
| group | 그룹 | Read/Write | ○ | ○ | ○ | ○ |
| group.read | 그룹 | Read | ○ | ○ | ○ | ○ |
| orgunit | 조직 | Read/Write | ○ | ○ | ○ | ○ |
| orgunit.read | 조직 | Read | ○ | ○ | ○ | ○ |
| directory | 조직 구성원 직급 직책 고용형태 그룹 | Read/Write | ○ | ○ | ○ | ○ |
| directory.read | 조직 구성원 직급 직책 고용형태 그룹 | Read | ○ | ○ | ○ | ○ |
| security.external-browser | 외부 브라우저 사용 | Read/Write | ○ | ○ | ○ | ○ |
| security.external-browser.read | 외부 브라우저 사용 | Read | ○ | ○ | ○ | ○ |
| user | 구성원 | Read/Write | ○ | ○ | ○ | ○ |
| user.read | 구성원 | Read | ○ | ○ | ○ | ○ |
| user.email.read | 구성원(email) | Read | ○ | ○ | ○ | ○ |
| user.profile.read | 구성원(profile) | Read | ○ | ○ | ○ | ○ |
| Scope | Resource | Operation | Standard |
|---|---|---|---|
| openid | - | OIDC (OpenID Connect) 인증을 하기 위해 필요한 Scope. ID Token을 발급받기 위해 필수로 선택해야한다. | ○ |
| - | ID Token에 구성원의 email 정보가 포함된다. | ○ | |
| profile | - | ID Token에 구성원의 profile 정보가 포함된다. | ○ |
| audit | 감사/로그 | Read/Write | ○ |
| audit.read | 감사/로그 | Read | ○ |
| group | 그룹 | Read/Write | ○ |
| group.read | 그룹 | Read | ○ |
| orgunit | 조직 | Read/Write | ○ |
| orgunit.read | 조직 | Read | ○ |
| directory | 조직 구성원 직급 직책 고용형태 그룹 | Read/Write | ○ |
| directory.read | 조직 구성원 직급 직책 고용형태 그룹 | Read | ○ |
| security.external-browser | 외부 브라우저 사용 | Read/Write | ○ |
| security.external-browser.read | 외부 브라우저 사용 | Read | ○ |
| user | 구성원 | Read/Write | ○ |
| user.read | 구성원 | Read | ○ |
| user.email.read | 구성원(email) | Read | ○ |
| user.profile.read | 구성원(profile) | Read | ○ |