적용: 회색 X 기호가 있는 흰색 원 워크포스 테넌트는
흰색 확인 표시 기호가 있는 녹색 원을 외부 테넌트(자세한알아보기)
이 자습서에서는 isBrowserRequired()
오류가 발생하는 방법과 오류를 해결하는 방법을 보여 줍니다. 유틸리티 메서드는 isBrowserRequired()
네이티브 인증이 기능적이고 안전한 방식으로 인증 흐름을 완료하기에 충분하지 않은 다양한 시나리오에 대한 대체 메커니즘의 필요성을 확인합니다.
이 자습서에서는 다음을 수행합니다.
-
isBrowserRequired()
을 확인하세요. -
isBrowserRequired()
처리
필수 구성 요소
- 샘플 네이티브 Android 모바일 애플리케이션 사용자 로그인단계를 완료합니다. 이 문서에서는 테넌트 설정을 사용하여 구성하는 샘플 Android를 실행하는 방법을 보여 줍니다.
- 자습서의 단계를 완료합니다. 로그인 추가 및 이메일 일회성 암호사용하여 로그아웃합니다.
웹 폴백
네이티브 인증이 사용자 인증 흐름을 완료하기에 충분하지 않은 시나리오에는 웹 대체 메커니즘 사용합니다.
Android SDK를 초기화할 때 모바일 애플리케이션에서 지원하는 챌린지 유형(예: oob 및 암호 )을 지정합니다.
클라이언트 앱이 Microsoft Entra에 필요한 챌린지 유형을 지원할 수 없는 경우 Microsoft Entra의 응답은 클라이언트 앱이 브라우저에서 인증 흐름을 계속 진행해야 임을 나타냅니다. 예를 들어 oob 챌린지 유형으로 SDK를 초기화하지만 Microsoft Entra 관리 센터에서는 암호 인증 방법으로 전자 메일로 앱을 구성합니다.
이 경우 유틸리티 메서드 isBrowserRequired()
true를 반환합니다.
샘플 흐름
isBrowserRequired()
반환하는 예제 흐름과 처리 방법을 살펴보겠습니다.
초기화 중에 SDK에 전달하는 JSON 구성 파일에서 다음 코드 조각과 같이 oob 챌린지 형식만 추가합니다.
PublicClientApplication.createNativeAuthPublicClientApplication( requireContext(), R.raw.native_auth_config // JSON configuration file )
native_auth_config.json
구성에는 다음 코드 조각이 있습니다.{ "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 관리 센터에서 암호 전자 메일을 인증 방법으로 사용하도록 사용자 흐름 구성합니다.
SDK의
signUp(parameters)
메서드를 사용하여 등록 흐름을 시작합니다. Microsoft Entra에서SignUpError
및isBrowserRequired()
챌린지 유형을 예상하지만, 당신은 oob만 사용하여 SDK를 구성하였으므로, 검사를 통과하는 를 얻습니다.isBrowserRequired()
확인하고 처리하려면 다음 코드 조각을 사용합니다.val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }
이 코드는 네이티브 인증을 통해 인증 흐름을 완료할 수 없으며 브라우저를 사용해야 임을 나타냅니다.
isBrowserRequired() 오류 처리
이 오류를 처리하려면 클라이언트 앱이 브라우저를 시작하고 인증 흐름을 다시 시작해야 합니다. MSAL(Microsoft 인증 라이브러리) acquireToken()
메서드를 사용하여 수행할 수 있습니다.
이렇게 하려면 다음 단계를 사용합니다.
이전에 등록한 앱에 리디렉션 URI를 추가하려면 플랫폼 리디렉션 URL추가의 단계를 사용합니다.
클라이언트 앱의 구성 파일을 업데이트하려면 [redir 구성 단계]를 따르십시오.
SDK 구성의 ect URI](.. /external-id/customers/sample-mobile-app-android-kotlin-sign-in.md#configure-the-sample-android-mobile-application).
다음 코드 조각을 사용하여
acquireToken()
메서드를 사용하여 토큰을 획득합니다.val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { authClient.acquireToken( AcquireTokenParameters( AcquireTokenParameters.Builder() .startAuthorizationFromActivity(requireActivity()) .withScopes(getScopes()) .withCallback(getAuthInteractiveCallback()) ) // Result will contain account and tokens retrieved through the browser. ) }
ID 토큰, 액세스 토큰 및 새로 고침 토큰인 보안 토큰은 네이티브 인증 흐름을 통해 가져오는 토큰과 브라우저 위임 흐름을 통해 가져오는 토큰과 동일합니다.