Application 인증과 Delegated 인증은 Microsoft Graph API에서 사용되는 두 가지 주요 인증 방식으로, 각각의 목적과 동작 방식에 차이가 있습니다. 본 포스팅은 두 인증 방식을 이해하는데 도움이 되고자 작성되었습니다.

1. Application 인증 (애플리케이션 인증)
- 정의: 애플리케이션에게 권한을 주고 애플리케이션 자체의 자격 증명을 사용해 Microsoft Graph API에 접근하는 방식입니다. 사용자의 개입 없이 애플리케이션이 독립적으로 동작합니다.
- 사용 사례: 백그라운드 프로세스, 자동화된 워크플로우, 서버 간 통신 등에서 사용됩니다.
- 보고서 생성 자동화: 특정 SharePoint 사이트의 팀 목록을 가져와 주간 보고서를 자동으로 생성하는 백그라운드 서비스. 사용자가 로그인하지 않아도 정해진 시간에 작동.
- 데이터 동기화 설루션: OneDrive에 있는 폴더의 파일 목록을 주기적으로 스캔하여 중앙 서버에 동기화하는 시스템.
- 사용자 관리 자동화: 신입 사원 입사 시 HR 시스템에서 정보를 가져와 Azure AD에 사용자 계정을 자동으로 생성하고, 필요한 그룹에 할당하는 배치 작업.
- 보안 감시 시스템: 모든 사용자의 로그인 이력을 주기적으로 확인하고, 비정상적인 로그인 시도를 탐지하여 관리자에게 알림을 보내는 서비스.
- 동작 방식:
- 애플리케이션은 클라이언트 ID와 클라이언트 시크릿(또는 인증서)을 사용해 Microsoft Entra ID에서 토큰을 획득합니다.
- 애플리케이션 권한(Application permissions)을 통해 API 호출을 수행합니다.
- 사용자 로그인 없이 동작하므로, 애플리케이션이 자체적으로 모든 작업을 처리합니다.
- 장점:
- 사용자 개입 없이 24/7 자동화가 가능합니다.
- 대규모 작업(예: 모든 사용자 데이터 조회)에 적합.
- 단점:
- 권한에 대한 보안 관리가 중요합니다.
- 애플리케이션에 권한을 부여하면 전역 관리자의 동의(Admin Consent)가 있어야 합니다.
- 특정 사용자 계정의 콘텍스트에서 동작하지 않음.
2. Delegated 인증 (위임된 인증)
- 정의: 사용자의 자격 증명을 기반으로 애플리케이션이 사용자를 대신해 Microsoft Graph API에 접근하는 방식입니다. 사용자가 로그인하여 권한을 위임합니다.
- 사용 사례: 사용자와 상호작용하는 애플리케이션에서 사용됩니다.
- 일정 관리 앱: 사용자가 로그인하면 앱이 해당 사용자의 캘린더 정보를 가져와 일정을 시각화하고, 새로운 회의를 생성하거나 다른 사용자를 초대하는 기능.
-
- 사내 협업 포털: 로그인한 사용자의 이메일 주소를 기반으로 팀원 목록을 불러오고, 메일을 보내거나 파일을 공유하는 웹 애플리케이션.
- 개인 파일 관리 도구: 사용자가 자신의 OneDrive에 있는 파일 목록을 열람하고, 파일을 업로드하거나 삭제하는 웹 또는 모바일 앱.
- 프로젝트 관리 대시보드: 로그인한 사용자의 To Do 목록을 가져와 진행 중인 작업을 표시하고, 완료된 작업을 마킹하는 기능.
- 동작 방식:
-
- 사용자가 애플리케이션에 로그인하여 자신의 자격 증명을 제공합니다.
- 애플리케이션은 위임된 권한(Delegated permissions)을 통해 사용자의 권한 범위 내에서 API를 호출합니다.
- Authorization Code Flow 또는 ROPC(Resource Owner Password Credentials) 같은 인증 흐름을 사용합니다.
- API 호출은 로그인한 사용자의 권한과 콘텍스트에 제한됩니다.
- 장점:
- 사용자의 권한 범위 내에서 동작하므로 보안적으로 안전합니다.
- 사용자별 맞춤 작업(예: 내 채팅만 읽기)에 적합합니다.
- 단점:
- 사용자 로그인이 필요하므로 완전 자동화에는 부적합합니다.
- 각 사용자의 권한에 따라 API 호출 범위가 제한됩니다.
- 설정 요구 사항:
- 공용 클라이언트 흐름 활성화 및 리디렉션 URI 설정이 필요합니다.
- 사용되는 콘텍스트에 따라서 계정에 Microsoft 365 라이선스가 필요할 수도 있습니다.
주요 차이점 요약
| 구분 | Application 인증 | Delegated 인증 |
| 사용 주체 | 애필리케이션 자체 | 로그인한 사용자 |
| 사용 사례 | 백그라운드 자동화, 서버 간 작업 | 사용자 상호작용 앱 |
| 권한 유형 | 애플리케이션 권한 (Application permissions) |
위임된 권한 (Delegated permissions) |
| 사용자 로그인 | 불필요 | 필수 |
| 관리자 동의 | 필수 | 경우에 따라 필요 |
| 보안 고려사항 | 클라이언트 시크릿 관리 중요 | 사용자 자격 증명 및 라이선스 관리 필요 |
| 적용 환경 | 대규모 작업, 테넌트 전체 접근 | 사용자별 작업 |
어떤 인증 방식을 선택해야 할까?
- Application 인증은 조직 전체 데이터를 다루거나 사용자 개입 없이 24/7 동작하는 자동화 시스템에 적합합니다. 예를 들어, 정기적으로 조직의 현황을 모니터링하여 알림을 보내는 봇을 구현할 때 유용합니다.
- Delegated 인증은 사용자가 자신의 데이터에 접근하거나 특정 작업을 수행하는 앱(예: 개인화된 Teams 메시지 관리 앱)에 적합합니다. 그리고 Delegated 인증에서만 동작하는 Graph API 사용에 필요합니다.
참고: https://learn.microsoft.com/ko-kr/graph/auth/auth-concepts
끝.
반응형
댓글