안녕하세요. 오랜만에 글을 올립니다.
개발하는 분들에게는 그리 생소하지 않을텐데, 저 같은 비 개발자 분들은 아마 API 이야기만 들어도 머리가 아프실 겁니다. ㅎㅎ
저는 처음에 API Token 만드는 것도 어렵더라구요… 그래서 Slack 의 Enterprise Grid 플랜에서 제공하는 몇가지 API 들을 사용하기 위한 Token 만드는 법을 한번 정리해보았습니다.
슬랙을 관리하는 업무를 하시는 분들께서는 한번 참조해보셔도 좋을 듯 합니다.
보통 Enterprise Grid 환경에서 관리 목적으로 사용하는 API 는 4가지 입니다.
- SCIM API (https://api.slack.com/admins/scim)
- Discovery API (https://api.slack.com/enterprise/discovery)
- Audit Logs API (https://api.slack.com/docs/audit-logs-api)
- Admin API (https://api.slack.com/enterprise/managing)
필요 Scope
위 4개의 API Token 을 만드는 방식 자체는 기본적으로 다 동일합니다만, 필요로 하는 Scope 에 차이가 있습니다.
API 종류 | 토큰 타입 | 필요로 하는 Scope | 비고 |
---|---|---|---|
SCIM API | Org | admin | 최소 조직 소유자 권한 필요 |
Discovery API | Org | discovery:read discovery:write | 최소 조직 소유자 권한 필요하며, 할당을 위해서는 feedback@slack.com 으로 요청필요함 (관리자가 직접 추가 불가) |
Audit Logs API | Org | auditlogs:read | 최소 조직 소유자 권한 필요 |
Admin API | Org | admin.<resource>:read admin.<resource>:write 예를 들어 앱 승인을 위한 Token 이 필요한 경우, admin.apps:read admin.apps:write | 최소 조직 관리자 권한 필요 범위는 앱에서 호출할 API 메소드에 따라 다릅니다. 각 메소드의 필수 범위는 메소드 문서 페이지 상단에 포함되어 있습니다. |
앱 만들기
자 그럼 Token 을 만들기 위해서 앱을 한번 만들어 보죠.
https://api.slack.com/apps 으로 이동해서 “Create New App” 을 선택합니다.
From Scratch 선택
앱 이름과 어떤 워크스페이스 또는 Org 에 설치할지 선택. 일단은 아무거나 선택하셔도 됩니다.
좌측의 메뉴에서 OAuth & Permissions 항목으로 이동하여 “Redirect URLs” –> Add New Redirect URL 선택 후 https://localhost 입력
Scope 항목으로 이동하여 “User Token Scopes” 추가 (위의 필요로 Scope 항목을 참조하시면 됩니다.) 지금 예는 SCIM API 니까 admin scope 를 추가해보겠습니다.
토큰 생성하기
다음은 조직 레벨에서 해당 앱을 활성화 시켜서 Token 을 생성합니다.
좌측의 메뉴에서 Manage Distribution 항목으로 이동 –> Share your App with Other Workspaces 으로 이동
여기서 Remove Hard Coded Information 항목을 한번 더 확인해줍니다. (토큰 같은것을 어디 소스코드에 하드코딩 하지 말라는 이야기 입니다.) 그뒤 Activate Public Distribution 을 선택합니다.
그러면 Sharable URL 항목을 확인할 수 있는데요, Copy 해서 새로운 웹 브라우저 창이나 탭을 열고 붙여넣기 해줍니다.
그럼 앱 설치화면이 나오는데요, 여기서 우측 상단에서 개별 워크스페이스가 아닌 Grid Org 를 선택해줍니다. (조직 소유자 권한이 있어야 합니다.), 이게 OAuth 과정입니다.
그럼 아까 입력했던 https://localhost 로 리다이렉트 되면서, 접근할 수 없다고 나올겁니다. 예상된 결과니까 당황하지 마세요. localhost 로 접근할 수 없으니 당연히 뜨겠죠? 근데 상단의 URL 에서 필요로 하는 정보가 있습니다.
code= 뒤에 나오는 부분부터 &state 전까지를 복사해둡니다. 정확하게는 code 값이 필요한거라서요.
그 다음 좌측메뉴 중 Basic Information 항목 –> App Credentials 항목으로 돌아갑니다. 여기서Client ID 와 Client Secret 를 복사해두세요.
그 다음 아래 주소에 따로 보관해둔 3가지 값을 넣어서 URL 를 완성하여 줍니다. (code / Client ID / Client Secret) enter_client_id 와 enter_client_secret 이라고 되어있는 부분을 위에서 복사한 값으로 채워주면 됩ㄴ디ㅏ.
https://slack.com/api/oauth.v2.access?code=enter_code_step_14&client_id=enter_client_id&client_secret=enter_client_secret
그 뒤 완성된 주소를 다시 복사 하여 새로운 웹브라우저의 주소창에 붙여넣습니다. 여기까지 잘 되었다면 다음과 같은 메세지가 나올 것입니다. (아래는 예시 입니다.)
{"ok":true,"access_token":" xoxp-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXX<br>XXXXXXXXXXXXXXXXXXXXXXXXXXXX ","scope":"admin,identify","user_id":"WXXXXXXXX","team_name":"Org Sandbox","team_id":"TXXXXXXXX","enterprise_id":"EXXXXXXXX"}
위에서 xoxp- 으로 시작하는 문자열이 바로 조직(Org) 의 API Token 입니다. 이걸 잘 보관해두세요.
Token 인증 테스트
다음 해당 토큰이 잘 동작하는지 테스트 해보겠습니다.
https://api.slack.com/methods/auth.test/test 으로 이동해서, 방금 생성된 토큰 값을 입력하고 Test Method 를 클릭 합니다.
그럼 다음과 같이 API Response 항목에 다음과 같이 나옵니다.
여기까지 하시면 API Token 생성 및 확인은 되신겁니다.
위에서 생성된 토큰은 잘 보관하시고, 필요로 하는 Scope 만 할당할 수 있도록 주의 하시기 바랍니다.
Token 폐기
만약 위에서 생성한 토큰을 폐기해야 할 경우 다음 링크에서 진행하시면 됩니다.
https://api.slack.com/methods/auth.revoke/test