다음을 통해 공유


자습서: Android 앱에서 웹 대체 지원

적용: .회색 X 기호가 있는 흰색 원 워크포스 테넌트는 .흰색 확인 표시 기호가 있는 녹색 원을 외부 테넌트(자세한알아보기)

이 자습서에서는 isBrowserRequired() 오류가 발생하는 방법과 오류를 해결하는 방법을 보여 줍니다. 유틸리티 메서드는 isBrowserRequired() 네이티브 인증이 기능적이고 안전한 방식으로 인증 흐름을 완료하기에 충분하지 않은 다양한 시나리오에 대한 대체 메커니즘의 필요성을 확인합니다.

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

  • isBrowserRequired()을 확인하세요.
  • isBrowserRequired() 처리

필수 구성 요소

웹 폴백

네이티브 인증이 사용자 인증 흐름을 완료하기에 충분하지 않은 시나리오에는 웹 대체 메커니즘 사용합니다.

Android SDK를 초기화할 때 모바일 애플리케이션에서 지원하는 챌린지 유형(예: oob 및 암호 )을 지정합니다.

클라이언트 앱이 Microsoft Entra에 필요한 챌린지 유형을 지원할 수 없는 경우 Microsoft Entra의 응답은 클라이언트 앱이 브라우저에서 인증 흐름을 계속 진행해야 임을 나타냅니다. 예를 들어 oob 챌린지 유형으로 SDK를 초기화하지만 Microsoft Entra 관리 센터에서는 암호 인증 방법으로 전자 메일로 앱을 구성합니다.

이 경우 유틸리티 메서드 isBrowserRequired() true를 반환합니다.

샘플 흐름

isBrowserRequired()반환하는 예제 흐름과 처리 방법을 살펴보겠습니다.

  1. 초기화 중에 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
      }
    } 
    
  2. Microsoft Entra 관리 센터에서 암호 전자 메일을 인증 방법으로 사용하도록 사용자 흐름 구성합니다.

  3. SDK의 signUp(parameters) 메서드를 사용하여 등록 흐름을 시작합니다. Microsoft Entra에서 SignUpErrorisBrowserRequired() 챌린지 유형을 예상하지만, 당신은 oob만 사용하여 SDK를 구성하였으므로, 검사를 통과하는 를 얻습니다.

  4. 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() 메서드를 사용하여 수행할 수 있습니다.

이렇게 하려면 다음 단계를 사용합니다.

  1. 이전에 등록한 앱에 리디렉션 URI를 추가하려면 플랫폼 리디렉션 URL추가의 단계를 사용합니다.

  2. 클라이언트 앱의 구성 파일을 업데이트하려면 [redir 구성 단계]를 따르십시오.

  3. SDK 구성의 ect URI](.. /external-id/customers/sample-mobile-app-android-kotlin-sign-in.md#configure-the-sample-android-mobile-application).

  4. 다음 코드 조각을 사용하여 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 토큰, 액세스 토큰 및 새로 고침 토큰인 보안 토큰은 네이티브 인증 흐름을 통해 가져오는 토큰과 브라우저 위임 흐름을 통해 가져오는 토큰과 동일합니다.

  • iOS 샘플 앱을 실행하는 방법을 배웁니다.
  • 이메일 일회용 암호 사용하여네이티브 인증 API 참조를 살펴봅니다.
  • 챌린지 유형에 대해 알아봅니다.