다음을 통해 공유


자습서: 인증을 위해 Android(Kotlin) 앱 준비

Android용 MSAL(Microsoft 인증 라이브러리)을 Android(Kotlin) 앱에 추가하는 방법을 보여 주는 자습서 시리즈의 두 번째 자습서입니다. MSAL을 사용하면 Android 애플리케이션에서 Microsoft Entra를 사용하여 사용자를 인증할 수 있습니다.

이 자습서에서는 다음을 수행합니다.

  • MSAL 종속성을 추가합니다.
  • 구성을 추가합니다.

필수 조건

MSAL 종속성 추가

Android 프로젝트에 MSAL 종속성을 추가하려면 다음 단계를 수행합니다.

  1. Android Studio에서 프로젝트를 열거나 새 프로젝트를 만듭니다.

  2. 애플리케이션의 build.gradle을 열고 다음 종속성을 추가합니다.

    allprojects {
    repositories {
        //Needed for com.microsoft.device.display:display-mask library
        maven {
            url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
            name 'Duo-SDK-Feed'
        }
        mavenCentral()
        google()
        }
    }
    //...
    
    dependencies { 
        implementation 'com.microsoft.identity.client:msal:5.+'
        //...
    }
    

    build.gradle 구성에서 리포지토리는 프로젝트 종속성에 대해 정의됩니다. 여기에는 Azure DevOps의 com.microsoft.device.display:display-mask 라이브러리에 대한 Maven 리포지토리 URL이 포함됩니다. 또한 이는 Maven Central 및 Google 리포지토리를 활용합니다. 종속성 섹션은 MSAL 버전 5 및 잠재적으로 다른 종속성의 구현을 지정합니다.

  3. Android Studio에서 파일>Gradle 파일과 프로젝트 동기화를 선택합니다.

구성 추가

JSON 구성 설정을 통해 애플리케이션(클라이언트) ID와 같은 필수 테넌트 식별자를 MSAL SDK에 전달합니다.

다음 단계를 사용하여 구성 파일을 만듭니다.

  1. Android Studio의 프로젝트 창에서 app\src\main\res로 이동합니다.

  2. res를 마우스 오른쪽 단추로 클릭하고 새로 만들기>디렉터리를 선택합니다. 새 디렉터리 이름으로 raw를 입력하고 확인을 선택합니다.

  3. app\src\main\res\raw에서 auth_config_ciam_auth.json이라는 새 JSON 파일을 만듭니다.

  4. auth_config_ciam_auth.json 파일에서 다음 MSAL 구성을 추가합니다.

    {
      "client_id" : "Enter_the_Application_Id_Here",
      "authorization_user_agent" : "DEFAULT",
      "redirect_uri" : "Enter_the_Redirect_Uri_Here",
      "account_mode" : "SINGLE",
      "authorities" : [
        {
          "type": "CIAM",
          "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/"
        }
      ]
    }
    

    JSON 구성 파일은 Android 애플리케이션에 대한 다양한 설정을 지정합니다. 여기에는 클라이언트 ID, 권한 부여 사용자 에이전트, 리디렉션 URI, 계정 모드가 포함됩니다. 또한 이는 인증 기관을 정의하고 형식 및 권한 URL을 지정합니다.

    다음 자리 표시자를 Microsoft Entra 관리 센터에서 가져온 테넌트 값으로 바꿉니다.

    • Enter_the_Application_Id_Here를 이전에 등록한 앱의 애플리케이션(클라이언트) ID로 바꿉니다.
    • Enter_the_Redirect_Uri_Here 그리고 플랫폼 리디렉션 URL을 추가했을 때 이전에 다운로드한 MSAL(Microsoft 인증 라이브러리) 구성 파일에서 이를 redirect_uri 값으로 바꿉니다.
    • Enter_the_Tenant_Subdomain_Here를 디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어, 테넌트 기본 도메인이 contoso.onmicrosoft.com인 경우 contoso를 사용합니다. 테넌트 하위 도메인을 모르는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.
  5. /app/src/main/AndroidManifest.xml 파일을 엽니다.

  6. AndroidManifest.xml에서 의도 필터에 다음 데이터 사양을 추가합니다.

    <data
        android:host="ENTER_YOUR_PROJECT_PACKAGE_NAME_HERE"
        android:path="/ENTER_YOUR_SIGNATURE_HASH_HERE"
        android:scheme="msauth" />
    

    자리 표시자 찾기:

    • ENTER_YOUR_PROJECT_PACKAGE_NAME_HERE 그리고 이를 Android의 프로젝트 패키지 이름으로 바꿉니다.
    • ENTER_YOUR_SIGNATURE_HASH_HERE 그리고 이를 플랫폼 리디렉션 URL을 추가할 때 이전에 생성한 서명 해시로 바꿉니다.

사용자 지정 URL 도메인 사용(선택 사항)

사용자 지정 도메인을 사용하여 인증 URL을 완전히 브랜딩합니다. 사용자 관점에서 볼 때, 사용자는 인증 과정 동안 ciamlogin.com 도메인 이름으로 리디렉션되는 것이 아니라 도메인에 남아 있습니다.

사용자 지정 도메인을 사용하려면 다음 단계를 따릅니다.

  1. 외부 테넌트에 대한 사용자 지정 URL 도메인을 사용하도록 설정하려면 외부 테넌트의 앱에 대한 사용자 지정 URL 도메인 사용의 단계를 사용합니다.

  2. auth_config_ciam_auth.json 파일을 엽니다.

    1. authority_url 속성의 값을 https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here로 업데이트합니다. Enter_the_Custom_Domain_Here를 사용자 지정 URL 도메인으로, Enter_the_Tenant_ID_Here를 테넌트 ID로 바꿉니다. 테넌트 ID가 없는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.
    2. [Enter_the_Custom_Domain_Here] 값을 갖는 knownAuthorities 속성을 추가합니다.

auth_config_ciam_auth.json 파일을 변경한 후, 사용자 지정 URL 도메인이 login.contoso.com이고 테넌트 ID가 aaaabbbb-0000-cccc-1111-dddd2222eeee인 경우 파일은 다음 코드 조각과 유사해야 합니다.

{
    "client_id" : "Enter_the_Application_Id_Here",
    "authorization_user_agent" : "DEFAULT",
    "redirect_uri" : "Enter_the_Redirect_Uri_Here",
    "account_mode" : "SINGLE",
    "authorities" : [
    {
        "type": "CIAM",
        "authority_url": "https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "knownAuthorities": ["login.contoso.com"]
    }
    ]
}

MSAL SDK 인스턴스 만들기

MSAL SDK 인스턴스를 초기화하려면 다음 코드를 사용합니다.

private suspend fun initClient(): ISingleAccountPublicClientApplication = withContext(Dispatchers.IO) {
    return@withContext PublicClientApplication.createSingleAccountPublicClientApplication(
        this@MainActivity,
        R.raw.auth_config_ciam_auth
    )
}

이 코드는 단일 계정 퍼블릭 클라이언트 애플리케이션을 비동기적으로 초기화합니다. 이는 제공된 인증 구성 파일을 사용하고 I/O 디스패처에서 실행됩니다.

import 문을 포함했는지 확인합니다. Android Studio에는 import 문이 자동으로 포함되어야 합니다.

다음 단계

자습서: Android(Kotlin) 모바일 앱에서 사용자 로그인