Microsoft 인증 라이브러리 살펴보기
MSAL(Microsoft 인증 라이브러리)을 통해 개발자는 사용자를 인증하고 보안 웹 API에 액세스하기 위해 Microsoft ID 플랫폼에서 보안 토큰을 획득할 수 있습니다. Microsoft Graph, 기타 Microsoft API, 타사 웹 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, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, 유니버설 Windows 플랫폼 |
MSAL 노드 | 웹앱(Express 포함), 데스크톱 앱(Electron 포함), 플랫폼 간 콘솔 앱 |
MSAL Python | Windows, macOS, Linux |
MSAL React | React 및 React 기반 라이브러리가 있는 단일 페이지 앱(Next.js, Gatsby.js) |
인증 흐름
다음 표는 MSAL(Microsoft 인증 라이브러리)에서 제공하는 몇 가지 인증 흐름을 보여 줍니다. 이러한 흐름은 다양한 애플리케이션 시나리오에서 사용할 수 있습니다.
인증 흐름 | 사용 | 지원되는 애플리케이션 유형 |
---|---|---|
인증 코드 | 사용자 로그인 및 사용자를 대신하여 웹 API에 액세스합니다. | 데스크톱, 모바일, SPA(단일 페이지 앱)(PKCE 필요), 웹 |
클라이언트 자격 증명 | 애플리케이션 자체의 ID를 사용하여 웹 API에 액세스합니다. 일반적으로 사용자 상호 작용이 필요 없는 서버 간 통신 및 자동화된 스크립트에 사용됩니다. | 디먼 |
디바이스 코드 | 스마트 TV 및 IoT 디바이스와 같이 입력이 제한된 디바이스에서 사용자를 대신하여 웹 API에 로그인하고 액세스합니다. CLI(명령줄 인터페이스) 애플리케이션에서도 사용됩니다. | Desktop, Mobile |
암시적 부여 | 사용자 로그인 및 사용자를 대신하여 웹 API에 액세스합니다. 암시적 허용 흐름은 더 이상 권장되지 않습니다. 대신 PKCE와 함께 인증 코드를 사용합니다. | SPA(단일 페이지 앱), 웹 |
OBO(On-Behalf-Of) | 사용자를 대신하여 "업스트림" 웹 API에서 "다운스트림" 웹 API로 액세스합니다. 사용자의 ID와 위임된 권한은 업스트림 API에서 다운스트림 API로 전달됩니다. | 웹 API |
사용자 이름/암호(ROPC) | 암호를 직접 처리하여 애플리케이션에 사용자가 로그인할 수 있도록 허용합니다. ROPC 흐름은 권장되지 않습니다. | Desktop, Mobile |
IWA(Windows 통합 인증) | 도메인 또는 Microsoft Entra 조인된 컴퓨터의 애플리케이션에서 사용자의 UI 상호 작용 없이 자동으로 토큰을 획득할 수 있습니다. | Desktop, Mobile |
퍼블릭 클라이언트 및 기밀 클라이언트 응용 프로그램
MSAL(Microsoft 인증 라이브러리)은 퍼블릭 클라이언트와 기밀 클라이언트라는 두 가지 형식의 클라이언트를 정의합니다. 클라이언트는 ID 공급자가 할당한 고유 식별자가 있는 소프트웨어 엔터티입니다. 클라이언트 유형은 권한 부여 서버를 통해 안전하게 인증하고 중요한 ID 증명 정보를 보관하여 액세스 범위 내에서 사용자가 액세스하거나 알 수 없도록 하는 기능에 따라 다릅니다.
지정된 클라이언트의 공개 또는 기밀 특성을 검사할 때 해당 클라이언트가 권한 부여 서버에 대한 ID를 증명할 수 있는 능력을 평가하고 있습니다. 이는 권한 부여 서버가 액세스 토큰을 발급하기 위해 클라이언트의 ID를 신뢰할 수 있어야 하기 때문에 중요합니다.
공용 클라이언트 애플리케이션은 데스크톱, 브라우저 없는 API, 모바일 또는 클라이언트 쪽 브라우저 앱과 같은 디바이스에서 실행할 수 있습니다. 애플리케이션 비밀을 안전하게 유지하기 위해 신뢰할 수 없으므로 사용자를 대신하여 웹 API에만 액세스할 수 있습니다. 항상 지정된 앱의 원본 또는 컴파일된 바이트코드가 신뢰할 수 없는 당사자가 읽거나 분해하거나 검사할 수 있는 모든 위치로 전송됩니다. 또한 공용 클라이언트 흐름만 지원하고 구성 시간 비밀을 보유할 수 없으므로 클라이언트 비밀을 가질 수 없습니다.
기밀 클라이언트 애플리케이션은 웹앱, 웹 API 앱 또는 서비스/디먼 앱과 같은 서버에서 실행할 수 있습니다. 사용자 또는 공격자가 액세스하기 어렵기 때문에 구성 시간 비밀을 적절히 보유하여 ID 증명을 어설션할 수 있습니다. 클라이언트 ID는 웹 브라우저를 통해 노출되지만, 비밀은 백채널에서만 전달되고 직접 노출되지 않습니다.