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 및 클라이언트 암호 포함)이 있습니다.