Přidání ověřování do aplikace Xamarin.iOS
- Android
- Cordova
- iOS
- Windows
- Xamarin.Android
- Xamarin.Forms
- Xamarin.iOS
Přehled
V tomto tématu se dozvíte, jak ověřovat uživatele mobilní aplikace App Service z klientské aplikace. V tomto kurzu přidáte do projektu rychlého startu Xamarin.iOS ověřování pomocí zprostředkovatele identity podporovaného službou App Service. Po úspěšném ověření a autorizaci mobilní aplikací se zobrazí hodnota ID uživatele a budete mít přístup k datům tabulky s omezeným přístupem.
Nejprve musíte dokončit kurz Vytvoření aplikace Xamarin.iOS. Pokud stažený projekt serveru Rychlý start nepoužíváte, musíte do projektu přidat balíček rozšíření ověřování. Další informace o balíčcích rozšíření serveru najdete v tématu Práce se sadou SDK back-endového serveru .NET pro azure Mobile Apps.
Registrace aplikace pro ověřování a konfigurace App Services
Nejprve je potřeba zaregistrovat aplikaci na webu zprostředkovatele identity a pak v back-endu Mobile Apps nastavit přihlašovací údaje vygenerované zprostředkovatelem.
Nakonfigurujte svého upřednostňovaného poskytovatele identity podle pokynů specifických pro poskytovatele:
Opakujte předchozí kroky pro každého poskytovatele, kterého chcete ve své aplikaci podporovat.
Přidání aplikace do povolených adres URL pro externí přesměrování
Zabezpečené ověřování vyžaduje, abyste definovali nové schéma adres URL pro vaši aplikaci. Systém ověření tak může po dokončení ověřovacího procesu přesměrovat zpět k vaší aplikaci. V tomto kurzu používáme schéma adresy URL appname v celém textu. Můžete ale použít libovolné schéma adres URL, které zvolíte. Měla by být jedinečná pro vaši mobilní aplikaci. Povolení přesměrování na straně serveru:
Na webu Azure Portal vyberte svou službu App Service.
Klikněte na možnost Ověřování / Autorizace.
Do povolených adres URL externího přesměrování zadejte
url_scheme_of_your_app://easyauth.callback
. Url_scheme_of_your_app v tomto řetězci je schéma adres URL pro vaši mobilní aplikaci. Měl by dodržovat normální specifikaci adresy URL pro protokol (používejte jenom písmena a číslice a začněte písmenem). Měli byste si poznamenat řetězec, který zvolíte, protože budete muset upravit kód mobilní aplikace pomocí schématu adresy URL na několika místech.Klikněte na OK.
Klikněte na Uložit.
Omezení oprávnění pro ověřené uživatele
Ve výchozím nastavení je možné rozhraní API v back-endu Mobile Apps vyvolat anonymně. Dále je potřeba omezit přístup jenom na ověřené klienty.
Backend Node.js (prostřednictvím portálu Azure):
V nastavení Mobile Apps klikněte na Snadné tabulky a vyberte tabulku. Klepněte na tlačítko Změnit oprávnění, vyberte Ověřený přístup pouze pro všechna oprávnění a potom klepněte na tlačítko Uložit.
.NET backend (C#):
V projektu serveru přejděte na Kontrolery>TodoItemController.cs. Přidejte atribut
[Authorize]
do třídy TodoItemController následujícím způsobem. Chcete-li omezit přístup pouze na konkrétní metody, můžete tento atribut použít pouze u těchto metod místo třídy. Znovu publikujte projekt serveru.[Authorize] public class TodoItemController : TableController<TodoItem>
Node.js zázemí (prostřednictvím Node.js kódu):
Pokud chcete vyžadovat ověřování pro přístup k tabulce, přidejte do skriptu serveru Node.js následující řádek:
table.access = 'authenticated';
Další podrobnosti najdete v tématu Postupy: Vyžadování ověřování pro přístup k tabulkám. Informace o tom, jak stáhnout projekt kódu pro rychlý start z webu, můžete najít v tématu Postupy: Stažení projektu kódu rychlého startu Node.js backendu pomocí Gitu.
V sadě Visual Studio nebo Xamarin Studio spusťte klientský projekt na zařízení nebo emulátoru. Ověřte, že je po spuštění aplikace vyvolána neošetřená výjimka se stavovým kódem 401 (Neautorizováno). Chyba se zaznamená do konzole ladicího programu. Ve Visual Studiu byste měli vidět chybu ve výstupním okně.
K tomuto neoprávněnému selhání dochází, protože se aplikace pokusí o přístup k back-endu mobilní aplikace jako neověřený uživatel. Tabulka TodoItem teď vyžaduje ověření.
Dále aktualizujete klientskou aplikaci tak, aby požadovala prostředky z back-endu mobilní aplikace s ověřeným uživatelem.
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. Když se aplikace spustí, nepřipojí se ke službě App Service a nezobrazí žádná data. Po prvním provedení gesta aktualizace se zobrazí přihlašovací obrazovka; po přihlášení se zobrazí seznam úkolů.
V projektu klienta otevřete soubor QSTodoService.cs a přidejte následující příkaz using a
MobileServiceUser
s příslušenstvím do třídy QSTodoService:using UIKit; // Logged in user private MobileServiceUser user; public MobileServiceUser User { get { return user; } }
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 zprostředkovatele identity než Facebook, změňte hodnotu předanou loginAsync výše na jednu z následujících možností: MicrosoftAccount, Twitter, Google nebo WindowsAzureActiveDirectory.
Otevřete QSTodoListViewController.cs. Upravte definici metody ViewDidLoad odebráním volání RefreshAsync() na konci:
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(); }
Upravte metodu RefreshAsync tak, aby se ověřila, pokud je vlastnost User 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
Otevřete AppDelegate.cs, 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); }
Otevřete soubor Info.plist a v části Upřesnit přejděte na Typy adres URL. Teď nakonfigurujte identifikátor a schémata adres URL vašeho typu adresy URL a klikněte na Přidat typ adresy URL. Schémata adres URL by měla být stejná jako vaše {url_scheme_of_your_app}.
V sadě Visual Studio, připojené k hostiteli Mac nebo sadě Visual Studio pro Mac, spusťte projekt klienta, který cílí na zařízení nebo emulátor. Ověřte, že aplikace nezobrazuje žádná data.
Gesto aktualizace můžete provést tak, že stáhnete seznam položek, což způsobí, že se zobrazí přihlašovací obrazovka. Jakmile úspěšně zadáte platné přihlašovací údaje, aplikace zobrazí seznam položek úkolů a vy můžete data aktualizovat.