네이티브 클라이언트 앱이 프록시 애플리케이션과 상호 작용할 수 있도록 설정하는 방법

Microsoft Entra 애플리케이션 프록시는 웹앱을 게시하는 데 사용됩니다. MSAL(Microsoft 인증 라이브러리)로 구성된 네이티브 클라이언트 애플리케이션을 게시하는 데 사용할 수도 있습니다. 클라이언트 애플리케이션은 디바이스에 설치되고 웹앱은 브라우저를 통해 액세스되기 때문에 웹앱과 다릅니다.

네이티브 클라이언트 애플리케이션을 지원하기 위해 애플리케이션 프록시는 헤더에 전송되는 Microsoft Entra ID 발급 토큰을 허용합니다. 애플리케이션 프록시 서비스는 사용자에 대한 인증을 수행합니다. 이 솔루션은 인증에 대해 애플리케이션 토큰을 사용하지 않습니다.

최종 사용자, Microsoft Entra ID 및 게시된 애플리케이션 간의 관계

네이티브 애플리케이션을 게시하려면 인증을 처리하고 다양한 클라이언트 환경을 지원하는 Microsoft Authentication Library를 사용합니다. 애플리케이션 프록시는 로그인한 사용자 시나리오를 대신하여 웹 API를 호출하는 데스크톱 앱에 적합합니다.

이 문서에서는 애플리케이션 프록시 및 MSAL(Microsoft 인증 라이브러리)을 사용하여 네이티브 애플리케이션을 게시하는 네 가지 단계를 안내합니다.

1단계: 프록시 애플리케이션 게시

다른 애플리케이션과 마찬가지로 프록시 애플리케이션을 게시하고 애플리케이션에 액세스하도록 사용자를 할당합니다. 자세한 내용은 애플리케이션 프록시를 사용하여 애플리케이션 게시를 참조하세요.

2단계: 네이티브 애플리케이션 등록

이제 Microsoft Entra ID에 애플리케이션을 등록해야 합니다.

  1. 최소한 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. 오른쪽 위 모서리에서 사용자 이름을 선택합니다. 애플리케이션 프록시를 사용하는 디렉터리에 로그인했는지 확인합니다. 디렉터리를 변경해야 하는 경우 디렉터리 전환을 선택하고 애플리케이션 프록시를 사용하는 디렉터리를 선택합니다.

  3. ID>애플리케이션>앱 등록으로 이동합니다. 모든 앱 등록 목록이 표시됩니다.

  4. 새 등록을 선택합니다. 애플리케이션 등록 페이지가 나타납니다.

    Microsoft Entra 관리 센터에서 새 앱 등록 만들기

  5. 이름 제목에서 애플리케이션에 대한 사용자용 표시 이름을 지정합니다.

  6. 지원되는 계정 유형 제목 아래에서 다음 지침을 사용하여 액세스 수준을 선택합니다.

    • 조직의 내부 계정만을 대상으로 하려면 이 조직 디렉터리의 계정만을 선택합니다.
    • 비즈니스 또는 교육용 고객만 대상으로 하려면 모든 조직 디렉터리의 계정을 선택합니다.
    • 가장 광범위한 Microsoft ID를 대상으로 하려면 모든 조직 디렉터리의 계정 및 개인 Microsoft 계정을 선택합니다.
  7. 리디렉션 URI에서 공용 클라이언트(모바일 및 데스크톱)를 선택한 다음 애플리케이션에 대한 리디렉션 URI https://login.microsoftonline.com/common/oauth2/nativeclient 를 입력합니다.

  8. Microsoft 플랫폼 정책을 선택하고 검토한 후 등록을 선택합니다. 새 애플리케이션 등록에 대한 개요 페이지가 생성되고 표시됩니다.

새 애플리케이션 등록 만들기에 대한 자세한 내용은 Microsoft Entra ID와 애플리케이션 통합을 참조하세요.

3단계: 프록시 애플리케이션에 대한 액세스 권한 부여

네이티브 애플리케이션이 등록됩니다. 프록시 애플리케이션에 대한 액세스 권한을 부여합니다.

  1. 새 애플리케이션 등록 페이지의 사이드바에서 API 사용 권한을 선택합니다. 새 애플리케이션 등록을 위한 API 사용 권한 페이지가 나타납니다.
  2. 권한 추가를 선택합니다. API 사용 권한 요청 페이지가 나타납니다.
  3. API 선택 설정에서 내 조직에서 사용하는 API를 선택합니다. API를 노출하는 디렉터리의 애플리케이션이 포함된 목록이 표시됩니다.
  4. 1단계: 프록시 애플리케이션 게시에서 게시한 프록시 애플리케이션을 검색 상자에 입력하거나 스크롤하여 찾은 다음 프록시 애플리케이션을 선택합니다.
  5. 애플리케이션에 어떤 유형의 권한이 필요한가요? 제목에서 사용 권한 유형을 선택합니다. 네이티브 애플리케이션에서 로그인한 사용자로 프록시 애플리케이션 API에 액세스해야 하는 경우 위임된 권한을 선택합니다.
  6. 사용 권한 선택 제목에서 원하는 사용 권한을 선택하고 사용 권한 추가를 선택합니다. 이제 네이티브 애플리케이션에 대한 API 사용 권한 페이지에 추가된 프록시 애플리케이션 및 사용 권한 API가 표시됩니다.

4단계: 코드에 Microsoft 인증 라이브러리 추가(.NET C# 샘플)

MSAL(Microsoft Authentication Library)의 인증 컨텍스트에서 네이티브 애플리케이션 코드를 편집하여 다음 텍스트를 포함합니다.

// Acquire access token from Microsoft Entra ID for proxy application
IPublicClientApplication clientApp = PublicClientApplicationBuilder
.Create(<App ID of the Native app>)
.WithDefaultRedirectUri() // will automatically use the default Uri for native app
.WithAuthority("https://login.microsoftonline.com/{<Tenant ID>}")
.Build();

AuthenticationResult authResult = null;
var accounts = await clientApp.GetAccountsAsync();
IAccount account = accounts.FirstOrDefault();

IEnumerable<string> scopes = new string[] {"<Scope>"};

try
 {
    authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
 }
    catch (MsalUiRequiredException ex)
 {
     authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();                
 }

if (authResult != null)
 {
  //Use the Access Token to access the Proxy Application

  HttpClient httpClient = new HttpClient();
  httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
  HttpResponseMessage response = await httpClient.GetAsync("<Proxy App Url>");
 }

샘플 코드에 필요한 정보는 다음과 같이 Microsoft Entra 관리 센터에서 확인할 수 있습니다.

필요한 정보 Microsoft Entra 관리 센터에서 찾는 방법
<테넌트 ID> ID>개요>속성
<네이티브 앱의 앱 ID> 애플리케이션 등록>네이티브 애플리케이션>개요>애플리케이션 ID
<범위> 애플리케이션 등록>네이티브 애플리케이션>API 권한>은 권한 API(user_impersonation) > 에서 선택합니다. 캡션 user_impersonation 패널이 오른쪽에 나타납니다. > 범위는 편집 상자에 있는 URL입니다.
<프록시 앱 URL> 외부 Url 및 API 경로

이러한 매개 변수를 사용하여 MSAL 코드를 편집한 후에는 사용자가 회사 네트워크 외부에 있는 경우에도 네이티브 클라이언트 애플리케이션에 인증할 수 있습니다.

다음 단계

네이티브 애플리케이션 흐름에 대한 자세한 내용은 Microsoft Entra ID의 모바일데스크톱 앱을 참조하세요.

Microsoft Entra ID의 애플리케이션에 대한 Single Sign-On 설정에 대해 알아봅니다.