본문 바로가기

WPF

WPF에서 OAuth2.0 인증을 사용하는 방법

반응형

1. 먼저, OAuth 2.0 공급자(Provider)에 등록하고, 클라이언트 ID 및 시크릿 키를 발급받아야 합니다. 이 과정은 각 공급자에서 제공하는 문서를 참조하여 진행합니다.
※OKTA인증을 사용하는경우는 아래의 사이트를 참고하세요.
https://www.okta.com/kr/identity-101/saml-vs-oauth/

2. OAuth 2.0 프로토콜을 구현하기 위해, Microsoft.Identity.Client NuGet 패키지를 설치합니다.
3. 앱 매니페스트 파일을 열고, 인증 공급자의 웹사이트 주소를 redirectURI로 등록합니다.

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
  <ApplicationManifest>
    <RedirectUri>http://localhost</RedirectUri>
  </ApplicationManifest>
</Application>

4. 코드 파일 (MainWindow.xaml.cs)을 열고, OAuth 2.0 인증을 구현합니다.

using Microsoft.Identity.Client;

public partial class MainWindow : Window
{
    private const string ClientId = "<your-client-id>";
    private const string Authority = "https://login.microsoftonline.com/common";
    private const string Scopes = "<your-scopes-separated-by-space>";

    public MainWindow()
    {
        InitializeComponent();
        InitializeAsync();
    }

    private async void InitializeAsync()
    {
        var app = PublicClientApplicationBuilder.Create(ClientId)
                                                  .WithAuthority(Authority)
                                                  .Build();

        var result = await app.AcquireTokenInteractive(Scopes)
                              .WithUseEmbeddedWebView(true)
                              .ExecuteAsync();

        if (result != null)
        {
            // 인증 성공
            // Access Token 사용을 위해 필요한 처리를 수행합니다.
        }
        else
        {
            // 인증 실패
        }
    }
}

위 코드는 Microsoft 계정을 사용하는 예시입니다. ClientId, Authority, Scopes 값을 알맞게 변경하여 다른 OAuth 2.0 공급자에서도 사용할 수 있습니다.

위와 같이 구현하면, OAuth 2.0 인증을 WPF 앱에 쉽게 구현할 수 있습니다.

반응형