Azure Mobile Apps와 Azure Active Directory B2C 통합Integrating Azure Active Directory B2C with Azure Mobile Apps

샘플 다운로드 샘플 다운로드Download Sample Download the sample

Azure Active Directory B2C는 소비자 지향 응용 프로그램에 대 한 클라우드 id 관리를 제공합니다. 이 문서에서는 Xamarin.Forms 사용 하 여 Azure Mobile Apps 인스턴스로 id 관리를 통합 하려면 Azure Active Directory B2C를 사용 하는 방법에 설명 합니다.Azure Active Directory B2C provides cloud identity management for consumer-facing applications. This article explains how to use Azure Active Directory B2C to integrate identity management into an Azure Mobile Apps instance with Xamarin.Forms.

개요Overview

Azure Mobile Apps를 사용 하면 Azure App Service에서 호스팅되는 확장 가능한 백 엔드를 사용 하 여 응용 프로그램을 개발할 수 있습니다.Azure Mobile Apps allow you to develop applications with a scalable backend, hosted in Azure App Service. 모바일 인증, 오프 라인 동기화 및 푸시 지원 알림.It supports mobile authentication, offline sync, and push notifications. Azure Mobile Apps에 대 한 자세한 내용은 참조 하세요. Azure 모바일 앱을 소비, 및 Azure Mobile Apps를 사용 하 여 사용자 인증합니다.For more information about Azure Mobile Apps, see Consuming an Azure Mobile App, and Authenticating Users with Azure Mobile Apps.

Azure Active Directory B2C는 소비자를 허용 하는 소비자 지향 응용 프로그램에 대 한 id 관리 서비스:Azure Active Directory B2C is an identity management service for consumer-facing applications, that allows consumers to:

  • 기존 소셜 계정 (Microsoft, Google, Facebook, Amazon, LinkedIn)으로 로그인 합니다.Sign in with their existing social accounts (Microsoft, Google, Facebook, Amazon, LinkedIn).
  • 새 자격 증명 (전자 메일 주소 및 암호 또는 사용자 이름 및 암호)을 만듭니다.Create new credentials (email address and password, or username and password). 이러한 자격 증명 이라고 로컬 계정.These credentials are referred to as local accounts.

Azure Active Directory B2C에 대 한 자세한 내용은 참조 하세요. Azure Active Directory B2C를 사용 하 여 사용자 인증합니다.For more information about Azure Active Directory B2C, see Authenticating Users with Azure Active Directory B2C.

Azure 모바일 앱에 대 한 인증 워크플로 관리 하려면 azure Active Directory B2C는 사용할 수 있습니다.Azure Active Directory B2C can be used to manage the authentication workflow for an Azure Mobile App. 이 방법은 클라우드의 id 관리를 구성 하 고 변경 내용을 응용 프로그램 코드를 수정 하지 않고 있습니다.This approach configures identity management in the cloud and allows changes without modifying application code.

Azure Active Directory B2C를 사용 하 여 azure Mobile Apps에는 두 가지 인증 방법을 허용합니다.Azure Mobile Apps with Azure Active Directory B2C allows two authentication methods:

  • 클라이언트 관리 – Xamarin.Forms 모바일 응용 프로그램 Azure Active Directory B2C 테 넌 트를 사용 하 여 인증 프로세스를 시작 하 고 Azure Mobile Apps 인스턴스에 받은 인증 토큰을 전달 합니다.Client-managed – the Xamarin.Forms mobile application starts the authentication process with the Azure Active Directory B2C tenant, and passes the received authentication token to the Azure Mobile Apps instance.
  • 서버 관리 – Azure Mobile Apps 인스턴스 사용 하 여 Azure Active Directory B2C 테 넌 트 웹 기반 워크플로 통해 인증 프로세스를 시작 합니다.Server-managed – the Azure Mobile Apps instance uses the Azure Active Directory B2C tenant to start the authentication process through a web-based workflow.

두 경우 모두 Azure Active Directory B2C 테 넌 트에서 인증 환경이 제공 됩니다.In both cases, the authentication experience is provided by the Azure Active Directory B2C tenant. 샘플 응용 프로그램에서 다음 스크린샷과 같은 로그인 화면이 표시 됩니다.In the sample application, the sign-in screen should look like the following screenshots:

이 예제에서는 로컬 계정으로 로그인을 보여주지만, Microsoft, Google, Facebook 및 기타 id 공급자를 사용할 수도 있습니다.This example shows sign in with a local account but you can also enable Microsoft, Google, Facebook, and other identity providers.

설정Setup

모두 워크플로에서 Azure Mobile Apps를 사용 하 여 Azure Active Directory B2C 테 넌 트를 통합 하기 위한 초기 프로세스는 다음과 같습니다.In both workflows, the initial process for integrating an Azure Active Directory B2C tenant with Azure Mobile Apps is as follows:

  1. Azure portal에서 Azure Mobile Apps 인스턴스를 만듭니다.Create an Azure Mobile Apps instance in the Azure portal. 이 샘플 프로젝트와 유사한 시작 프로젝트를 생성합니다.This generates an starting project similar to the sample project. 자세한 내용은 Azure 모바일 앱 사용합니다.For more information, see Consuming an Azure Mobile App.
  2. Azure Active Directory B2C 테 넌 트를 만듭니다.Create an Azure Active Directory B2C tenant. 자세한 내용은 Azure Active Directory B2C를 사용 하 여 사용자 인증합니다.For more information, see Authenticating Users with Azure Active Directory B2C.
  3. Azure Mobile Apps 인스턴스와 Xamarin.Forms 응용 프로그램에서 인증을 사용 하도록 설정 합니다.Enable authentication in the Azure Mobile Apps instance and the Xamarin.Forms application. 자세한 내용은 Azure Mobile Apps를 사용 하 여 사용자 인증합니다.For more information, see Authenticating Users with Azure Mobile Apps.

참고

Microsoft 인증 라이브러리 (MSAL) 클라이언트 관리 인증 워크플로 사용 하는 경우 필요 합니다.The Microsoft Authentication Library (MSAL) is required when using a client-managed authentication workflow. MSAL은 장치의 웹 브라우저를 사용 하 여 인증 합니다.MSAL uses the device's web browser to authenticate. 브라우저에서 인증 완료 된 후 사용자는 사용자 지정 URL 구성표가 리디렉션됩니다.After authentication is completed in the browser, the user is redirected to a custom URL scheme. 응용 프로그램에는 다시 사용자 환경 제어 하 고 인증에 응답할 수 있도록 사용자 지정 URL 구성표를 등록 합니다.The application registers the custom URL scheme, allowing it to regain control of the user experience and respond to the authentication. MSAL을 사용 하 여 Azure Active Directory B2C 테 넌 트와 통신 하는 방법에 대 한 자세한 내용은 참조 하세요. Azure Active Directory B2C를 사용 하 여 사용자 인증합니다.For more information about using MSAL to communicate with an Azure Active Directory B2C tenant, see Authenticating Users with Azure Active Directory B2C.

클라이언트 관리 인증Client-managed authentication

클라이언트 관리 인증에서는 Xamarin.Forms 응용 프로그램 인증 흐름을 시작 하는 Azure Active Directory B2C 테 넌 트에 연결 합니다.In client-managed authentication, a Xamarin.Forms application contacts an Azure Active Directory B2C tenant to start the authentication flow. Sign-on 후 Azure Active Directory B2C 테 넌 트에 Azure Mobile Apps 인스턴스에 제공 되는 id 토큰을 반환 합니다.After sign-on, the Azure Active Directory B2C tenant returns an identity token, which is provided to the Azure Mobile Apps instance. 이렇게 하면 Xamarin.Forms 응용 프로그램을을 인증 된 사용자 권한이 필요한 작업을 수행할 수 있습니다.This allows the Xamarin.Forms application to perform actions that require authenticated user permissions.

Azure Active Directory B2C 테 넌 트 클라이언트 관리 구성Azure Active Directory B2C client-managed tenant configuration

클라이언트 관리 인증 워크플로에 대 한 Azure Active Directory B2C 테 넌 트를 다음과 같이 구성 해야 합니다.For a client-managed authentication workflow, the Azure Active Directory B2C tenant should be configured as follows:

  • 설정할 네이티브 클라이언트 포함 "예"로 합니다.Set Include native client to "Yes".
  • 사용자 지정 리디렉션 URI를 설정 합니다.Set the Custom Redirect URI. 앱 ID를 결합 하 고 뒤에 "msal"를 사용 하 여 MSAL 설명서 권장 ":/ / 인증 /"입니다.The MSAL documentation recommends using "msal" combined with your App ID, and followed by "://auth/". 자세한 내용은 MSAL 클라이언트 응용 프로그램 리디렉션 URI합니다.For more information, see MSAL client applications redirect URI.

다음 스크린샷은 이러한 구성을 보여 줍니다.The following screenshot demonstrates this configuration:

"Azure Active Directory B2C 구성""Azure Active Directory B2C configuration"

Azure Active Directory B2C 테 넌 트에서 사용 되는 로그인 정책은 같은 사용자 지정 URL 구성표를 회신 URL 설정 되도록 구성 되어야 합니다.The sign-in policy used in the Azure Active Directory B2C tenant should also be configured so that the reply URL is set to the same custom URL scheme. 선택 하 여 수행할 수 있습니다 사용자 흐름을 실행 정책 설정에 액세스 하려면 Azure portal에서 합니다.This can be achieved by selecting Run user flow in the Azure portal to access the policy settings. 모바일 앱 구성 해야 하는 대로이 화면에 있는 메타 데이터 URL을 저장 합니다.Save the metadata URL found on this screen as you'll need it for the Mobile App configuration. 다음 스크린샷은이 구성 및 복사 해야 하는 URL을 보여 줍니다.The following screenshot demonstrates this configuration and the URL you should copy:

"Azure Active Directory B2C 정책""Azure Active Directory B2C Policies"

Azure 모바일 앱 구성Azure Mobile App configuration

클라이언트 관리 인증 워크플로에 대 한 Azure Mobile Apps 인스턴스를 다음과 같이 구성 합니다.For a client-managed authentication workflow, configure the Azure Mobile Apps instance as follows:

  • App Service 인증 켜야 합니다.App Service Authentication should be turned on.
  • 요청이 인증 되지 않은 경우 수행할 동작을 설정 해야 Azure Active Directory로 로그인합니다.The action to take when a request isn't authenticated should be set to Sign in with Azure Active Directory.

다음 스크린샷은 이러한 구성을 보여 줍니다.The following screenshot demonstrates this configuration:

"Azure Mobile Apps 인증 구성""Azure Mobile Apps authentication configuration"

Azure Active Directory B2C 테 넌 트를 사용 하 여 통신 하도록 Azure Mobile Apps 인스턴스를 구성 합니다.Configure the Azure Mobile Apps instance to communicate with the Azure Active Directory B2C tenant:

  • Azure Active Directory 구성을 클릭 하 고 사용 하도록 설정 고급 Azure Active Directory 인증 공급자에 대 한 모드입니다.Click on Azure Active Directory configuration and enable Advanced mode for the Azure Active Directory authentication provider.
  • 설정할 클라이언트 ID응용 프로그램 ID Azure Active Directory B2C 테 넌 트입니다.Set Client ID to the Application ID of the Azure Active Directory B2C tenant.
  • 설정 된 발급자 Url 테 넌 트 구성 하는 동안 이전에 복사한 정책의 메타 데이터 url입니다.Set the Issuer Url to the policy's metadata URL that you copied previously during tenant configuration.

다음 스크린샷은 이러한 구성을 보여 줍니다.The following screenshot demonstrates this configuration:

Azure Mobile Apps "고급" 구성

로그인Signing in

다음 코드 예제에서는 클라이언트 관리 인증 워크플로 시작 하기 위해 키 메서드 호출을 보여 줍니다.The following code example shows key method calls for starting a client-managed authentication workflow:

public async Task<bool> LoginAsync(bool useSilent = false)
{
    ...

    authenticationResult = await ADB2CClient.AcquireTokenAsync(
        Constants.Scopes,
        string.Empty,
        UIBehavior.SelectAccount,
        string.Empty,
        App.UiParent);

    ...

    var payload = new JObject();
    if (authenticationResult != null && !string.IsNullOrWhiteSpace(authenticationResult.IdToken))
    {
        payload["access_token"] = authenticationResult.IdToken;
    }

    User = await TodoItemManager.DefaultManager.CurrentClient.LoginAsync(
        MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
        payload);
    success = true;

    ...
}

Microsoft 인증 라이브러리 (MSAL)는 Azure Active Directory B2C 테 넌 트를 사용 하 여 인증 하는 워크플로 시작 하는 데 사용 됩니다.The Microsoft Authentication Library (MSAL) is used to start an authentication workflow with the Azure Active Directory B2C tenant. 합니다 AcquireTokenAsync 장치의 웹 브라우저를 시작 하 고 참조를 통해 정책에 의해 지정 된 Azure Active Directory B2C 정책에 정의 된 인증 옵션을 표시 하는 메서드를 Constants.AuthoritySignin 상수입니다.The AcquireTokenAsync method launches the device's web browser and displays authentication options defined in the Azure Active Directory B2C policy that's specified by the policy referenced through the Constants.AuthoritySignin constant. 이 정책은 사용자의 로그인 및 등록 환경 및 응용 프로그램 인증이 성공 하면 수신 클레임을 정의 합니다.This policy defines the user's sign-in and sign-up experience, and the claims the application receives upon successful authentication.

결과 AcquireTokenAsync 메서드 호출을 AuthenticationResult 인스턴스.The result of the AcquireTokenAsync method call is an AuthenticationResult instance. 인증이 성공 하는 경우는 AuthenticationResult 인스턴스에 로컬로 캐시 하는 id 토큰에 포함 됩니다.If authentication is successful, the AuthenticationResult instance will contain an identity token, which will be cached locally. 인증이 성공한 경우의 AuthenticationResult 인스턴스 인증에 실패 한 이유를 나타내는 데이터를 포함 됩니다.If authentication is unsuccessful, the AuthenticationResult instance will contain data that indicates why authentication failed. MSAL을 사용 하 여 Azure Active Directory B2C 테 넌 트를 사용 하 여 통신 하는 방법에 대 한 자세한 내용은 Azure Active Directory B2C를 사용 하 여 사용자 인증합니다.For information on how to use MSAL to communicate with an Azure Active Directory B2C tenant, see Authenticating Users with Azure Active Directory B2C.

경우는 CurrentClient.LoginAsync 메서드가 호출 되 면 Azure Mobile Apps 인스턴스에 수신에 래핑된 id 토큰을 JObject합니다.When the CurrentClient.LoginAsync method is invoked, the Azure Mobile Apps instance receives the identity token wrapped in a JObject. Azure Mobile Apps 인스턴스 자체 OAuth 2.0 인증 흐름을 시작 하지 않아도는 유효한 토큰 방법의 존재 합니다.The presence of a valid token means that the Azure Mobile Apps instance doesn't need to start its own OAuth 2.0 authentication flow. 대신를 CurrentClient.LoginAsync 메서드가 반환 되는 MobileServiceUser 에 저장 되는 인스턴스는 MobileServiceClient.CurrentUser 속성.Instead, the CurrentClient.LoginAsync method returns a MobileServiceUser instance that will be stored in the MobileServiceClient.CurrentUser property. 이 속성은 제공 UserIdMobileServiceAuthenticationToken 속성입니다.This property provides UserId and MobileServiceAuthenticationToken properties. 이러한 인증 된 사용자 및 만료 될 때까지 사용할 수 있는 토큰을 나타냅니다.These represent the authenticated user and token, which can be used until it expires. Xamarin.Forms 응용 프로그램을 인증 된 사용자 권한이 필요한 작업을 수행할 수 있도록 Azure Mobile Apps 인스턴스에 대 한 모든 요청에서 인증 토큰이 포함 됩니다.The authentication token will be included in all requests made to the Azure Mobile Apps instance, allowing the Xamarin.Forms application to perform actions that require authenticated user permissions.

로그 아웃Signing out

다음 코드 예제에서는 클라이언트에서 관리 하는 로그 아웃 프로세스를 호출 하는 방법을 보여 줍니다.The following code example shows how the client-managed sign-out process is invoked:

public async Task<bool> LogoutAsync()
{
    ...

    IEnumerable<IAccount> accounts = await ADB2CClient.GetAccountsAsync();
    while (accounts.Any())
    {
        await ADB2CClient.RemoveAsync(accounts.First());
        accounts = await ADB2CClient.GetAccountsAsync();
    }
    User = null;

    ...
}

CurrentClient.LogoutAsync 메서드는 취소 Azure Mobile Apps 인스턴스를 사용 하 여 사용자 인증 및 모든 인증 토큰이 MSAL에 의해 만들어진 로컬 캐시에서 지워집니다.The CurrentClient.LogoutAsync method de-authenticates the user with the Azure Mobile Apps instance, and then all authentication tokens are cleared from the local cache created by MSAL.

서버 관리 인증Server-managed authentication

서버 관리 인증 Xamarin.Forms 응용 프로그램에는 Azure Active Directory B2C 테 넌 트를 사용 하 여 B2C 정책에 정의 된 대로 로그인 페이지를 표시 하 여 OAuth 2.0 인증 흐름을 관리 하는 Azure Mobile Apps 인스턴스를 연결 합니다.In server-managed authentication, a Xamarin.Forms application contacts an Azure Mobile Apps instance, which uses the Azure Active Directory B2C tenant to manage the OAuth 2.0 authentication flow by displaying a sign-in page as defined in the B2C policy. 성공적인 로그온을 다음 Azure Mobile Apps 인스턴스 Xamarin.Forms 응용 프로그램을 인증 된 사용자 권한이 필요한 작업을 수행할 수 있도록 토큰을 반환 합니다.Following successful sign-on, the Azure Mobile Apps instance returns a token that allows the Xamarin.Forms application to perform actions that require authenticated user permissions.

Azure Active Directory B2C 테 넌 트 서버 관리 구성Azure Active Directory B2C server-managed tenant configuration

서버 관리 인증 워크플로에 대 한 Azure Active Directory B2C 테 넌 트를 다음과 같이 구성 해야 합니다.For a server-managed authentication workflow, the Azure Active Directory B2C tenant should be configured as follows:

  • 암시적 흐름 허용 및 웹 앱/웹 API 포함 됩니다.Include a web app/web API, and allow the implicit flow.
  • Azure 모바일 앱의 주소로 회신 URL을 설정 하 고 그 다음 /.auth/login/aad/callback합니다.Set the Reply URL to the address of the Azure Mobile App, followed by /.auth/login/aad/callback.

다음 스크린샷은 이러한 구성을 보여 줍니다.The following screenshot demonstrates this configuration:

"Azure Active Directory B2C 구성""Azure Active Directory B2C configuration"

Azure Active Directory B2C 테 넌 트에 사용 된 정책 구성 된 회신 URL을가지고 있어야 합니다.The policy used in the Azure Active Directory B2C tenant needs to have the Reply URL configured. Azure 모바일 앱, 뒤의 주소로 회신 URL을 설정 하 여 이렇게 /.auth/login/aad/callback합니다.This is achieved by setting the Reply URL to the address of your Azure Mobile App, followed by /.auth/login/aad/callback. 또한 모바일 앱 구성 해야 하는 대로이 화면 위쪽에 있는 메타 데이터 URL을 저장할 해야 있습니다.You should also save the metadata URL found at the top of this screen as you'll need it for the Mobile App configuration. 다음 스크린샷은이 구성 및 저장 해야 하는 메타 데이터 URL을 보여 줍니다.The following screenshot demonstrates this configuration and the metadata URL you should save:

"Azure Active Directory B2C 정책 구성"

Azure Mobile Apps 인스턴스 구성Azure Mobile Apps instance configuration

서버 관리 인증 워크플로에 대 한 Azure Mobile Apps 인스턴스를 다음과 같이 구성 해야 합니다.For a server-managed authentication workflow, the Azure Mobile Apps instance should be configured as follows:

  • App Service 인증 켜야 합니다.App Service Authentication should be turned on.
  • 요청이 인증 되지 않은 경우 수행할 동작을 설정 해야 Azure Active Directory로 로그인합니다.The action to take when a request isn't authenticated should be set to Sign in with Azure Active Directory.

다음 스크린샷은 이러한 구성을 보여 줍니다.The following screenshot demonstrates this configuration:

"Azure Mobile Apps 인증 구성""Azure Mobile Apps authentication configuration"

Azure Mobile Apps 인스턴스를 Azure Active Directory B2C 테 넌 트를 사용 하 여 통신도 구성 해야 합니다.The Azure Mobile Apps instance should also be configured to communicate with the Azure Active Directory B2C tenant:

  • Azure Active Directory 구성을 클릭 하 고 사용 하도록 설정 고급 Azure Active Directory 인증 공급자에 대 한 모드입니다.Click on Azure Active Directory configuration and enable Advanced mode for the Azure Active Directory authentication provider.
  • 설정할 클라이언트 ID응용 프로그램 ID Azure Active Directory B2C 테 넌 트입니다.Set Client ID to the Application ID of the Azure Active Directory B2C tenant.
  • 합니다 발급자 Url 테 넌 트 구성 하는 동안 이전에 복사한 정책의 메타 데이터 URL입니다.The Issuer Url is the policy's metadata URL that you copied previously during tenant configuration.

다음 스크린샷은 이러한 구성을 보여 줍니다.The following screenshot demonstrates this configuration:

Azure Mobile Apps "고급" 구성

로그인Signing in

다음 코드 예제에는 서버 관리 인증 워크플로 시작 하는 방법을 보여 줍니다.The following code example shows how to start a server-managed authentication workflow:

public async Task<bool> AuthenticateAsync()
{
    ...

    MobileServiceUser user = await TodoItemManager.DefaultManager.CurrentClient.LoginAsync(
        MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
        Constants.URLScheme);

    ...
}

경우는 CurrentClient.LoginAsync 메서드가 호출 되 면 Azure Mobile Apps 인스턴스 OAuth 2.0 인증 흐름을 시작 하는 연결 된 Azure Active Directory B2C 정책을 실행 합니다.When the CurrentClient.LoginAsync method is invoked, the Azure Mobile Apps instance executes the linked Azure Active Directory B2C policy, which starts the OAuth 2.0 authentication flow. AuthenticateAsync 메서드는 플랫폼 마다 고유 합니다.Each AuthenticateAsync method is platform-specific. 그러나 각 AuthenticateAsync 메서드 호출을 CurrentClient.LoginAsync 메서드 및 인증 프로세스에서 Azure Active Directory 테 넌 트를 사용할지를 지정 합니다.However, each AuthenticateAsync method calls the CurrentClient.LoginAsync method and specifies that an Azure Active Directory tenant will be used in the authentication process. 자세한 내용은 사용자가 로그인합니다.For more information, see Logging in Users.

CurrentClient.LoginAsync 메서드가 반환 되는 MobileServiceUser 에 저장 되는 인스턴스는 CurrentClient.CurrentUser 속성입니다.The CurrentClient.LoginAsync method returns a MobileServiceUser instance that will be stored in the CurrentClient.CurrentUser property. 이 속성은 제공 UserIdMobileServiceAuthenticationToken 속성입니다.This property provides UserId and MobileServiceAuthenticationToken properties. 이러한 인증된 된 사용자 및 인증 토큰을 만료 될 때까지 사용할 수 있는 사용자를 나타냅니다.These represent the authenticated user and an authentication token for the user, which can be used until it expires. Xamarin.Forms 응용 프로그램에서 Azure Mobile Apps 인스턴스가 인증 된 사용자 권한이 필요한 작업을 수행할 수 있도록 Azure Mobile Apps 인스턴스에 대 한 모든 요청에서 인증 토큰이 포함 됩니다.The authentication token will be included in all requests made to the Azure Mobile Apps instance, allowing the Xamarin.Forms application to perform actions on the Azure Mobile Apps instance that require authenticated user permissions.

로그 아웃Signing out

다음 코드 예제에서는 로그 아웃 프로세스 서버 관리를 호출 하는 방법을 보여 줍니다.The following code example shows how the server-managed sign-out process is invoked:

public async Task<bool> LogoutAsync()
{
    ...

    await TodoItemManager.DefaultManager.CurrentClient.LogoutAsync();

    ...
}

MobileServiceClient.LogoutAsync 메서드 취소 Azure Mobile Apps 인스턴스를 사용 하 여 사용자를 인증 합니다.The MobileServiceClient.LogoutAsync method de-authenticates the user with the Azure Mobile Apps instance. 자세한 내용은 사용자 아웃 로깅합니다.For more information, see Logging Out Users.