Megosztás a következőn keresztül:


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.

  1. Konfigurálja az előnyben részesített identitásszolgáltatót a szolgáltatóra vonatkozó utasítások szerint:

  2. 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:

  1. A Azure Portal válassza ki a App Service.

  2. Kattintson a Hitelesítés / Engedélyezés menüpontra.

  3. 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.

  4. Kattintson az OK gombra.

  5. 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.

  1. 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; } }
    
  2. 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.

  3. 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();
    }
    
  4. 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
    
  5. 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);
    }
    
  6. 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.

  7. 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.