Microsoft ID 플랫폼의 애플리케이션 유형

Microsoft ID 플랫폼은 모두 업계 표준 프로토콜 OAuth 2.0 또는 OpenID Connect를 기준으로 하는 다양한 최신 앱 아키텍처에 대한 인증을 지원합니다. 이 문서에서는 기본 설정 언어 또는 플랫폼에 관계없이 Microsoft ID 플랫폼을 사용하여 빌드할 수 있는 앱 형식을 설명합니다. 이 정보는 애플리케이션 시나리오에서 코드 작업을 시작하기 전에 개략적인 시나리오를 이해하는 데 도움이 됩니다.

기본 사항

Microsoft Entra 관리 센터 앱 등록 Microsoft ID 플랫폼 사용하는 각 앱을 등록해야 합니다. 앱 등록 프로세스는 앱에 대한 다음 값을 수집하고 할당합니다.

  • 앱을 고유하게 식별하는 애플리케이션(클라이언트) ID
  • 응답을 다시 앱으로 보내는 데 사용할 수 있는 리디렉션 URI
  • 지원되는 계정 유형과 같은 다른 몇 가지 시나리오 관련 값

자세한 내용은 앱 등록방법을 참조하세요.

앱이 등록되면 엔드포인트에 요청을 보내 Microsoft ID 플랫폼과 통신합니다. Microsoft에서는 이러한 요청에 대한 세부 정보를 처리하는 오픈 소스 프레임워크 및 라이브러리를 제공합니다. 또한 이러한 엔드포인트에 대한 요청을 만들어 인증 논리를 직접 구현할 수 있습니다.

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

Microsoft ID 플랫폼 지원하는 앱 유형은 다음과 같습니다.

  • SPA(단일 페이지 앱)
  • 웹 앱
  • 웹 API
  • 모바일 및 네이티브 앱
  • 서비스, 디먼, 스크립트

단일 페이지 앱

대부분의 최신 앱에는 주로 JavaScript로 작성된 SPA(단일 페이지 앱) 프런트 엔드가 있으며, 종종 Angular, React 또는 Vue와 같은 프레임워크를 사용합니다. 이 Microsoft ID 플랫폼은 인증에 OpenID Connect 프로토콜을 사용하고 OAuth 2.0에서 정의한 두 가지 유형의 권한 부여 중 하나를 사용하여 이러한 앱을 지원합니다. 지원되는 권한 부여 유형은 OAuth 2.0 암시적 부여 흐름 또는 최신 OAuth 2.0 권한 부여 코드 + PKCE 흐름입니다(아래 참조).

흐름 다이어그램은 앱이 Microsoft ID 플랫폼 authorize 엔드포인트에서 코드를 수신하고 사이트 간 웹 요청을 사용하여 액세스 토큰 및 새로 고침 토큰에 사용하는 OAuth 2.0 권한 부여 코드 부여 흐름(PKCE 관련 세부 정보가 생략됨)을 보여 줍니다. SPA의 경우 액세스 토큰은 1시간 동안 유효하며 만료되면 새로 고침 토큰을 사용하여 다른 코드를 요청해야 합니다. 액세스 토큰 외에 클라이언트 애플리케이션에 로그인한 사용자를 나타내는 id_token은 일반적으로 동일한 흐름 및/또는 별도의 Openid Connect 요청을 통해 요청됩니다(여기에 표시되지 않음).

단일 페이지 앱과 보안 토큰 서비스 엔드포인트 간의 OAuth 2.0 권한 부여 코드 흐름을 보여 주는 다이어그램

이 동작을 확인하려면 빠른 시작을 참조 하세요. SPA(단일 페이지 앱)에서 사용자를 로그인하고 JavaScript를 사용하여 Microsoft Graph API를 호출합니다.

권한 부여 코드 흐름과 암시적 흐름 비교

OAuth 2.0 인증 코드 흐름은 이제 Safari 및 기타 개인 정보 보호에 민감한 브라우저에서 앱의 호환성을 보장하기 위해 SPA를 빌드하는 권장 방법입니다. 타사 쿠키를제거하고 더 많은 주의를 기울인 후에는 암시적 흐름을 계속 사용하지 않는 것이 좋습니다.

웹앱

사용자가 브라우저를 통해 액세스하는 웹앱(.NET, PHP, Java, Ruby, Python, Node)의 경우 사용자 로그인에 OpenID Connect를 사용할 수 있습니다. OpenID Connect에서는 웹앱이 ID 토큰을 받습니다. ID 토큰은 사용자 ID를 확인하고 클레임 형태로 사용자 정보를 제공하는 보안 토큰입니다.

// Partial raw ID token
abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...

// Partial content of a decoded ID token
{
    "name": "Casey Jensen",
    "email": "casey.jensen@onmicrosoft.com",
    "oid": "ab12cd34-effe-5678-9012-abcdef012345"
    ...
}

Microsoft ID 플랫폼에서 사용되는 다양한 토큰 형식에 대한 자세한 내용은 액세스 토큰 참조 및 id_token 참조를 확인하세요.

웹 서버 앱에서 로그인 인증 흐름은 다음과 같은 높은 수준의 단계를 수행합니다.

웹앱 인증 흐름 표시

Microsoft ID 플랫폼에서 받은 공개 서명 키로 ID 토큰의 유효성을 검사하여 사용자의 ID를 확인할 수 있습니다. 후속 페이지 요청에서 사용자를 식별하는 데 사용할 수 있는 세션 쿠키가 설정됩니다.

다음 다중 파트 자습서 시리즈에서 사용자를 로그인하는 ASP.NET Core 웹앱을 빌드하여 자세히 알아보세요.

간단한 로그인뿐 아니라 웹 서버 앱은 REST(Representational State Transfer) API 등의 다른 웹 서비스에 액세스해야 할 수도 있습니다. 이 경우 웹 서버 앱은 OAuth 2.0 권한 부여 코드 흐름을 사용하여 결합된 OpenID Connect 및 OAuth 2.0 흐름에 참여합니다. 이 시나리오에 대한 자세한 내용은 코드 샘플을 참조하세요.

Web API

Microsoft ID 플랫폼을 사용하여 앱의 RESTful 웹 API와 같은 웹 서비스의 보안을 유지할 수 있습니다. 웹 API는 다양한 플랫폼과 언어로 구현할 수 있습니다. Azure Functions에서 HTTP 트리거를 사용하여 구현할 수도 있습니다. ID 토큰 및 세션 쿠키 대신 웹 API는 OAuth 2.0 액세스 토큰을 사용하여 데이터 보안을 유지하고 들어오는 요청을 인증합니다.

웹 API 호출자는 다음과 같이 HTTP 요청의 인증 헤더에 액세스 토큰을 추가합니다.

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...
Accept: application/json
...

웹 API는 액세스 토큰을 사용하여 API 호출자의 ID를 확인하고 액세스 토큰에 인코딩된 클레임에서 호출자에 대한 정보를 추출합니다. Microsoft ID 플랫폼 사용되는 다양한 유형의 토큰에 대한 자세한 내용은 액세스 토큰 참조 및 ID 토큰 참조에서 사용할 수 있습니다.

웹 API를 통해 사용자는 범위라고도 하는 사용 권한을 노출하여 특정 기능이나 데이터를 옵트인(opt-in)하거나 옵트아웃(opt-out)할 수 있습니다. 호출 앱이 범위에 대한 사용 권한을 얻으려면 사용자가 흐름 중 범위에 동의해야 합니다. Microsoft ID 플랫폼은 사용자에게 권한을 요청한 다음, 웹 API가 받은 모든 액세스 토큰에 이러한 권한을 기록합니다. 웹 API는 각 호출에서 받은 액세스 토큰의 유효성을 검사하고 권한 부여 검사를 수행합니다.

웹 API는 웹 서버 앱, 데스크톱 및 모바일 앱, 단일 페이지 앱, 서버 쪽 데몬 및 다른 웹 API까지 포함하여 모든 유형의 앱에서 액세스 토큰을 받을 수 있습니다. 웹 API의 개략적인 흐름은 다음과 같습니다.

웹 API 인증 흐름을 표시합니다.

OAuth2 액세스 토큰을 사용하여 웹 API를 보호하는 방법을 알아보려면 보호된 웹 API 자습서에서 웹 API 코드 샘플을 검사.

대부분의 경우 웹 API는 Microsoft ID 플랫폼으로 보호되는 다른 다운스트림 API에 대해 아웃바운드 요청도 보내야 합니다. 이를 위해 웹 API는 OBO(On-Behalf-Of) 흐름을 활용할 수 있으며, 이를 통해 웹 API는 들어오는 액세스 토큰을 아웃바운드 요청에 사용할 다른 액세스 토큰으로 교환할 수 있습니다. 자세한 내용은 Microsoft ID 플랫폼 및 OAuth 2.0 On-Behalf-Of 흐름을 참조하세요.

모바일 및 네이티브 앱

모바일 및 데스크톱 앱과 같은 디바이스 설치 앱은 데이터를 저장하고 사용자 대신 기능을 수행하는 백 엔드 서비스 또는 웹 API에 액세스해야 하는 경우가 많습니다. 이러한 앱은 OAuth 2.0 권한 부여 코드 흐름을 사용하여 백 엔드 서비스에 로그인 및 권한 부여를 추가할 수 있습니다.

이 흐름에서 앱은 사용자 로그인 시 Microsoft ID 플랫폼에서 권한 부여 코드를 받습니다. 권한 부여 코드는 현재 로그인한 사용자를 대신해 백 엔드 서비스를 호출할 앱의 사용 권한을 나타냅니다. 앱은 백그라운드에서 권한 부여 코드를 OAuth 2.0 액세스 토큰 및 새로 고침 토큰으로 교환할 수 있습니다. 앱은 액세스 토큰을 사용하여 HTTP 요청 시 웹 API에 인증할 수 있고 새로 고침 토큰을 사용하여 이전 액세스 토큰 만료 시 새 액세스 토큰을 가져올 수 있습니다.

네이티브 앱 인증 흐름을 표시합니다.

참고 항목

애플리케이션에서 기본 시스템 웹 보기를 사용하는 경우 Microsoft Entra 인증 및 권한 부여 오류 코드에서 "내 로그인 확인" 기능 및 오류 코드 AADSTS50199대한 정보를 검사.

서버, 디먼 및 스크립트

장기 실행 프로세스가 있거나 사용자와의 상호 작용 없이 작동하는 앱은 웹 API와 같은 보안 리소스에 액세스하는 방법도 필요합니다. 이러한 앱은 OAuth 2.0 클라이언트 자격 증명 흐름을 사용하여 사용자의 위임된 ID 대신 앱 ID로 인증하고 토큰을 가져올 수 있습니다. 클라이언트 암호 또는 인증서를 사용하여 앱 ID를 증명할 수 있습니다. 자세한 내용은 Microsoft ID 플랫폼 사용하는 .NET 디먼 콘솔 애플리케이션을 참조하세요.

이 흐름에서 앱은 /token 엔드포인트와 직접 상호 작용하여 액세스 권한을 가져옵니다.

디먼 앱 인증 흐름을 표시합니다.

디먼 앱을 빌드하려면 클라이언트 자격 증명 설명서를 참조하거나 .NET 샘플 앱을 사용해 보세요.

참고 항목

Microsoft ID 플랫폼에서 지원되는 애플리케이션의 유형을 배웠으므로 이제 OAuth 2.0 및 OpenID Connect에 대해 자세히 알아보고 다양한 시나리오에서 사용되는 프로토콜 구성 요소를 파악하세요.