docs: Slack 사용자 403 team 매핑 불일치 해결
- U09BQSLB11R, U09DWLARFQQ 403 Forbidden 이슈 - slack_workspace.team_id와 user.team_id 불일치 원인 - database.py:363-369 JOIN 실패 분석 - 사용자 팀 변경으로 해결 (Robeing → Company-X) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
18d5309d2d
commit
6a61fba2b7
70
troubleshooting/251015_slack_user_403_team_mapping.md
Normal file
70
troubleshooting/251015_slack_user_403_team_mapping.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# Slack 사용자 403 Forbidden - team 매핑 불일치
|
||||||
|
|
||||||
|
**날짜**: 2025-10-15
|
||||||
|
**작성자**: Claude
|
||||||
|
**관련 파일**: `robeing-gateway/app/database.py:353-380`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 문제 상황
|
||||||
|
|
||||||
|
**증상**: Slack 사용자 U09BQSLB11R, U09DWLARFQQ 메시지 → 403 Forbidden
|
||||||
|
|
||||||
|
**로그**:
|
||||||
|
```
|
||||||
|
WARNING - No UUID found for Slack user U09BQSLB11R
|
||||||
|
ERROR - User not registered: team_id=T09C98KB933, slack_user_id=U09BQSLB11R
|
||||||
|
```
|
||||||
|
|
||||||
|
**빈도**: 12건 (10/14 11:53~15:38)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 원인
|
||||||
|
|
||||||
|
**database.py:363-369**: `slack_user_to_uuid()` JOIN 실패
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT u.id FROM "user" u
|
||||||
|
JOIN team t ON u.team_id = t.id
|
||||||
|
JOIN slack_workspace sw ON t.id = sw.team_id -- 실패 지점
|
||||||
|
WHERE sw.slack_team_id = :team_id
|
||||||
|
```
|
||||||
|
|
||||||
|
**DB 상태**:
|
||||||
|
- slack_workspace.team_id: `79441171...` (Company-X)
|
||||||
|
- 사용자 team_id: `38bdc27d...` (Robeing) ← 불일치
|
||||||
|
|
||||||
|
**결과**: JOIN 실패 → UUID 변환 실패 → 403
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 해결
|
||||||
|
|
||||||
|
### 사용자 팀 변경
|
||||||
|
|
||||||
|
```sql
|
||||||
|
UPDATE "user" SET team_id = '79441171-3951-4870-beb8-916d07fe8be5'
|
||||||
|
WHERE email IN ('hykim@sigong-ip.com', 'iskang@sigong-ip.com');
|
||||||
|
```
|
||||||
|
|
||||||
|
### 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8100/slack/events \
|
||||||
|
-d '{"team_id":"T09C98KB933","event":{"user":"U09BQSLB11R"}}'
|
||||||
|
# 200 OK, UUID 변환 성공
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 교훈
|
||||||
|
|
||||||
|
### Slack OAuth 설치 시
|
||||||
|
- user 테이블에 oauth_providers 추가만으로 불충분
|
||||||
|
- slack_workspace와 user.team_id 일치 검증 필요
|
||||||
|
- 팀 이동 시 Slack 매핑 재확인 필수
|
||||||
|
|
||||||
|
### 예방책
|
||||||
|
- Slack 설치 시 team_id 검증 로직 추가
|
||||||
|
- 관리 대시보드에서 팀-워크스페이스 매핑 시각화
|
||||||
Loading…
x
Reference in New Issue
Block a user