CmlLib
한국어 (v3)
한국어 (v3)
  • 🧊CmlLib Projects
  • [AD] 커스텀 런처 주문제작
  • 🚀CmlLib.Core
    • 홈
    • 시작하기
      • CMLauncher
      • 게임 경로 설정
      • 실행 옵션 설정
      • 이벤트 처리
    • 로그인과 세션
      • 마이크로소프트 엑스박스 계정
      • 예전 모장 계정
      • 오프라인 계정
    • 고급 기능
      • VersionLoader
      • Version
      • FileChecker
      • Downloader
    • 모드 로더 인스톨러
      • Forge Installer
      • Fabric Installer
      • LiteLoader Installer
    • 유틸리티
      • Minecraft Changelogs
    • 자료
      • 자주 묻는 질문
      • 알려진 문제
      • 예시 런처
      • 라이센스
  • 🔓Auth.Microsoft
    • 홈
    • CmlLib.Core.Auth.Microsoft
      • JELoginHandler
      • JELoginHandlerBuilder
      • JEAuthenticator
    • XboxAuthNet.Game
      • OAuth
      • XboxAuth
      • XboxAuthException
      • AccountManager
      • Accounts
    • XboxAuthNet.Game.Msal
      • ClientID
      • MsalClientHelper
      • OAuth
    • CmlLib.Core.Bedrock.Auth
    • 자료
  • 🌐MojangAPI
    • 홈
    • Mojang API
    • SecurityQuestion
  • ⚒️Installer.Forge
    • 홈
    • 지원되는 버전
    • 시작하기
    • MForge
    • ForgeVersionLoader
Powered by GitBook
On this page
  • 예시
  • Interactive
  • EmbeddedWebView
  • SystemBrowser
  • Silent
  • DeviceCode
  • FromResult
Edit on GitHub
  1. Auth.Microsoft
  2. XboxAuthNet.Game.Msal

OAuth

PreviousMsalClientHelperNextCmlLib.Core.Bedrock.Auth

Last updated 1 year ago

MSAL 을 통해 Microsoft OAuth 를 진행하는 방법을 제공합니다.

먼저 ClientID 를 통해 해야 합니다.

예시

JELoginHandler 에서 MSAL OAuth 를 사용한 예시입니다.

using XboxAuthNet.Game.Msal;

var app = await MsalClientHelper.BuildApplicationWithCache("<CLIENT-ID>");
var loginHandler = JELoginHandlerBuilder.BuildDefault();

var authenticator = loginHandler.CreateAuthenticatorWithNewAccount(default);
authenticator.AddMsalOAuth(app, msal => msal.Interactive());
authenticator.AddXboxAuthForJE(xbox => xbox.Basic());
authenticator.AddJEAuthenticator();
var session = await authenticator.ExecuteForLauncherAsync();

Interactive

authenticator.AddMsalOAuth(app, msal => msal.Interactive());

사용자에게 마이크로소프트 계정을 입력하도록 요청합니다. 로그인 페이지를 어떻게 표시할 지는 MSAL 에서 결정합니다.

EmbeddedWebView

authenticator.AddMsalOAuth(app, msal => msal.EmbeddedWebView());

사용자에게 마이크로소프트 계정을 입력하도록 요청합니다. WebView2 를 사용해 로그인 페이지를 표시합니다.

SystemBrowser

authenticator.AddMsalOAuth(app, msal => msal.SystemBrowser());

사용자에게 마이크로소프트 계정을 입력하도록 요청합니다. 시스템 기본 브라우저를 열어 로그인 페이지를 표시합니다.

Silent

authenticator.AddMsalOAuth(app, msal => msal.Silent());

MSAL 에 캐시된 계정 정보를 이용해 로그인을 시도합니다.

DeviceCode

authenticator.AddMsalOAuth(app, msal => msal.DeviceCode(deviceCode =>
{
    Console.WriteLine(deviceCode.Message);
    return Task.CompletedTask;
}));

DeviceCode 방식으로 로그인을 시도합니다. 이 방식은 클라이언트에서 웹 브라우저나 UI 가 필요하지 않은 대신 다른 기기에서 로그인을 진행할 수 있도록 해줍니다.

예제 코드는 콘솔에 다음과 같은 메세지를 출력합니다:

To sign in, use a web browser to open the page https://www.microsoft.com/link and enter the code XXXXXXXX to authenticate.

FromResult

var result = await app.AcquireTokenInteractive(MsalClientHelper.XboxScopes).ExecuteAsync();
authenticator.AddMsalOAuth(app, msal => msal.FromResult(result));

MSAL 로그인 결과를 바로 사용합니다.

GUI 환경을 사용할 수 없거나 콘솔에서만 작동하는 런처를 제작한다면 이 방식을 사용하여 로그인을 진행하세요. 로그인은 유저가 웹 브라우저를 직접 열어 으로 접속하여 진행할 수 있습니다. 이때 로그인은 런처를 실행하는 기기와 전혀 다른 기기에서도 진행할 수 있습니다. 예를 들어 유저는 자신의 휴대폰으로 위 링크에 접속해 로그인을 진행할 수 있습니다.

🔓
IPublicClientAppliction 를 초기화
https://www.microsoft.com/link