Android용 Microsoft 인증 라이브러리

Android용 MSAL(Microsoft 인증 라이브러리)은 Android 애플리케이션이 OAuth2 및 OpenID Connect 프로토콜을 사용하여 Microsoft ID 플랫폼(이전 Azure Active Directory)를 사용하여 사용자를 인증하고 보호된 웹 API에 액세스할 수 있도록 하는 라이브러리입니다. MSAL Android를 사용하면 개발자가 Microsoft ID 플랫폼 보안 토큰을 획득하여 사용자를 인증하고 Android 기반 애플리케이션에 대한 보안 웹 API에 액세스할 수 있습니다.

MSAL Android는 SSO(Single Sign-On), 조건부 액세스 및 조정된 인증과 같은 여러 인증 시나리오를 지원합니다. 이를 통해 Microsoft Entra ID(회사 및 학교 계정), Microsoft 계정(Outlook.com, hotmail.com 및 기타 여러 가지) 또는 AD B2C(소셜 및 로컬 계정) Azure 등 여러 ID를 쉽게 대상으로 지정할 수 있습니다.

이 지침은 MSAL Android와 관련된 일반적인 기능을 문서화하기 위한 것입니다. Microsoft Entra ID, Microsoft 계정 또는 Azure AD B2C를 시작하는 데 추가 도움이 필요하면 Microsoft ID 플랫폼 문서를 확인하세요. Microsoft Graph API에 대한 자세한 내용은 Microsoft Graph 문서를 확인하세요.

MSAL의 네이티브 인증 지원

또한 MSAL Android를 사용하면 모바일 애플리케이션에서 엔드 투 엔드 사용자 지정 가능한 흐름을 사용하여 네이티브 인증 환경을 구현할 수 있습니다. 네이티브 인증을 사용하면 사용자는 앱을 종료하지 않고 풍부한 네이티브 모바일 우선 등록 및 로그인 과정을 안내합니다. 네이티브 인증 기능은 고객의 외부 ID에 있는 모바일 앱에만 사용할 수 있습니다.

ADAL(Azure Active Directory 인증 라이브러리)에서 마이그레이션

Android용 ADAL(Azure Active Directory 인증 라이브러리)은 2023년 6월부터 더 이상 사용되지 않습니다. 사용자 또는 조직에서 Android용 ADAL(Azure Active Directory 인증 라이브러리)을 사용하는 경우 앱의 보안을 위험에 빠뜨리지 않도록 MSAL Android로 마이그레이션해야 합니다. Android용 MSAL(Microsoft 인증 라이브러리)은 인증 및 토큰 획득에 사용할 수 있는 지원되는 라이브러리입니다.

MSAL Android 시작

애플리케이션에서 MSAL Android를 사용하려면 다음을 수행해야 합니다.

MSAL Android는 브라우저 위임 및 네이티브 인증 환경을 모두 지원하므로 시나리오에 따라 다음 자습서의 단계를 따릅니다.

Requirements

  • 최소 SDK 버전 16 이상
  • 대상 SDK 버전 33 이상

1단계: MSAL에 대한 종속성 선언

앱의 build.gradle에 추가합니다.

dependencies {
    implementation 'com.microsoft.identity.client:msal:4.9.+'
}

또한 gradle 스크립트의 리포지토리 섹션에 다음 줄을 추가하세요.

maven { 
    url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1' 
}

2단계: MSAL 구성 파일 만들기

브라우저 위임 인증:

프로젝트에서 구성 파일을 "원시" 리소스로 만듭니다. 인스턴스를 생성할 때 생성된 리소스 식별자를 사용하여 참조합니다 PublicClientApplication . Microsoft Entra 관리 센터 처음으로 앱을 등록하는 경우 자세한 MSAL Android 구성 파일도 제공됩니다.

{
  "client_id" : "<YOUR_CLIENT_ID>",
  "redirect_uri" : "msauth://<YOUR_PACKAGE_NAME>/<YOUR_BASE64_URL_ENCODED_PACKAGE_SIGNATURE>",
  "broker_redirect_uri_registered": true,
}

redirect_uri에서 <YOUR_PACKAGE_NAME>context.getPackageName() 메서드가 반환한 패키지 이름을 가리킵니다. 이 패키지 이름은 파일에 정의된 application_id 이름과 build.gradle 동일합니다.

위의 값은 필요한 최소 구성입니다. MSAL은 다른 모든 설정에 대해 라이브러리와 함께 제공되는 기본값을 사용합니다. 라이브러리 기본값을 이해하려면 MSAL Android 구성 파일 설명서를 참조하세요.

네이티브 인증:

  1. Res를 마우스 오른쪽 단추로 클릭하고 새 > 디렉터리를 선택합니다. 새 디렉터리 이름으로 raw를 입력하고 OK를 선택합니다.
  2. 이 새 폴더(앱 > src > main > res > raw)에서 auth_config_native_auth.json라는 새 JSON 파일을 만들고 다음 템플릿 MSAL 구성을 붙여넣습니다.
{ 
  "client_id": "Enter_the_Application_Id_Here", 
  "authorities": [ 
    { 
      "type": "CIAM", 
      "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/" 
    } 
  ], 
  "challenge_types": ["oob"], 
  "logging": { 
    "pii_enabled": false, 
    "log_level": "INFO", 
    "logcat_enabled": true 
  } 
 }

3단계: 브라우저 위임 인증에 대한 AndroidManifest.xml 구성

  1. Android 매니페스트를 통해 다음 권한 요청
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  1. 리디렉션 URI를 사용하여 Android 매니페스트에서 의도 필터 구성

구성을 통해 지정한 리디렉션 URI와 일치하는 의도 필터를 포함하지 않으면 대화형 토큰 요청이 실패합니다.

    <!--Intent filter to capture authorization code response from the default browser on the device calling back to our app after interactive sign in -->
    <activity
        android:name="com.microsoft.identity.client.BrowserTabActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="msauth"
                android:host="<YOUR_PACKAGE_NAME>"
                android:path="/<YOUR_BASE64_ENCODED_PACKAGE_SIGNATURE>" />
        </intent-filter>
    </activity>

일반적인 리디렉션 URI 문제에 대한 자세한 내용은 MSAL Android FAQ 를 참조할 수 있습니다.

ProGuard

MSAL은 런타임에 .class 파일에 저장된 리플렉션 및 제네릭 형식 정보를 사용하여 다양한 지속성 및 serialization 관련 기능을 지원합니다. 축소 및 난독 처리에 대한 라이브러리 지원은 제한됩니다. 기본 구성은 이 라이브러리와 함께 제공됩니다. 문제가 발견되면 문제를 제출 하세요.

권장 사항

MSAL은 보안 라이브러리입니다. 사용자가 로그인하고 서비스에 액세스하는 방법을 제어합니다. 가능하면 항상 앱에서 최신 버전의 라이브러리를 사용하는 것이 좋습니다. 앱 업데이트 위험을 제어할 수 있도록 의미 체계 버전 관리를 사용합니다. 예를 들어 항상 최신 부 버전 번호(예: x.y.x)를 다운로드하면 API 노출 영역이 변경되지 않았다는 확신을 가지고 최신 보안 및 기능을 얻을 수 있습니다. GitHub 릴리스 탭에서 항상 최신 버전 및 릴리스 정보를 볼 수 있습니다.