Microsoft Graph API 개념과 기본 사용법

Becoming a Data Engineer ·2024년 12월 11일
0

Azure

목록 보기
27/27

Microsoft Graph는 Microsoft 365 데이터에 액세스하는 데 사용되며, 그래프 데이터베이스 또는 GraphQL과 같은 다른 그래프 기술과는 관련이 없습니다.

https://learn.microsoft.com/ko-kr/training/modules/msgraph-intro-overview/2-what-is-microsoft-graph


Microsoft Graph


  • Microsoft Graph는 Microsoft 365, Windows, Enterprise Mobility + Security 등의 Microsoft 클라우드 서비스에 저장된 데이터에 접근할 수 있는 단일 엔드포인트를 제공한다.

Microsoft Graph의 인증 방법

  • Microsoft Graph API를 사용하려면 OAuth 2.0OpenID Connect 표준을 통해 인증을 받아야 한다.

  • Azure에서 앱을 등록하고 API 사용 권한에서 Microsoft Graph를 추가하는 방식은 OAuth 2.0을 사용한 사용자 인증(Delegated Permissions) 또는 애플리케이션 인증(Application Permissions) 을 설정하는 과정이다.

    • 사용자 인증 : 사용자가 로그인하여 토큰을 받아 API를 호출한다.
    • 애플리케이션 인증 : 애플리케이션이 클라이언트 자격 증명을 사용하여 토큰을 받아 API를 호출한다.

Microsoft Graph API


  • Microsoft Graph API는 Microsoft Graph의 일부이다.

    • 쉽게 말해, Microsoft Graph API는 Microsoft Graph의 기능을 활용하기 위한 RESTful 웹 API 이다.
  • Microsoft Graph API를 사용하면 사용자, 그룹, 파일, 메일, 일정 등 다양한 리소스에 대해 읽기, 쓰기, 업데이트, 삭제 등의 작업을 수행할 수 있다.

Microsoft Graph 탐색기

Microsoft Graph REST API 요청을 수행할 수 있는 무료 오픈 소스 도구로 요청 결과를 빠르게 확인할 수 있다.

사용 예시

아래 코드는 애플리케이션 인증(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())
profile
I want to improve more 👩🏻‍💻

0개의 댓글

관련 채용 정보