Aracılığıyla paylaş


Öğretici: Android uygulamasında web geri dönüşünü destekleme

Şunun için geçerlidir: Aşağıdaki içeriğin dış kiracılar için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu öğreticide isBrowserRequired() hatanın nasıl oluştuğu ve bunu nasıl çözebileceğiniz gösterilmektedir. yardımcı programı yöntemi isBrowserRequired(), yerel kimlik doğrulamasının kimlik doğrulama akışını işlevsel ve güvenli bir şekilde tamamlamak için yeterli olmadığı çeşitli senaryolar için geri dönüş mekanizması gereksinimini denetler.

Bu öğreticide şunları yapacaksınız:

  • isBrowserRequired() kontrol et
  • İşle isBrowserRequired()

Önkoşullar

Web geri dönüşü

Yerel kimlik doğrulamasının kullanıcı kimlik doğrulaması akışını tamamlamak için yeterli olmadığı senaryolar için web geri dönüş mekanizmasını kullanın.

Android SDK'sını başlatırken, mobil uygulamanızın desteklediği oob ve parolagibi sınama türlerini belirtirsiniz.

İstemci uygulamanız Microsoft Entra'nın gerektirdiği sınama türünü destekleyemiyorsa, Microsoft Entra'nın yanıtı istemci uygulamasının tarayıcıda kimlik doğrulama akışıyla devam etmesi gerektiğini gösterir. Örneğin, SDK'yı oob sınama türüyle başlatırsınız, ancak Microsoft Entra yönetim merkezinde uygulamayı parola kimlik doğrulama yöntemiyle bir e-postayla yapılandırabilirsiniz.

Bu durumda, isBrowserRequired() yardımcı programı yöntemi true döndürür.

Örnek proses akışı

şimdi isBrowserRequired()döndüren örnek bir akışa ve bunu nasıl işleyebileceğinize bakalım:

  1. Başlatma sırasında SDK'ya geçirdiğiniz JSON yapılandırma dosyasında, aşağıdaki kod parçacığını gösterildiği gibi yalnızca oob sınama türünü ekleyin:

    PublicClientApplication.createNativeAuthPublicClientApplication( 
        requireContext(), 
        R.raw.native_auth_config  // JSON configuration file 
    ) 
    

    native_auth_config.json yapılandırması aşağıdaki kod parçacığına sahiptir:

    {
      "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 yönetim merkezinde kullanıcı akışınızı kimlik doğrulama yöntemi olarak E-posta ve parola kullanacak şekilde yapılandırın.

  3. SDK'nın signUp(parameters) yöntemini kullanarak bir kaydolma akışı başlatın. Microsoft Entra SignUpError parola ve isBrowserRequired() sınama türü beklediğinden denetimini geçen bir alırsınız, ancak SDK'nızı yalnızca oobile yapılandırmış olursunuz.

  4. isBrowserRequired()denetlemek ve işlemek için aşağıdaki kod parçacığını kullanın:

    val parameters = NativeAuthSignUpParameters(username = email)
    val actionResult: SignUpResult = authClient.signUp(parameters)
    
    if (actionResult is SignUpError && actionResult.isBrowserRequired()) { 
        // Handle "browser required" error
    } 
    

    Kod, kimlik doğrulama akışının yerel kimlik doğrulaması aracılığıyla tamamlanamadığını ve bir tarayıcının kullanılması gerektiğini gösterir.

isBrowserRequired() hatasını yönetme

Bu hatayı işlemek için istemci uygulamasının bir tarayıcı başlatması ve kimlik doğrulama akışını yeniden başlatması gerekir. Microsoft Authentication Library (MSAL) acquireToken() yöntemini kullanarak bunu yapabilirsiniz.

Bunu yapmak için aşağıdaki adımları kullanın:

  1. Daha önce kaydettiğiniz uygulamaya yeniden yönlendirme URI'si eklemek için Platform yeniden yönlendirme URL'si eklemeiçindeki adımları kullanın.

  2. İstemci uygulamanızın yapılandırma dosyasını güncelleştirmek için Örnek uygulamayı yapılandırma'daki adımları kullanın.

  3. acquireToken() yöntemini kullanarak belirteç almak için aşağıdaki kod parçacığını kullanın:

    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.
        )
    } 
    

Kimlik belirteci, erişim belirteci ve yenileme belirteci olan güvenlik belirteçleri, yerel kimlik doğrulama akışı aracılığıyla elde ettiğiniz belirteç, tarayıcı tarafından temsilci olarak atanan akış aracılığıyla aldığınız belirteçle aynıdır.