Verificatie toevoegen aan uw Xamarin.Android-app

Overzicht

In dit onderwerp ziet u hoe u gebruikers van een mobiele app verifieert vanuit uw clienttoepassing. In deze zelfstudie voegt u verificatie toe aan het quickstart-project met behulp van een id-provider die wordt ondersteund door Azure Mobile Apps. Nadat is geverifieerd en geautoriseerd in de mobiele app, wordt de waarde van de gebruikers-id weergegeven.

Deze zelfstudie is gebaseerd op de quickstart Voor mobiele apps. U moet ook eerst de zelfstudie Een Xamarin.Android-app maken voltooien. Als u het gedownloade quickstart-serverproject niet gebruikt, moet u het verificatie-extensiepakket toevoegen aan uw project. Zie Work with the .NET backend server SDK for Azure Mobile Apps (Werken met de .NET-back-endserver-SDK voor Azure Mobile Apps) voor meer informatie over serverextensiepakketten.

Registreer uw app voor verificatie en configureer App Services

Eerst moet u uw app registreren op de site van een id-provider en vervolgens stelt u de door de provider gegenereerde referenties in de back-end Mobile Apps in.

  1. Configureer uw voorkeurs-id-provider door de providerspecifieke instructies te volgen:

  2. Herhaal de vorige stappen voor elke provider die u in uw app wilt ondersteunen.

Uw app toevoegen aan de toegestane externe omleidings-URL's

Voor beveiligde verificatie moet u een nieuw URL-schema voor uw app definiëren. Hierdoor kan het verificatiesysteem terug naar uw app worden omgeleid zodra het verificatieproces is voltooid. In deze zelfstudie gebruiken we overal het URL-schema appname . U kunt echter elk URL-schema gebruiken dat u kiest. Deze moet uniek zijn voor uw mobiele toepassing. De omleiding aan de serverzijde inschakelen:

  1. Selecteer in de [Azure Portal] uw App Service.

  2. Klik op de menuoptie Verificatie/ autorisatie.

  3. Voer in de toegestane EXTERNE omleidings-URL's in url_scheme_of_your_app://easyauth.callback. De url_scheme_of_your_app in deze tekenreeks is het URL-schema voor uw mobiele toepassing. Deze moet de normale URL-specificatie voor een protocol volgen (gebruik alleen letters en cijfers en begin met een letter). Noteer de tekenreeks die u kiest, omdat u de code van uw mobiele toepassing op verschillende plaatsen moet aanpassen met het URL-schema.

  4. Klik op OK.

  5. Klik op Opslaan.

Machtigingen beperken voor geverifieerde gebruikers

API's in een back Mobile Apps-end kunnen standaard anoniem worden aangeroepen. Vervolgens moet u de toegang beperken tot alleen geverifieerde clients.

  • Node.js back-end (via de Azure Portal) :

    Klik in Mobile Apps instellingen op Eenvoudige tabellen en selecteer uw tabel. Klik op Machtigingen wijzigen, selecteer Alleen geverifieerde toegang voor alle machtigingen en klik vervolgens op Opslaan.

  • .NET-back-end (C#):

    Navigeer in het serverproject naar ControllersTodoItemController.cs>. Voeg het [Authorize] kenmerk als volgt toe aan de klasse TodoItemController . Als u de toegang alleen wilt beperken tot specifieke methoden, kunt u dit kenmerk ook alleen toepassen op die methoden in plaats van op de klasse . Het serverproject opnieuw publiceren.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js back-Node.js (via Node.js code) :

    Als u verificatie wilt vereisen voor toegang tot de tabel, voegt u de volgende regel toe aan Node.js serverscript:

      table.access = 'authenticated';
    

    Zie How to: Require authentication for access to tables (Verificatie vereisen voor toegang tot tabellen) voor meer informatie. Zie How to: Download the Node.js backend quickstart code project using Git (Het codeproject voor de snelstartgids voor de back-Node.js downloaden met git) voor meer informatie over het downloaden van het codeproject uit de snelstartgids van uw site.

Voer Visual Studio of Xamarin Studio het clientproject uit op een apparaat of emulator. Controleer of er een onverhandelde uitzondering met de statuscode 401 (Niet geautoriseerd) wordt gemaakt nadat de app is gestart. Dit gebeurt omdat de app toegang probeert te krijgen tot de back-end van uw mobiele app als een niet-geautheticeerde gebruiker. Voor de todoItem-tabel is nu verificatie vereist.

Vervolgens gaat u de client-app bijwerken om resources aan te vragen bij de back-end van de mobiele app met een geverifieerde gebruiker.

Verificatie toevoegen aan de app

De app wordt bijgewerkt zodat gebruikers op de knop Aanmelden moeten tikken en moeten verifiëren voordat gegevens worden weergegeven.

  1. Voeg de volgende code toe aan de klasse TodoActivity :

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

    Hiermee maakt u een nieuwe methode voor het verifiëren van een gebruiker en een methode-handler voor een nieuwe knop Aanmelden. De gebruiker in de bovenstaande voorbeeldcode wordt geverifieerd met behulp van een Facebook-aanmelding. Er wordt een dialoogvenster gebruikt om de gebruikers-id weer te geven nadat deze is geverifieerd.

    Notitie

    Als u een andere id-provider dan Facebook gebruikt, wijzigt u de waarde die hierboven is doorgegeven aan LoginAsync in een van de volgende opties: MicrosoftAccount, Twitter, Google of WindowsAzureActiveDirectory.

  2. Verwijder in de methode OnCreate de volgende coderegel of verwijder er commentaar van:

     OnRefreshItemsSelected ();
    
  3. Voeg in Activity_To_Do.axml de volgende loginuser-knopdefinitie toe vóór de bestaande knop AddItem :

       <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. Voeg het volgende element toe aan het Strings.xml resourcesbestand:

     <string name="login_button_text">Sign in</string>
    
  5. Open het AndroidManifest.xml bestand en voeg de volgende code toe in het <application> XML-element:

     <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. Voer Visual Studio of Xamarin Studio het clientproject uit op een apparaat of emulator en meld u aan met de door u gekozen id-provider. Wanneer u bent aangemeld, geeft de app uw aanmeldings-id en de lijst met todo-items weer en kunt u de gegevens updaten.

Problemen oplossen

De toepassing is vastgelopen met Java.Lang.NoSuchMethodError: No static method startActivity

In sommige gevallen worden conflicten in de ondersteuningspakketten weergegeven als een waarschuwing in Visual Studio, maar de toepassing loopt vast met deze uitzondering tijdens runtime. In dit geval moet u ervoor zorgen dat alle ondersteuningspakketten waarnaar in uw project wordt verwezen, dezelfde versie hebben. Het Azure Mobile Apps NuGet-pakket heeft Xamarin.Android.Support.CustomTabs-afhankelijkheid voor het Android-platform, dus als uw project gebruikmaakt van nieuwere ondersteuningspakketten, moet u dit pakket met de vereiste versie rechtstreeks installeren om conflicten te voorkomen.