적용: 워크포스 테넌트 흰색 체크 표시가 있는 녹색 원
외부 테넌트(자세히 알아보기)
이 자습서에서는 Android용 MSAL(Microsoft 인증 라이브러리)을 Android 앱에 추가하는 방법을 설명합니다. MSAL을 사용하면 Android 애플리케이션에서 Microsoft Entra를 사용하여 사용자를 인증할 수 있습니다.
이 자습서에서는 다음을 수행합니다.
- MSAL 종속성 추가
- 구성 추가
- MSAL SDK 인스턴스 만들기
필수 구성 요소
- 인력 임차인입니다. 기본 디렉터리 사용하거나 새 테넌트를 설정할 수 있습니다.
- 새 앱을 Microsoft Entra 관리 센터에 등록하고, 해당 조직 디렉터리의 계정만을 위해 구성합니다. 자세한 내용은 Register an application을 참조하십시오. 응용 프로그램 개요 페이지에서 다음 값을 나중에 사용할 수 있도록 기록하십시오.
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
- Android 프로젝트입니다. Android 프로젝트가 없는 경우 생성하세요.
리디렉션 URI 추가
다운로드한 코드 샘플과의 호환성을 보장하려면 앱 등록에서 특정 리디렉션 URI를 구성해야 합니다. 이러한 URI는 사용자가 성공적으로 로그인한 후 앱으로 다시 리디렉션하는 데 필수적입니다.
관리에서 인증>플랫폼 추가>Android를 선택합니다.
위에서 다운로드한 샘플 형식에 따라 프로젝트의 패키지 이름을 입력합니다.
- Java 샘플 -
com.azuresamples.msalandroidapp
- Kotlin 예제 -
com.azuresamples.msalandroidkotlinapp
- Java 샘플 -
Android 앱 구성 창의 서명 해시 섹션에서 개발 서명 해시 생성을 선택하고 KeyTool 명령을 명령줄에 복사합니다.
- KeyTool.exe JDK(Java Development Kit)의 일부로 설치됩니다. 또한 OpenSSL 도구를 설치하여 KeyTool 명령을 실행해야 합니다. 자세한 내용은 키 생성에 대한 Android 설명서를 참조하세요.
KeyTool에서 생성된 서명 해시를 입력합니다.
구성을 선택하고 Android 구성 창에 나타나는 MSAL 구성을 저장합니다. 그러면 나중에 앱을 구성할 때 이 구성을 입력할 수 있습니다.
완료를 선택합니다.
프로젝트에 MSAL 종속성 및 관련 라이브러리 추가
Android 프로젝트에 MSAL 종속성을 추가하려면 다음 단계를 수행합니다.
Android Studio에서 프로젝트를 열거나 새 프로젝트를 만듭니다.
애플리케이션의
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 및 잠재적으로 다른 종속성의 구현을 지정합니다.Android Studio에서 파일>Gradle 파일과 프로젝트 동기화를 선택합니다.
구성 추가
JSON 구성 설정을 통해 애플리케이션(클라이언트) ID와 같은 필수 테넌트 식별자를 MSAL SDK에 전달합니다.
다음 단계를 사용하여 구성 파일을 만듭니다.
Android Studio의 프로젝트 창에서 app\src\main\res로 이동합니다.
마우스 오른쪽 버튼을 클릭하여 res을 선택하고, 새>디렉터리을 선택합니다. 새 디렉터리 이름으로
raw
을 입력하고 의 확인을 선택하십시오.앱>src>메인>res>raw에 새 JSON 파일
auth_config_single_account.json
를 만들고, 이전에 저장한 MSAL 구성을 붙여넣습니다.리디렉션 URI 아래에 붙여넣습니다.
"account_mode" : "SINGLE",
구성 파일은 다음 예제와 유사합니다.
{ "client_id": "00001111-aaaa-bbbb-3333-cccc4444", "authorization_user_agent": "WEBVIEW", "redirect_uri": "msauth://com.azuresamples.msalandroidapp/00001111%cccc4444%3D", "broker_redirect_uri_registered": true, "account_mode": "SINGLE", "authorities": [ { "type": "AAD", "audience": { "type": "AzureADandPersonalMicrosoftAccount", "tenant_id": "common" } } ] }
이 자습서에서는 단일 계정 모드에서 앱을 구성하는 방법만 보여 주듯이, 단일 및 다중 계정 모드 참조하고 자세한 내용은 앱 구성하는 참조하세요.
'WEBVIEW'를 사용하는 것이 좋습니다. 앱에서 "authorization_user_agent"을 '브라우저'로 구성하려면 다음을 업데이트해야 합니다. a) "authorization_user_agent": "Browser"로 auth_config_single_account.json 업데이트합니다. b) AndroidManifest.xml업데이트합니다. 앱에서 앱>src>메인>AndroidManifest.xml로 이동한 후,
BrowserTabActivity
요소의 자식으로<application>
액티비티를 추가합니다. 이 항목을 사용하면 Microsoft Entra ID가 인증을 완료한 후 애플리케이션에 다시 호출할 수 있습니다.<!--Intent filter to capture System Browser or Authenticator calling back to our app after sign-in--> <activity android:name="com.microsoft.identity.client.BrowserTabActivity" android:exported="true"> <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="Enter_the_Package_Name" android:path="/Enter_the_Signature_Hash" /> </intent-filter> </activity>
-
값을 바꾸려면
android:host=.
사용합니다. 이렇게 보여야 합니다:com.azuresamples.msalandroidapp
. -
서명 해시 사용하여
android:path=
값을 대체합니다. 서명 해시의 시작 부분에/
이 선행되는지 확인합니다. 이렇게 보여야 합니다:/aB1cD2eF3gH4+iJ5kL6-mN7oP8q=
.
이러한 값은 앱 등록의 인증 블레이드에서도 찾을 수 있습니다.
-
값을 바꾸려면
MSAL SDK 인스턴스 만들기
MSAL SDK 인스턴스를 초기화하려면 다음 코드를 사용합니다.
PublicClientApplication.createSingleAccountPublicClientApplication(
getContext(),
R.raw.auth_config_single_account,
new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
@Override
public void onCreated(ISingleAccountPublicClientApplication application) {
// Initialize the single account application instance
mSingleAccountApp = application;
loadAccount();
}
@Override
public void onError(MsalException exception) {
// Handle any errors that occur during initialization
displayError(exception);
}
}
);
이 코드는 구성 파일 auth_config_single_account.json사용하여 단일 계정 공용 클라이언트 애플리케이션을 만듭니다. 애플리케이션이 성공적으로 만들어지면 인스턴스를 mSingleAccountApp
할당하고 loadAccount()
메서드를 호출합니다. 만드는 동안 오류가 발생하면 displayError(예외) 메서드를 호출하여 오류를 처리합니다.
import 문을 포함해야 합니다. Android Studio는 가져오기 문을 자동으로 추가해 줍니다.