Hitelesítés hozzáadása xamarin.iOS-alkalmazáshoz
Áttekintés
Ez a témakör bemutatja, hogyan hitelesítheti egy App Service mobilalkalmazás felhasználóit az ügyfélalkalmazásból. Ebben az oktatóanyagban hitelesítést fog hozzáadni a Xamarin.iOS gyorsindítási projekthez egy olyan identitásszolgáltató használatával, amelyet a App Service. Miután sikeresen hitelesítette és engedélyezte a Mobilalkalmazást, megjelenik a felhasználói azonosító értéke, és hozzáférhet a korlátozott táblaadatokhoz.
Először el kell látnia a Xamarin.iOS-alkalmazás létrehozása oktatóanyagot. Ha nem használja a letöltött gyors indítási kiszolgálóprojektet, hozzá kell adni a hitelesítési bővítménycsomagot a projekthez. További információ a kiszolgálóbővítmény-csomagokról: Az Azure-hoz készült .NET háttérkiszolgálói SDK Mobile Apps.
Az alkalmazás regisztrálása hitelesítéshez és App Services
Először regisztrálnia kell az alkalmazást egy identitásszolgáltató webhelyén, majd be kell állítania a szolgáltató által létrehozott hitelesítő adatokat a Mobile Apps háttéralkalmazásban.
Konfigurálja az előnyben részesített identitásszolgáltatót a szolgáltatóra vonatkozó utasítások szerint:
Ismételje meg az előző lépéseket minden olyan szolgáltatónál, amit támogatni szeretne az alkalmazásban.
Az alkalmazás hozzáadása az engedélyezett külső átirányítási URL-címekhez
A biztonságos hitelesítéshez új URL-sémát kell definiálni az alkalmazáshoz. Ez lehetővé teszi, hogy a hitelesítési rendszer visszairányítsa az alkalmazást a hitelesítési folyamat befejezése után. Ebben az oktatóanyagban az alkalmazásnév URL-sémát használjuk végig. Azonban bármilyen URL-sémát használhat. A mobilalkalmazás egyedinek kell lennie. Az átirányítás engedélyezése a kiszolgálóoldalon:
A Azure Portal válassza ki a App Service.
Kattintson a Hitelesítés / Engedélyezés menüpontra.
Az Engedélyezett külső átirányítási URL-címek beállításnál adja meg a következőt:
url_scheme_of_your_app://easyauth.callback
. Az url_scheme_of_your_app a sztringben a mobilalkalmazás URL-sémája. Egy protokoll normál URL-specifikációját kell követnie (csak betűket és számokat használjon, és betűvel kezdjen). Jegyezze fel a választott sztringet, mivel számos helyen módosítania kell a mobilalkalmazás kódját az URL-sémával.Kattintson az OK gombra.
Kattintson a Mentés gombra.
A hitelesített felhasználókra vonatkozó engedélyek korlátozása
Alapértelmezés szerint a háttér Mobile Apps API-k névtelenül hívhatóak meg. Ezután korlátoznia kell a hozzáférést csak a hitelesített ügyfelekre.
Node.js háttér (a Azure Portal) segítségével:
A saját Mobile Apps kattintson az Easy Tables (Egyszerű táblák) elemre , és válassza ki a táblát. Kattintson az Engedélyek módosítása elemre, válassza a Csak hitelesített hozzáférés minden engedélyhez lehetőséget, majd kattintson a Mentés gombra.
.NET-háttér (C#):
A kiszolgálóprojektben lépjen a ControllersTodoItemController.cs> fájlra. Adja hozzá az
[Authorize]
attribútumot a TodoItemController osztályhoz az alábbiak szerint. Ha csak bizonyos metódusok elérésére korlátozza a hozzáférést, ezt az attribútumot a osztály helyett csak azokra a metódusra is alkalmazhatja. Tegye közzé újra a kiszolgálóprojektet.[Authorize] public class TodoItemController : TableController<TodoItem>
Node.js háttér (egy kódon Node.js keresztül):
Ha hitelesítést szeretne megkövetelni a táblaeléréshez, adja hozzá a következő sort a Node.js-kiszolgálói szkripthez:
table.access = 'authenticated';
További részletekért lásd : How to: Require authentication for access to tables (Hogyan lehet: Hitelesítés megkövetelve a táblákhoz való hozzáféréshez). A gyorsindítási kódprojekt webhelyről való letöltésével kapcsolatos további információkért lásd : Útmutató: A Node.js háttér-rövid útmutató kódprojekt letöltése a Git használatával.
A Visual Studio Xamarin Studióban futtassa az ügyfélprojektet egy eszközön vagy emulátoron. Ellenőrizze, hogy az alkalmazás indításakor 401-es (Jogosulatlan) állapotkóddal nem kezelt kivétel történt-e. A hiba a hibakereső konzolján lesz naplózva. Így a Visual Studio a hibát a kimeneti ablakban kell látnia.
Ez a jogosulatlan hiba azért fordul elő, mert az alkalmazás nem hitelesített felhasználóként próbál hozzáférni a Mobile App háttéralkalmazáshoz. A TodoItem tábla hitelesítést igényel.
Ezután frissíteni fogja az ügyfélalkalmazást, hogy az egy hitelesített felhasználóval kérjen le erőforrásokat a Mobile App háttéralkalmazásból.
Hitelesítés hozzáadása az alkalmazáshoz
Ebben a szakaszban úgy fogja módosítani az alkalmazást, hogy megjelenítsen egy bejelentkezési képernyőt az adatok megjelenítése előtt. Amikor az alkalmazás elindul, nem fog csatlakozni a App Service és nem jelenít meg adatokat. A felhasználó a frissítési kézmozdulat első végrehajtása után megjelenik a bejelentkezési képernyő; a sikeres bejelentkezés után megjelenik a todo elemek listája.
Az ügyfélprojektben nyissa meg a QSTodoService.cs fájlt, és adja hozzá a következő using
MobileServiceUser
utasítást és egy hozzáférési utasítást a QSTodoService osztályhoz:using UIKit; // Logged in user private MobileServiceUser user; public MobileServiceUser User { get { return user; } }
Adja hozzá a Hitelesítés a QSTodoService szolgáltatásban nevű új metódust a következő definícióval:
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); } }
Megjegyzés
Ha nem Facebook-identitásszolgáltatót használ, módosítsa a LoginAsync számára a fenti értékeket a következők egyikével: MicrosoftAccount, Twitter, Google vagy WindowsAzureActiveDirectory.
Nyissa meg a QSTodoListViewController.cs fájlját. Módosítsa a ViewDidLoad metódusdefinícióját , és távolítsa el a RefreshAsync() hívását a végük közelében:
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(); }
Módosítsa a RefreshAsync metódust a hitelesítéshez, ha a User tulajdonság null értékű. Adja hozzá a következő kódot a metódus definíciójának tetején:
// 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
Nyissa meg az AppDelegate.cs-t, és adja hozzá a következő metódust:
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { if (client.ResumeWithURL(app, url, options)) return true; return base.OpenUrl(app, url, options); }
Nyissa meg az Info.plist fájlt, és a Speciális szakaszban lépjen az URL-típusok pontra. Most konfigurálja az URL-típus Azonosító és URL-sémák beállítását, majd kattintson az URL-típus hozzáadása elemre. Az URL-sémáknak azonosnak kell lennie a(z) {url_scheme_of_your_app} értékével.
A Visual Studio Mac-gazdagéphez vagy -kiszolgálóhoz Visual Studio for Mac egy eszközt vagy emulátort célzó ügyfélprojektet. Ellenőrizze, hogy az alkalmazás nem jelenít-e meg adatokat.
Hajtsa végre a frissítési műveletet az elemek listájának lehúzásával, ami a bejelentkezési képernyő megjelenése miatt jelenik meg. Miután sikeresen megadta az érvényes hitelesítő adatokat, az alkalmazás megjeleníti a todo elemek listáját, és ön is frissíti az adatokat.