Verificatie toevoegen aan uw Xamarin.iOS-app

Overzicht

In dit onderwerp ziet u hoe u gebruikers van een App Service-app verifieert vanuit uw clienttoepassing. In deze zelfstudie voegt u verificatie toe aan het Xamarin.iOS-quickstart-project met behulp van een id-provider die wordt ondersteund door App Service. Nadat uw mobiele app is geverifieerd en geautoriseerd, wordt de waarde van de gebruikers-id weergegeven en hebt u toegang tot beperkte tabelgegevens.

U moet eerst de zelfstudie Een Xamarin.iOS-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 SDK voor de .NET-back-en-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 URL's voor externe omleiding

Voor beveiligde verificatie moet u een nieuw URL-schema voor uw app definiëren. Hierdoor kan het verificatiesysteem terugleiden naar uw app zodra het verificatieproces is voltooid. In deze zelfstudie gebruiken we overal de app-naam van het URL-schema . 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 Azure Portal in de App Service.

  2. Klik op de menuoptie Verificatie/ autorisatie.

  3. Voer in de toegestane URL's voor externe omleiding 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. U moet de code van uw mobiele toepassing op verschillende plaatsen aanpassen met het URL-schema.

  4. Klik op OK.

  5. Klik op Opslaan.

Machtigingen beperken voor geverifieerde gebruikers

STANDAARD kunnen API's in een Mobile Apps back-end 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 snelstartcodeproject voor de back-Node.js downloaden met Behulp van Git) voor meer informatie over het downloaden van het quickstart-codeproject 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. De fout wordt geregistreerd in de console van het foutopsporingsfoutopsporingspaneel. In Visual Studio ziet u dus de fout in het uitvoervenster.

    Deze niet-geautoriseerde fout tkomt op omdat de app als niet-geautoriseerde gebruiker toegang probeert te krijgen tot de back-end van uw mobiele app. 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

In deze sectie wijzigt u de app om een aanmeldingsscherm weer te geven voordat gegevens worden weergegeven. Wanneer de app wordt gestart, wordt er geen verbinding met uw App Service en worden er geen gegevens weergegeven. Na de eerste keer dat de gebruiker de vernieuwingsbewegingen uitvoert, wordt het aanmeldingsscherm weergegeven; na een geslaagde aanmelding wordt de lijst met todo-items weergegeven.

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

    using UIKit;
    
    // Logged in user
    private MobileServiceUser user;
    public MobileServiceUser User { get { return user; } }
    
  2. Voeg een nieuwe methode met de naam Authenticate toe 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 facebook gebruikt, wijzigt u de waarde die hierboven is doorgegeven aan LoginAsync in een van de volgende opties: MicrosoftAccount, Twitter, Google of WindowsAzureActiveDirectory.

  3. Open QSTodoListViewController.cs. Wijzig de methodedefinitie van ViewDidLoad, waarbij de aanroep naar RefreshAsync() aan het einde wordt verwijderd:

    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 of de eigenschap Gebruiker null is. Voeg de volgende code toe aan het begin van 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.cs en 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 bestand Info.plist en navigeer naar URL-typen in de sectie Geavanceerd. Configureer nu de id ende 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 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 er geen gegevens worden weergegeven in de app.

    Voer de vernieuwingsbewegingen uit door de lijst met items omlaag te halen, waardoor het aanmeldingsscherm wordt weergegeven. Nadat u geldige referenties hebt ingevoerd, wordt in de app de lijst met todo-items weergegeven en kunt u de gegevens updaten.