Microsoft Graph는 Microsoft 365 데이터에 액세스하는 데 사용되며, 그래프 데이터베이스 또는 GraphQL과 같은 다른 그래프 기술과는 관련이 없습니다.
https://learn.microsoft.com/ko-kr/training/modules/msgraph-intro-overview/2-what-is-microsoft-graph
Microsoft Graph는 Microsoft 365, Windows, Enterprise Mobility + Security 등의 Microsoft 클라우드 서비스에 저장된 데이터에 접근할 수 있는 단일 엔드포인트를 제공한다.
단일 엔드포인트란 여러 서비스나 데이터 소스에 접근할 때, 각각의 서비스마다 다른 URL을 사용하는 대신, 하나의 URL을 통해 모든 서비스에 접근할 수 있게 하는 개념 이다.
기존 방식:
각각의 서비스마다 다른 URL을 사용해야 했다.
Microsoft Graph의 단일 엔드포인트:
모든 데이터에 접근할 때 https://graph.microsoft.com/v1.0/ 하나의 URL을 사용한다.
Microsoft Graph API를 사용하려면 OAuth 2.0 및 OpenID Connect 표준을 통해 인증을 받아야 한다.
Azure에서 앱을 등록하고 API 사용 권한에서 Microsoft Graph를 추가하는 방식은 OAuth 2.0을 사용한 사용자 인증(Delegated Permissions) 또는 애플리케이션 인증(Application Permissions) 을 설정하는 과정이다.
Microsoft Graph API는 Microsoft Graph의 일부이다.
Microsoft Graph API를 사용하면 사용자, 그룹, 파일, 메일, 일정 등 다양한 리소스에 대해 읽기, 쓰기, 업데이트, 삭제 등의 작업을 수행할 수 있다.
Microsoft Graph REST API 요청을 수행할 수 있는 무료 오픈 소스 도구로 요청 결과를 빠르게 확인할 수 있다.
Microsoft Graph 탐색기
https://developer.microsoft.com/en-us/graph/graph-explorer
MS 공식 문서
https://learn.microsoft.com/ko-kr/training/modules/msgraph-intro-overview/4-graph-explorer
아래 코드는 애플리케이션 인증(Application Permissions) 을 사용하여 Microsoft Graph API에 접근하는 방식이다. 이 방식은 클라이언트 자격 증명 흐름(Client Credentials Flow)을 사용하여 애플리케이션이 직접 인증을 받고, 사용자 개입 없이 API를 호출할 수 있게 한다.
사전 작업으로 [Azure Portal > 앱 등록] 에서 애플리케이션 등록 후 Microsoft Graph 관련 API 권한을 미리 추가해두어야 한다.
등록 후 예시 코드를 사용하기 위해 필요한 정보들은 아래 위치에서 확인할 수 있다.
- [개요 > 기본 정보 > 애플리케이션(클라이언트)] : 애플리케이션의 클라이언트 ID
- [인증서 및 암호 > 클라이언트 비밀] : 애플리케이션의 클라이언트 시크릿
- [인증 > 웹 리디렉션 URI] : token_url
- [API 사용 권한 > 구성된 사용 권한] : 요청하는 권한 범위
import requests
app_id = {애플리케이션의 클라이언트 ID}
client_secret = {애플리케이션의 클라이언트 시크릿}
token_url = 'https://login.microsoftonline.com/{tenant_id}/oauth2/token'
token_data = {
'grant_type': 'client_credentials', # 클라이언트 자격 증명 흐름을 사용
'client_id': app_id,
'client_secret': client_secret,
'resource': 'https://graph.microsoft.com/.default', # 접근하려는 리소스의 URL, 여기서는 Microsoft Graph API의 URL을 사용
'scope': {요청하는 권한 범위} # 예시 : 'Sites.ReadWrite.All'
}
response = requests.post(token_url, data=token_data)
token = response.json().get('access_token')
# 이제 이 토큰을 사용하여 Microsoft Graph API 호출
headers = {
'Authorization': f'Bearer {token}',
'Accept': 'application/json'
}
# 원하는 Microsoft 서비스에 접근하기 위한 URL
graph_api_url = 'https://graph.microsoft.com/v1.0/sites/{접근을 원하는 Microsoft 서비스}'
response = requests.get(graph_api_url, headers=headers)
print(response.json())