다음을 통해 공유


모바일 앱용 Azure App Service의 인증 및 권한 부여

메모

이 제품은 사용 중지되었습니다. .NET 8 이상을 사용하는 프로젝트를 대체하려면 Community Toolkit Datasync 라이브러리참조하세요.

이 문서에서는 App Service 백 엔드를 사용하여 네이티브 모바일 앱을 개발할 때 인증 및 권한 부여가 작동하는 방식을 설명합니다. App Service는 통합 인증 및 권한 부여를 제공하므로 모바일 앱은 App Service에서 코드를 변경하지 않고도 사용자를 로그인할 수 있습니다. 애플리케이션을 보호하고 사용자별 데이터로 작업하는 쉬운 방법을 제공합니다.

경고

이 문서에서는 Azure Mobile Apps 클라이언트 SDK의 v4.2.0에 대해 설명합니다. 현재 릴리스에서는 새 인증 메커니즘을 사용하며 동일한 방식으로 Azure App Service 인증 & 권한 부여를 지원하지 않습니다.

App Service에서 인증 및 권한 부여가 작동하는 방식에 대한 자세한 내용은 Azure App Service인증 및 권한 부여를 참조하세요.

공급자 SDK를 사용한 인증

App Service에서 모든 항목을 구성한 후 App Service로 로그인하도록 모바일 클라이언트를 수정할 수 있습니다. 두 가지 방법은 다음과 같습니다.

  • 지정된 ID 공급자가 게시하는 SDK를 사용하여 ID를 설정한 다음 App Service에 액세스합니다.
  • Mobile Apps 클라이언트 SDK가 사용자를 로그인할 수 있도록 한 줄의 코드를 사용합니다.

대부분의 애플리케이션은 공급자 SDK를 사용하여 사용자가 로그인할 때 보다 일관된 환경을 얻고, 토큰 새로 고침 지원을 사용하고, 공급자가 지정하는 다른 이점을 얻어야 합니다.

공급자 SDK를 사용하는 경우 사용자는 앱이 실행 중인 운영 체제와 더 긴밀하게 통합되는 환경에 로그인할 수 있습니다. 또한 이 메서드는 공급자 토큰과 클라이언트에 대한 일부 사용자 정보를 제공하므로 그래프 API를 훨씬 쉽게 사용하고 사용자 환경을 사용자 지정할 수 있습니다. 클라이언트의 코드가 사용자를 로그인하기 때문에 이 메서드를 "클라이언트 흐름" 또는 "클라이언트 지향 흐름"으로 알려져 있습니다.

공급자 토큰을 가져온 후에는 유효성 검사를 위해 App Service로 보내야 합니다. Azure App Service는 토큰의 유효성을 검사합니다. 그런 다음, 서비스는 클라이언트에 대한 새 토큰을 만듭니다. Mobile Apps 클라이언트 SDK에는 이 교환을 관리하고 토큰을 애플리케이션 백 엔드에 모든 요청에 자동으로 연결하는 도우미 메서드가 있습니다. 공급자 토큰에 대한 참조를 유지할 수도 있습니다.

메모

Windows(WPF)와 같은 일부 플랫폼은 클라이언트 지향 흐름에서만 작동합니다. 다른 서버와 클라이언트 흐름 모두에서 동일하게 잘 작동합니다. 플랫폼이 클라이언트 지향 흐름에서만 작동하는 경우 빠른 시작 가이드에서 이를 보여 줍니다.

인증 흐름에 대한 자세한 내용은 App Service 인증 흐름참조하세요.

공급자 SDK가 없는 인증

공급자 SDK를 설정하지 않으려면 Azure App Service에서 로그인을 처리하도록 허용할 수 있습니다. Azure Mobile Apps 클라이언트 SDK는 선택한 공급자에게 웹 보기를 열고 사용자를 로그인합니다. 서버가 사용자를 로그인하는 프로세스를 관리하기 때문에 이 메서드를 "서버 흐름" 또는 "서버 지향 흐름"이라고 합니다. 클라이언트 SDK는 공급자 토큰을 받지 않습니다.

클라이언트 지향 흐름에서 토큰 제출

클라이언트 지향 흐름을 사용하는 경우 먼저 Azure App Service에서 토큰의 유효성을 검사하는 데 필요한 관련 정보를 가져옵니다. 대부분의 경우 토큰은 액세스 토큰이 됩니다. 자세한 내용은 Azure App Service 설명서.

그런 다음 적절한 JSON 개체를 빌드할 수 있습니다. 예를 들어 MSAL을 사용하여 WPF 애플리케이션에서 .NET에서 클라이언트 지향 흐름을 수행하는 경우 다음 코드를 사용할 수 있습니다.

var requestBody = new JObject(new JProperty("access_token", authResult.AccessToken));
var userInfo = await mobileClient.login("aad", requestBody);

요청 본문은 설명서설명서에 나와 있는 예상과 일치해야 합니다.