Megosztás a következőn keresztül:


Hitelesítés hozzáadása Xamarin.Android-alkalmazáshoz

Áttekintés

Ez a témakör bemutatja, hogyan hitelesítheti egy mobilalkalmazás felhasználóit az ügyfélalkalmazásból. Ebben az oktatóanyagban hitelesítést ad hozzá a gyorsindítási projekthez egy, az Azure Mobile Apps. A mobilalkalmazás sikeres hitelesítése és hitelesítése után megjelenik a felhasználói azonosító értéke.

Ez az oktatóanyag a Mobilalkalmazás rövid útmutatón alapul. Először be kell fejeznie a Xamarin.Android-alkalmazás létrehozása oktatóanyagot is. Ha nem használja a letöltött gyors indítási kiszolgálóprojektet, hozzá kell adni a hitelesítési bővítménycsomagot a projekthez. További információ a kiszolgálóbővítmény-csomagokról: Az Azure-hoz készült .NET háttérkiszolgálói SDK Mobile Apps.

Az alkalmazás regisztrálása hitelesítéshez és App Services

Először regisztrálnia kell az alkalmazást egy identitásszolgáltató webhelyén, majd be kell állítania a szolgáltató által létrehozott hitelesítő adatokat a Mobile Apps háttéralkalmazásban.

  1. Konfigurálja az előnyben részesített identitásszolgáltatót a szolgáltatóra vonatkozó utasítások szerint:

  2. Ismételje meg az előző lépéseket minden olyan szolgáltatónál, amit támogatni szeretne az alkalmazásban.

Az alkalmazás hozzáadása az engedélyezett külső átirányítási URL-címekhez

A biztonságos hitelesítéshez új URL-sémát kell definiálni az alkalmazáshoz. Ez lehetővé teszi, hogy a hitelesítési rendszer visszairányítsa az alkalmazást a hitelesítési folyamat befejezése után. Ebben az oktatóanyagban az alkalmazásnév URL-sémát használjuk végig. Azonban bármilyen URL-sémát használhat. A mobilalkalmazás egyedinek kell lennie. Az átirányítás engedélyezése a kiszolgálóoldalon:

  1. A [Azure Portal] mezőben válassza ki App Service.

  2. Kattintson a Hitelesítés / Engedélyezés menüpontra.

  3. Az Engedélyezett külső átirányítási URL-címek beállításnál adja meg a következőt: url_scheme_of_your_app://easyauth.callback. Az url_scheme_of_your_app a sztringben a mobilalkalmazás URL-sémája. Egy protokoll normál URL-specifikációját kell követnie (csak betűket és számokat használjon, és betűvel kezdjen). Jegyezze fel a választott sztringet, mivel számos helyen módosítania kell a mobilalkalmazás kódját az URL-sémával.

  4. Kattintson az OK gombra.

  5. Kattintson a Mentés gombra.

A hitelesített felhasználókra vonatkozó engedélyek korlátozása

Alapértelmezés szerint a háttér Mobile Apps API-k névtelenül hívhatóak meg. Ezután korlátoznia kell a hozzáférést csak a hitelesített ügyfelekre.

  • Node.js háttér (a Azure Portal) segítségével:

    A saját Mobile Apps kattintson az Easy Tables (Egyszerű táblák) elemre , és válassza ki a táblát. Kattintson az Engedélyek módosítása elemre, válassza a Csak hitelesített hozzáférés minden engedélyhez lehetőséget, majd kattintson a Mentés gombra.

  • .NET-háttér (C#):

    A kiszolgálóprojektben lépjen a ControllersTodoItemController.cs> fájlra. Adja hozzá az [Authorize] attribútumot a TodoItemController osztályhoz az alábbiak szerint. Ha csak bizonyos metódusok elérésére korlátozza a hozzáférést, ezt az attribútumot a osztály helyett csak azokra a metódusra is alkalmazhatja. Tegye közzé újra a kiszolgálóprojektet.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js háttér (egy kódon Node.js keresztül):

    Ha hitelesítést szeretne megkövetelni a táblaeléréshez, adja hozzá a következő sort a Node.js-kiszolgálói szkripthez:

      table.access = 'authenticated';
    

    További részletekért lásd : How to: Require authentication for access to tables (Hogyan lehet: Hitelesítés megkövetelve a táblákhoz való hozzáféréshez). A gyorsindítási kódprojekt webhelyről való letöltésével kapcsolatos további információkért lásd : Útmutató: A Node.js háttér-rövid útmutató kódprojekt letöltése a Git használatával.

A Visual Studio Xamarin Studióban futtassa az ügyfélprojektet egy eszközön vagy emulátoron. Ellenőrizze, hogy az alkalmazás indításakor 401-es (Jogosulatlan) állapotkóddal nem kezelt kivétel történt-e. Ennek az az oka, hogy az alkalmazás nem hitelesített felhasználóként próbál hozzáférni a Mobile App háttéralkalmazáshoz. A TodoItem tábla hitelesítést igényel.

Ezután frissíteni fogja az ügyfélalkalmazást, hogy az egy hitelesített felhasználóval kérjen le erőforrásokat a Mobile App háttéralkalmazásból.

Hitelesítés hozzáadása az alkalmazáshoz

Az alkalmazás úgy frissül, hogy a felhasználók a Bejelentkezés gombra koppintva hitelesítsék magukat az adatok megjelenítése előtt.

  1. Adja hozzá a következő kódot a TodoActivity osztályhoz :

     // 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();
     }
    

    Ez létrehoz egy új metódust a felhasználók hitelesítéséhez és egy metóduskezelőt az új Bejelentkezés gombhoz . A fenti példakódban a felhasználót egy Facebook-bejelentkezéssel hitelesíti a rendszer. A rendszer egy párbeszédpanelen jeleníti meg a felhasználói azonosítót a hitelesítés után.

    Megjegyzés

    Ha a Facebooktól különböző identitásszolgáltatót használ, módosítsa a LoginAsync számára fent átadott értéket a következők egyikével: MicrosoftAccount, Twitter, Google vagy WindowsAzureActiveDirectory.

  2. Az OnCreate metódusban törölje vagy megjegyzésként fűzi hozzá a következő kódsort:

     OnRefreshItemsSelected ();
    
  3. A Activity_To_Do.axml fájlban adja hozzá a következő LoginUser gombdefiníciót a meglévő AddItem gomb előtt:

       <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. Adja hozzá a következő elemet Strings.xml erőforrásfájlhoz:

     <string name="login_button_text">Sign in</string>
    
  5. Nyissa meg AndroidManifest.xml fájlt, és adja hozzá a következő kódot az <application> XML-elemen belül:

     <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. A Visual Studio Xamarin Studióban futtassa az ügyfélprojektet egy eszközön vagy emulátoron, és jelentkezzen be a választott identitásszolgáltatóval. Ha sikeresen bejelentkezett, az alkalmazás megjeleníti a bejelentkezési azonosítót és a todo elemek listáját, és ön is frissíti az adatokat.

Hibaelhárítás

Az alkalmazás a következővel összeomlott: Java.Lang.NoSuchMethodError: No static method startActivity

Bizonyos esetekben a támogatási csomagok ütközése csak figyelmeztetésként jelenik meg a Visual Studióban, de az alkalmazás futásidőben összeomlik, ez a kivétel. Ebben az esetben meg kell győződni arról, hogy a projektben hivatkozott összes támogatási csomag azonos verziójú. Az Azure Mobile Apps NuGet csomag Android platform esetén Xamarin.Android.Support.CustomTabs-függőséggel rendelkezik, így ha a projektjében újabb támogatási csomagokat használ, akkor az ütközések elkerülése érdekében közvetlenül kell telepítenie ennek a csomagnak a szükséges verzióját.