Xamarin.Android uygulamanıza kimlik doğrulaması ekleme

Genel Bakış

Bu konu başlığında, istemci uygulamanıza bir Mobil Uygulama kullanıcılarının kimliğini nasıl doğrulayabilirsiniz? Bu öğreticide, Azure Mobile Apps tarafından desteklenen bir kimlik sağlayıcısı kullanarak hızlı başlangıç projesine kimlik doğrulaması Mobile Apps. Mobil Uygulamada başarıyla kimlik doğrulaması yapıldıktan ve yetkilendirildikten sonra kullanıcı kimliği değeri görüntülenir.

Bu öğretici, Mobil Uygulama hızlı başlangıçlarını temel alan bir öğreticidir. Ayrıca önce Xamarin.Android uygulaması oluşturma öğreticisini de tamamlamanız gerekir. İndirilen hızlı başlangıç sunucusu projesini kullanasanız, projenize kimlik doğrulama uzantısı paketini eklemeniz gerekir. Sunucu uzantısı paketleri hakkında daha fazla bilgi için bkz . Azure hizmetleri için .NET arka uç sunucu SDK'sı ile Mobile Apps.

Kimlik doğrulaması için uygulama kaydetme ve App Services'i yapılandırma

İlk olarak, bir kimlik sağlayıcısının sitesine uygulama kaydetmeniz gerekir ve ardından sağlayıcı tarafından oluşturulan kimlik bilgilerini arka uçta Mobile Apps ayarlayacaksınız.

  1. Sağlayıcıya özgü yönergeleri izleyerek tercih ettiğiniz kimlik sağlayıcısını yapılandırma:

  2. Uygulamanıza desteklemek istediğiniz her sağlayıcı için önceki adımları tekrarlayın.

İzin Verilen Dış Yeniden Yönlendirme URL'lerine uygulama ekleme

Güvenli kimlik doğrulaması, uygulamanıza yeni bir URL düzeni tanımlamanızı gerektirir. Bu, kimlik doğrulama işlemi tamamlandıktan sonra kimlik doğrulama sisteminin uygulamanıza yeniden yönlendirilmesine olanak sağlar. Bu öğreticide, uygulama adı URL şemasını kullanıruz . Ancak, seçtiğiniz herhangi bir URL şemasını kullanabilirsiniz. Bu, mobil uygulamanıza özel olmalıdır. Sunucu tarafında yeniden yönlendirmeyi etkinleştirmek için:

  1. [Azure portal] içinde, dosyanızı App Service.

  2. Kimlik Doğrulaması / Yetkilendirme menü seçeneğine tıklayın.

  3. İzin Verilen Dış Yeniden Yönlendirme URL'leri alanına girin url_scheme_of_your_app://easyauth.callback. Bu url_scheme_of_your_app , mobil uygulamanıza göre URL Şemasıdır. Bir protokol için normal URL belirtimlerini izlemesi gerekir (yalnızca harf ve rakam kullanın ve bir harfle başlamanız gerekir). Seçtiğiniz dizeyi not edin çünkü mobil uygulama kodunuzu çeşitli yerlerdeKI URL Düzeni ile ayarlamanız gerekir.

  4. Tamam'a tıklayın.

  5. Kaydet’e tıklayın.

İzinleri kimliği doğrulanmış kullanıcılarla kısıtlama

Varsayılan olarak, arka uçta Mobile Apps API'ler anonim olarak çağrılabilir. Ardından, erişimi yalnızca kimliği doğrulanmış istemcilere kısıtlamak gerekir.

  • Node.js uç (Azure portal) :

    Uygulama ayarları Mobile Apps Kolay Tablolar'a tıklayın ve tabloyu seçin. İzinleri değiştir'e tıklayın, yalnızca tüm izinler için kimliği doğrulanmış erişim'i seçin ve kaydet'e tıklayın.

  • .NET arka uç (C#):

    Sunucu projesinde ControllersTodoItemController.cs'ye> gidin. Özniteliğini [Authorize]todoItemController sınıfına aşağıdaki gibi ekleyin. Erişimi yalnızca belirli yöntemlerle kısıtlamak için, bu özniteliği sınıf yerine yalnızca bu yöntemlere de uygulayabilirsiniz. Sunucu projesini yeniden yayımla.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js uç (Node.js aracılığıyla) :

    Tablo erişimi için kimlik doğrulaması gerektirmek için sunucu betiğine Node.js ekleyin:

      table.access = 'authenticated';
    

    Diğer ayrıntılar için bkz. Nasıl kullanılır: Tablolara erişim için kimlik doğrulaması gerektirme. Hızlı başlangıç kod projesini siteden indirme hakkında bilgi edinmek için bkz . Nasıl indirebilirsiniz: Git kullanarak Node.js arka uç hızlı başlangıç kod projesini indirme.

İstemci Visual Studio veya Xamarin Studio istemci projesini bir cihazda veya öykünücüde çalıştırın. Uygulama başlatıldıktan sonra 401 (Yetkisiz) durum koduyla işilmeyen bir özel durumun ortaya çıkar olduğunu doğrulayın. Bunun nedeni, uygulamanın Mobil Uygulama arka ucunıza kimliği doğrulanmamış bir kullanıcı olarak erişmeye çalışmasıdır. TodoItem tablosu artık kimlik doğrulaması gerektirir.

Ardından istemci uygulamasını, kimliği doğrulanmış bir kullanıcıyla Mobil Uygulama arka güncelleştirmesi ile kaynak isteği için güncelleştirin.

Uygulamaya kimlik doğrulaması ekleme

Uygulama, kullanıcıların Oturum aç düğmesine dokunmasını ve veriler görüntülenmeden önce kimlik doğrulamasını gerektirecek şekilde güncelleştirilir.

  1. TodoActivity sınıfına aşağıdaki kodu ekleyin:

     // Define an authenticated user.
     private MobileServiceUser user;
     private async Task<bool> Authenticate()
     {
             var success = false;
             try
             {
                 // Sign in with Facebook login using a server-managed flow.
                 user = await client.LoginAsync(this,
                     MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
                 CreateAndShowDialog(string.Format("you are now logged in - {0}",
                     user.UserId), "Logged in!");
    
                 success = true;
             }
             catch (Exception ex)
             {
                 CreateAndShowDialog(ex, "Authentication failed");
             }
             return success;
     }
    
     [Java.Interop.Export()]
     public async void LoginUser(View view)
     {
         // Load data only after authentication succeeds.
         if (await Authenticate())
         {
             //Hide the button after authentication succeeds.
             FindViewById<Button>(Resource.Id.buttonLoginUser).Visibility = ViewStates.Gone;
    
             // Load the data.
             OnRefreshItemsSelected();
         }
     }
    
     public override void OnResume()
     {
         base.OnResume();
         Xamarin.Essentials.Platform.OnResume();
     }
    

    Bu, kullanıcının kimliğini doğrulamak için yeni bir yöntem ve yeni oturum açma düğmesi için bir yöntem işleyicisi oluşturur. Yukarıdaki örnek kodda yer alan kullanıcının kimliği Facebook oturum açma bilgileri kullanılarak doğrulanır. Kimlik doğrulaması yapıldıktan sonra kullanıcı kimliğini görüntülemek için bir iletişim kutusu kullanılır.

    Not

    Facebook dışında bir kimlik sağlayıcısı kullanıyorsanız yukarıdaki LoginAsync değerine geçirilen değeri şu değerlerden biri ile değiştirebilirsiniz: MicrosoftAccount, Twitter, Google veya WindowsAzureActiveDirectory.

  2. OnCreate yönteminde aşağıdaki kod satırı silin veya açıklama satırı yapın:

     OnRefreshItemsSelected ();
    
  3. Activity_To_Do.axml dosyasında, mevcut AddItem düğmesinin önünde aşağıdaki LoginUser düğme tanımını ekleyin:

       <Button
         android:id="@+id/buttonLoginUser"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:onClick="LoginUser"
         android:text="@string/login_button_text" />
    
  4. Strings.xml resources dosyasına aşağıdaki öğeyi ekleyin:

     <string name="login_button_text">Sign in</string>
    
  5. Aşağıdaki AndroidManifest.xml dosyasını açın ve XML öğesinin içine aşağıdaki <application> kodu ekleyin:

     <activity android:name="com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity" android:launchMode="singleTop" android:noHistory="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="{url_scheme_of_your_app}" android:host="easyauth.callback" />
       </intent-filter>
     </activity>
    
  6. İstemci Visual Studio veya Xamarin Studio projesini bir cihazda veya öykünücüde çalıştırın ve seçtiğiniz kimlik sağlayıcısıyla oturum açın. Başarıyla oturum açtığınızda, uygulama oturum açma kimliğinizi ve todo öğelerinin listesini görüntüler ve verilerde güncelleştirmeler yapın.

Sorun giderme

Uygulama ile birlikte kilitlenmesi Java.Lang.NoSuchMethodError: No static method startActivity

Bazı durumlarda, destek paketlerinde çakışmalar yalnızca Visual Studio'da bir uyarı olarak görüntülenir, ancak çalışma zamanında bu özel durumla uygulama kilitleniyor. Bu durumda, projenize başvurulan tüm destek paketlerinin aynı sürüme sahip olduğundan emin olun. Azure Mobile Apps NuGet paketi, Android platformu için Xamarin.Android.Support.CustomTabs bağımlılığına sahiptir, yani projeniz daha yeni destek paketleri kullanıyorsa, çakışmaları önlemek için doğrudan gerekli sürüme sahip bu paketi yüklemeniz gerekir.