Microsoft 인증 라이브러리 살펴보기

완료됨

MSAL(Microsoft 인증 라이브러리)을 사용하여 Microsoft Graph, 기타 Microsoft API 또는 사용자 고유의 웹 API에 대한 보안 액세스를 제공할 수 있습니다. MSAL은 .NET, JavaScript, Java, Python, Android 및 iOS를 비롯한 다양한 애플리케이션 아키텍처 및 플랫폼을 지원합니다.

MSAL을 통해 여러 플랫폼에 대해 일관된 API를 사용하여 토큰을 얻을 수 있는 방법은 여러 가지입니다. MSAL을 사용하면 다음과 같은 이점이 있습니다.

  • 애플리케이션의 프로토콜에 대해 OAuth 라이브러리나 코드를 직접 사용할 필요가 없습니다.
  • 사용자 대신 또는 애플리케이션 대신 토큰을 획득합니다(플랫폼에 해당하는 경우).
  • 토큰 캐시를 유지 관리하고 토큰 만료가 가까워지면 토큰을 새로 고쳐줍니다. 토큰 만료를 직접 처리할 필요가 없습니다.
  • 애플리케이션에서 로그인할 대상을 지정하는 데 도움이 됩니다.
  • 구성 파일에서 애플리케이션을 설정할 수 있습니다.
  • 실행 가능한 예외, 로깅 및 원격 분석을 노출하여 앱 문제를 해결할 수 있습니다.

애플리케이션 유형 및 시나리오

MSAL을 사용하면 웹 애플리케이션, 웹 API, 단일 페이지 앱(JavaScript), 모바일과 원시 애플리케이션, 디먼과 서버 쪽 애플리케이션 등과 같은 여러 애플리케이션 유형에 대해 토큰을 획득할 수 있습니다. MSAL은 현재 다음 표에 나열된 플랫폼 및 프레임워크를 지원합니다.

라이브러리 지원되는 플랫폼 및 프레임워크
Android용 MSAL Android
MSAL Angular Angular 및 Angular.js 프레임워크가 있는 단일 페이지 앱
iOS 및 macOS용 MSAL iOS 및 macOS
MSAL Go(미리 보기) Windows, macOS, Linux
MSAL Java Windows, macOS, Linux
MSAL.js Vue.js, Ember.js, 또는 Durandal.js와 같은 JavaScript/TypeScript 프레임워크
MSAL.NET .NET Framework, .NET Core, Xamarin Android, Xamarin iOS, 유니버설 Windows 플랫폼
MSAL 노드 웹앱(Express 포함), 데스크톱 앱(Electron 포함), 플랫폼 간 콘솔 앱
MSAL Python Windows, macOS, Linux
MSAL React React 및 React 기반 라이브러리가 있는 단일 페이지 앱(Next.js, Gatsby.js)

인증 흐름

다음 표는 MSAL(Microsoft 인증 라이브러리)에서 제공하는 몇 가지 인증 흐름을 보여 줍니다. 이러한 흐름은 다양한 애플리케이션 시나리오에서 사용할 수 있습니다.

흐름 설명
인증 코드 네이티브 및 웹앱이 사용자의 이름으로 안전하게 토큰 획득
클라이언트 자격 증명 사용자 상호 작용 없이 서비스 애플리케이션 실행
On-behalf-of 애플리케이션은 서비스/웹 API를 호출하고, 다시 Microsoft Graph를 호출
암시적 브라우저 기반 애플리케이션에서 사용됨
디바이스 코드 브라우저가 있는 다른 디바이스를 사용하여 디바이스에 로그인 가능
Windows 통합 Windows 컴퓨터는 도메인에 가입된 경우 자동으로 액세스 토큰 획득
대화형 모바일 및 데스크톱 애플리케이션이 사용자 이름으로 Microsoft Graph 호출
사용자 이름/암호 애플리케이션은 사용자 이름 및 암호를 사용하여 사용자에 로그인

퍼블릭 클라이언트 및 기밀 클라이언트 애플리케이션

여러 유형의 애플리케이션이 보안 토큰을 획득할 수 있습니다. 이러한 애플리케이션은 다음과 같은 두 가지 범주로 구분되는 경향이 있습니다. 각 라이브러리는 서로 다른 라이브러리와 개체에 사용됩니다.

  • 퍼블릭 클라이언트 애플리케이션: 디바이스나 데스크톱 컴퓨터에서 또는 웹 브라우저에서 실행되는 앱입니다. 애플리케이션 비밀을 안전하게 유지하는 것으로 신뢰할 수 없으므로 사용자를 대신하여 웹 API에만 액세스합니다. 퍼블릭 클라이언트 흐름만 지원합니다. 퍼블릭 클라이언트는 구성 시간 비밀을 보유할 수 없으므로 클라이언트 비밀이 없습니다.

  • 기밀 클라이언트: 애플리케이션은 서버(웹앱, 웹 API 앱 또는 서비스/디먼 앱)에서 실행되는 앱입니다. 액세스하기 어려우며, 이러한 이유로 애플리케이션 비밀을 유지할 수 있습니다. 기밀 클라이언트는 구성 시간 비밀을 보유할 수 있습니다. 클라이언트의 각 인스턴스에는 고유한 구성(클라이언트 ID 및 클라이언트 암호 포함)이 있습니다.