적용: 회색 X 기호가 있는 흰색 원 인력 임차인은 흰색 확인 표시 기호가 있는 녹색 원을
외부 임차인(자세히 알아보기)
이 자습서에서는 ANDROID 모바일 앱에 MSAL(Microsoft 인증 라이브러리) 네이티브 인증 SDK를 추가하는 방법을 보여 줍니다.
이 자습서에서는 다음을 수행합니다.
- MSAL 종속성을 추가하세요.
- 구성 파일을 만듭니다.
- MSAL SDK 인스턴스를 만듭니다.
필수 구성 요소
- 아직 하지 않았다면, 샘플 Android(Kotlin) 모바일 앱에서 네이티브 인증 을 사용하여 사용자 로그인 지침을 따르고, 외부 테넌트에서 앱을 등록합니다. 다음 단계를 완료해야 합니다.
- 애플리케이션을 등록합니다.
- 공용 클라이언트 및 네이티브 인증 흐름을 사용하도록 설정합니다.
- API 권한을 부여합니다.
- 사용자 흐름을 만듭니다.
- 앱을 사용자 흐름과 연결합니다.
- Android 프로젝트입니다. 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.+' //... }
Android Studio에서 파일>Gradle 파일과 프로젝트 동기화를 선택합니다.
구성 파일 만들기
JSON 구성 설정을 통해 애플리케이션(클라이언트) ID와 같은 필수 테넌트 식별자를 MSAL SDK에 전달합니다.
다음 단계를 사용하여 구성 파일을 만듭니다.
Android Studio의 프로젝트 창에서 app\src\main\res으로 이동하십시오.
마우스 오른쪽 버튼을 클릭한 다음 새 >을선택합니다. 새 디렉터리 이름으로
raw
을 입력하고 확인을 선택합니다.app\src\main\res\raw
auth_config_native_auth.json
라는 새 JSON 파일을 만듭니다.auth_config_native_auth.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 } } //...
다음 자리 표시자를 Microsoft Entra 관리 센터에서 가져온 테넌트 값으로 바꾸십시오.
-
Enter_the_Application_Id_Here
자리 표시자를 이전에 등록한 앱의 애플리케이션(클라이언트) ID로 바꿉니다. -
Enter_the_Tenant_Subdomain_Here
디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어 테넌트 주 도메인이contoso.onmicrosoft.com
경우contoso
사용합니다. 테넌트 이름이 없는 경우 테넌트 세부 정보를읽는 방법을 알아봅니다.
챌린지 유형은 앱이 지원하는 인증 방법에 대해 Microsoft Entra에 알리는 데 사용하는 값 목록입니다.
- 전자 메일 일회용 암호를 사용하여 등록 및 로그인 흐름의 경우
["oob"]
사용합니다. - 전자 메일 및 암호가 있는 등록 및 로그인 흐름의 경우
["oob","password"]
사용합니다. - SSPR(셀프 서비스 암호 재설정)의 경우
["oob"]
사용합니다.
-
선택 사항: 로깅 구성
앱을 생성할 때 로깅 콜백을 만들어 SDK에서 로그를 출력할 수 있도록 로깅을 활성화하세요.
import com.microsoft.identity.client.Logger
fun initialize(context: Context) {
Logger.getInstance().setExternalLogger { tag, logLevel, message, containsPII ->
Logs.append("$tag $logLevel $message")
}
}
로거를 구성하려면 구성 파일에 auth_config_native_auth.json
섹션을 추가해야 합니다.
//...
{
"logging": {
"pii_enabled": false,
"log_level": "INFO",
"logcat_enabled": true
}
}
//...
- logcat_enabled: 라이브러리의 로깅 기능을 사용하도록 설정합니다.
- pii_enabled: 개인 데이터가 포함된 메시지 또는 조직 데이터가 기록되는지 여부를 지정합니다. false로 설정하면 로그에 개인 데이터가 포함되지 않습니다. true로 설정하면 로그에 개인 데이터가 포함될 수 있습니다.
-
log_level: 어느 로깅 수준을 활성화할지 결정하는 데 사용합니다. Android는 다음 로그 수준을 지원합니다.
- 오류
- 경고
- 정보
- 장황한
Android용 MSAL의 로깅에 대한 자세한 내용은 MSAL 로깅을 참조하세요.
네이티브 인증 MSAL SDK 인스턴스 만들기
onCreate()
메서드에서 앱이 네이티브 인증을 통해 테넌트에 대한 인증을 수행할 수 있도록 MSAL 인스턴스를 만듭니다.
createNativeAuthPublicClientApplication()
메서드는 authClient
인스턴스를 반환합니다. 이전에 만든 JSON 구성 파일을 매개 변수로 전달합니다.
//...
authClient = PublicClientApplication.createNativeAuthPublicClientApplication(
this,
R.raw.auth_config_native_auth
)
//...
코드는 다음 코드 조각과 유사하게 표시됩니다.
class MainActivity : AppCompatActivity() {
private lateinit var authClient: INativeAuthPublicClientApplication
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
authClient = PublicClientApplication.createNativeAuthPublicClientApplication(
this,
R.raw.auth_config_native_auth
)
getAccountState()
}
private fun getAccountState() {
CoroutineScope(Dispatchers.Main).launch {
val accountResult = authClient.getCurrentAccount()
when (accountResult) {
is GetAccountResult.AccountFound -> {
displaySignedInState(accountResult.resultValue)
}
is GetAccountResult.NoAccountFound -> {
displaySignedOutState()
}
}
}
}
private fun displaySignedInState(accountResult: AccountState) {
val accountName = accountResult.getAccount().username
val textView: TextView = findViewById(R.id.accountText)
textView.text = "Cached account found: $accountName"
}
private fun displaySignedOutState() {
val textView: TextView = findViewById(R.id.accountText)
textView.text = "No cached account found"
}
}
- 개체를 반환하는
getCurrentAccount()
사용하여 캐시된 계정을 검색합니다.accountResult
. - 사용자가 지속적으로 관리되는 계정으로 식별되면,
GetAccountResult.AccountFound
을 사용하여 로그인 상태를 표시합니다. - 그렇지 않으면
GetAccountResult.NoAccountFound
사용하여 로그아웃 상태를 표시합니다.
import 문을 반드시 포함하십시오. Android Studio는 자동으로 가져오기 문을 포함합니다.
다음 단계
자습서: 네이티브 인증 사용하여 Android 모바일 앱에 등록 추가