Sdílet prostřednictvím


Přidání ověřování do aplikace Xamarin. iOS

Přehled

v tomto tématu se dozvíte, jak ověřit uživatele App Service mobilní aplikace z klientské aplikace. V tomto kurzu přidáte do projektu pro rychlé zprovoznění Xamarin. iOS ověřování pomocí zprostředkovatele identity, který podporuje App Service. Po úspěšném ověření a autorizaci vaší mobilní aplikace se zobrazí hodnota ID uživatele a budete mít přístup k omezeným datům tabulky.

Nejdřív musíte dokončit kurz Vytvoření aplikace Xamarin. iOS. Pokud nepoužíváte stažený projekt serveru pro rychlé zahájení, je nutné přidat balíček rozšíření ověřování do projektu. Další informace o balíčcích rozšíření serveru najdete v tématu práce s back-end serverem .NET SDK pro Azure Mobile Apps.

Zaregistrovat aplikaci pro ověřování a nakonfigurovat App Services

Nejdřív je potřeba zaregistrovat aplikaci na webu zprostředkovatele identity a potom nastavit přihlašovací údaje vygenerované zprostředkovatelem v Mobile Apps back-endu.

  1. Podle pokynů pro konkrétního poskytovatele nakonfigurujte preferovaného zprostředkovatele identity:

  2. Opakujte předchozí kroky pro každého poskytovatele, kterého chcete ve své aplikaci podporovat.

Přidání aplikace do povolených externích adres URL pro přesměrování

Zabezpečené ověřování vyžaduje, abyste pro svou aplikaci nadefinovali nové schéma URL. To umožňuje, aby systém ověřování po dokončení procesu ověřování přesměroval zpátky do vaší aplikace. V tomto kurzu používáme celé rozhraní příkazového schématu URL. Můžete ale použít jakékoli schéma URL, které si zvolíte. Měl by být jedinečný pro vaši mobilní aplikaci. Zapnutí přesměrování na straně serveru:

  1. v Azure Portalvyberte App Service.

  2. Klikněte na možnost nabídka ověřování/autorizace .

  3. Do pole povolené externí adresy URL pro přesměrovánízadejte url_scheme_of_your_app://easyauth.callback . Url_scheme_of_your_app v tomto řetězci je schéma adresy URL vaší mobilní aplikace. Měla by následovat po běžné specifikaci adresy URL protokolu (použijte pouze písmena a čísla a začněte písmenem). Měli byste si poznamenat řetězec, který si zvolíte, protože budete muset upravit kód mobilní aplikace pomocí schématu adresy URL na několika místech.

  4. Klikněte na OK.

  5. Klikněte na Uložit.

Omezení oprávnění pro ověřené uživatele

Ve výchozím nastavení lze rozhraní API v Mobile Appsm back-endu vyvolat anonymně. Dál je potřeba omezit přístup jenom na ověřené klienty.

  • Node.js back-end (přes Azure Portal) :

    V nastavení Mobile Apps klikněte na možnost snadné tabulky a vyberte tabulku. Klikněte na změnit oprávnění, vyberte ověřený přístup jenom pro všechna oprávnění a pak klikněte na Uložit.

  • Back-end .NET (C#):

    V projektu serveru přejděte na Controllers>TodoItemController. cs. [Authorize]Přidejte atribut do třídy TodoItemController následujícím způsobem. Chcete-li omezit přístup pouze na konkrétní metody, můžete také použít tento atribut pouze pro tyto metody namísto třídy. Publikujte projekt serveru znovu.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js back-end (přes Node.js kód) :

    Pokud chcete pro přístup k tabulce vyžadovat ověření, přidejte do skriptu Node.js serveru následující řádek:

      table.access = 'authenticated';
    

    Další podrobnosti najdete v tématu How to: vyžadovat ověřování pro přístup k tabulkám. Informace o tom, jak stáhnout projekt kódu pro rychlé zprovoznění z webu, najdete v tématu How to: download Node.js back-endu pro rychlé nasazení kódu pomocí Gitu.

  • v Visual Studio nebo Xamarin Studio spusťte klientský projekt na zařízení nebo emulátoru. Ověřte, zda je po spuštění aplikace vyvolána neošetřená výjimka se stavovým kódem 401 (Neautorizováno). Selhání je zaznamenáno do konzoly ladicího programu. takže v Visual Studio byste měli vidět chybu v okně výstup.

    K této neautorizované chybě dochází, protože se aplikace pokusí získat přístup k back-endu mobilní aplikace jako neověřeného uživatele. Tabulka TodoItem nyní vyžaduje ověření.

V dalším kroku aktualizujete klientskou aplikaci tak, aby požadovala prostředky z back-endu mobilní aplikace pomocí ověřeného uživatele.

Přidání ověřování do aplikace

V této části upravíte aplikaci tak, aby před zobrazením dat zobrazovala přihlašovací obrazovku. po spuštění aplikace se nepřipojí k vašemu App Service a nezobrazí se žádná data. Po prvním spuštění gesta obnovení uživatelem se zobrazí přihlašovací obrazovka. Po úspěšném přihlášení se zobrazí seznam položek todo.

  1. V projektu klienta otevřete soubor QSTodoService. cs a přidejte následující příkaz using a MobileServiceUser s přistupujícím objektem do třídy QSTodoService:

    using UIKit;
    
    // Logged in user
    private MobileServiceUser user;
    public MobileServiceUser User { get { return user; } }
    
  2. Přidejte novou metodu s názvem Authenticate do QSTodoService s následující definicí:

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

    Poznámka

    Pokud používáte jiného poskytovatele identity než Facebook, změňte hodnotu předanou na LoginAsync výše na jednu z následujících hodnot: MicrosoftAccount, Twitter, Googlenebo WindowsAzureActiveDirectory.

  3. Otevřete QSTodoListViewController. cs. Upravte definici metody ViewDidLoad odebrání volání RefreshAsync () poblíž konce:

    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. Upravte metodu RefreshAsync na ověřování, pokud má vlastnost User hodnotu null. Do horní části definice metody přidejte následující kód:

    // 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. Otevřete AppDelegate. csa přidejte následující metodu:

    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. Otevřete soubor info. plist , v části Upřesnit přejděte na typy adres URL . Nyní nakonfigurujte identifikátor a schémata adres URL typu adresy URL a klikněte na tlačítko Přidat typ adresy URL. Schémata URL by měla být stejná jako vaše {url_scheme_of_your_app}.

  7. v Visual Studio připojte se k hostiteli Mac nebo Visual Studio pro Mac spusťte projekt klienta cílící na zařízení nebo emulátor. Ověřte, že aplikace nezobrazuje žádná data.

    Pomocí gesta aktualizace můžete zobrazit seznam položek, což způsobí zobrazení přihlašovací obrazovky. Po úspěšném zadání platných přihlašovacích údajů se v aplikaci zobrazí seznam položek TODO a aktualizace dat můžete provést.