Delen via


Verificatie toevoegen aan uw Xamarin.iOS-app

Overzicht

In dit onderwerp wordt beschreven hoe u gebruikers van een mobiele App Service-app verifieert vanuit uw clienttoepassing. In deze zelfstudie voegt u verificatie toe aan het quickstartproject Xamarin.iOS met behulp van een id-provider die wordt ondersteund door App Service. Nadat u met succes bent geverifieerd en geautoriseerd door uw mobiele app, wordt de gebruikers-id weergegeven en krijgt u toegang tot gegevens uit beperkte tabellen.

U moet eerst de zelfstudie voltooien Een Xamarin.iOS-app maken. Als u het gedownloade snelstartserverproject niet gebruikt, moet u het verificatieuitbreidingspakket toevoegen aan uw project. Zie Werken met de SDK van de .NET-back-endserver voor Azure Mobile Appsvoor meer informatie over serveruitbreidingspakketten.

Uw app registreren voor verificatie en App Services configureren

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 van 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 wilt ondersteunen in uw app.

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 terugkeren naar uw app zodra het verificatieproces is voltooid. In deze zelfstudie gebruiken we het URL-schema appname overal. 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 uw App Service in Azure Portal.

  2. Klik op de menuoptie Verificatie/autorisatie.

  3. Voer in de Toegestane externe omleidings-URL'surl_scheme_of_your_app://easyauth.callbackin. De url_scheme_of_your_app in deze string is het URL-schema voor uw mobiele applicatie. 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 moet aanpassen met het URL-schema op verschillende plaatsen.

  4. Klik op OK.

  5. Klik op Opslaan.

Machtigingen beperken voor geverifieerde gebruikers

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

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

    Klik in de instellingen van Mobile Apps op Easy Tables en selecteer de tabel. Klik op Machtigingen wijzigen, selecteer geverifieerde toegang alleen voor alle machtigingen en klik vervolgens op Opslaan.

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

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

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

    Als u verificatie voor tabeltoegang wilt vereisen, voegt u de volgende regel toe aan het Node.js serverscript:

      table.access = 'authenticated';
    

    Voor meer informatie, zie Hoe: Verificatie vereisen voor toegang tot tabellen. Zie How to: Download the Node.js backend quickstart code project using Gitvoor meer informatie over het downloaden van het quickstart-codeproject van uw site.

  • Voer in Visual Studio of Xamarin Studio het clientproject uit op een apparaat of emulator. Controleer of er een niet-verwerkte uitzondering met de statuscode 401 (Niet geautoriseerd) wordt gegenereerd nadat de app is gestart. De fout wordt vastgelegd in de console van het foutopsporingsprogramma. In Visual Studio zou u de fout in het uitvoervenster moeten zien.

    Deze niet-geautoriseerde fout treedt op omdat de app probeert toegang te krijgen tot de back-end van uw mobiele app als een niet-geverifieerde gebruiker. Voor de todoItem tabel is nu verificatie vereist.

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

Verificatie toevoegen aan de app

In deze sectie wijzigt u de app om een aanmeldingsscherm weer te geven voordat u gegevens weergeeft. Wanneer de app wordt gestart, wordt er geen verbinding gemaakt met uw App Service en worden er geen gegevens weergegeven. Na de eerste keer dat de gebruiker het verversingsgebaar uitvoert, verschijnt het aanmeldingsscherm; nadat de aanmelding is geslaagd, wordt de takenlijst weergegeven.

  1. Open in het clientproject het bestand QSTodoService.cs en voeg de volgende using-instructie toe en MobileServiceUser met toegangsrechten voor de QSTodoService-klasse:

    using UIKit;
    
    // Logged in user
    private MobileServiceUser user;
    public MobileServiceUser User { get { return user; } }
    
  2. Voeg een nieuwe methode toe met de naam Authenticate aan QSTodoService met de volgende definitie:

    public async Task Authenticate(UIViewController view)
    {
        try
        {
            AppDelegate.ResumeWithURL = url => url.Scheme == "{url_scheme_of_your_app}" && client.ResumeWithURL(url);
            user = await client.LoginAsync(view, MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
        }
        catch (Exception ex)
        {
            Console.Error.WriteLine (@"ERROR - AUTHENTICATION FAILED {0}", ex.Message);
        }
    }
    

    Notitie

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

  3. Open QSTodoListViewController.cs. Wijzig de methodedefinitie van ViewDidLoad om de aanroep naar RefreshAsync() dichtbij het einde te verwijderen.

    public override async void ViewDidLoad ()
    {
        base.ViewDidLoad ();
    
        todoService = QSTodoService.DefaultService;
        await todoService.InitializeStoreAsync();
    
        RefreshControl.ValueChanged += async (sender, e) => {
            await RefreshAsync();
        }
    
        // Comment out the call to RefreshAsync
        // await RefreshAsync();
    }
    
  4. Wijzig de methode RefreshAsync- om te verifiëren als de eigenschap Gebruiker null is. Voeg de volgende code toe boven aan de methodedefinitie:

    // start of RefreshAsync method
    if (todoService.User == null) {
        await QSTodoService.DefaultService.Authenticate(this);
        if (todoService.User == null) {
            Console.WriteLine("couldn't login!!");
            return;
        }
    }
    // rest of RefreshAsync method
    
  5. Open AppDelegate.csen voeg de volgende methode toe:

    public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
    {
        if (client.ResumeWithURL(app, url, options))
            return true;
        return base.OpenUrl(app, url, options);
    }
    
  6. Open het Info.plist-bestand en navigeer naar URL-typen in de sectie Geavanceerd. Configureer nu de identifier en de URL-schema's van uw URL-type en klik op URL-type toevoegen. URL-schema's moeten hetzelfde zijn als uw {url_scheme_of_your_app}.

  7. Voer in Visual Studio, verbonden met uw Mac-host of Visual Studio voor Mac, het clientproject uit dat is gericht op een apparaat of emulator. Controleer of de app geen gegevens weergeeft.

    Voer de vernieuwingsbeweging uit door de lijst met items omlaag te trekken, waardoor het aanmeldingsscherm wordt weergegeven. Zodra u geldige inloggegevens hebt ingevoerd, wordt de takenlijst weergegeven in de app en kunt u de gegevens wijzigen.