Hitelesítés hozzáadása az iOS-alkalmazáshoz

Ebben az oktatóanyagban hitelesítést ad hozzá az iOS gyors üzembe helyezési projektjéhez egy támogatott identitásszolgáltató használatával. Ez az oktatóanyag az iOS gyors üzembe helyezési oktatóanyagán alapul, amelyet először el kell végeznie.

Regisztrálja az alkalmazást hitelesítésre, és konfigurálja a App Service

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érrendszerében.

  1. Konfigurálja az előnyben részesített identitásszolgáltatót a szolgáltatóspecifikus utasítások követésével:

  2. Ismételje meg az előző lépéseket minden olyan szolgáltatónál, amelyet támogatni szeretne az alkalmazásban.

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álnia az alkalmazáshoz. Ez lehetővé teszi, hogy a hitelesítési rendszer a hitelesítési folyamat befejezése után visszairányítsa az alkalmazást. Ebben az oktatóanyagban az URL-séma alkalmazásnevét használjuk. Azonban bármilyen URL-sémát használhat. A mobilalkalmazásnak 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üelemre.

  3. Kattintson az Azure Active Directory elemre a Hitelesítésszolgáltatók szakaszban.

  4. Állítsa a Felügyeleti módot Speciális értékre.

  5. Az Engedélyezett külső átirányítási URL-címek mezőbe írja be a következőt appname://easyauth.callback: . A sztringben szereplő alkalmazásnév a mobilalkalmazás URL-sémája. A protokoll normál URL-specifikációját kell követnie (csak betűket és számokat kell használnia, és betűvel kell kezdenie). Jegyezze fel a választott sztringet, mivel több helyen is módosítania kell a mobilalkalmazás kódját az URL-séma használatával.

  6. Kattintson az OK gombra.

  7. Kattintson a Mentés gombra.

Engedélyek korlátozása hitelesített felhasználókra

Alapértelmezés szerint a Mobile Apps háttérrendszerében lévő API-k névtelenül hívhatók meg. Ezután korlátoznia kell a hozzáférést csak a hitelesített ügyfelekre.

  • Node.js háttérrendszer (a Azure Portal keresztül):

    A Mobile Apps beállításai között kattintson az Egyszerű táblák elemre, és válassza ki a táblázatot. Kattintson az Engedélyek módosítása elemre, válassza a Hitelesített hozzáférés csak az összes engedélyhez lehetőséget, majd kattintson a Mentés gombra.

  • .NET-háttérrendszer (C#):

    A kiszolgálóprojektben lépjen a Controllers>TodoItemController.cs lapra. Adja hozzá az [Authorize] attribútumot a TodoItemController osztályhoz az alábbiak szerint. Ha csak bizonyos metódusokra szeretné korlátozni a hozzáférést, ezt az attribútumot csak ezekre a metódusokra alkalmazhatja a osztály helyett. Tegye közzé újra a kiszolgálóprojektet.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js háttérrendszer (Node.js kóddal):

    A táblahozzáférés hitelesítésének megköveteléséhez 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 (Útmutató: Hitelesítés megkövetelése a táblákhoz való hozzáféréshez). Ha meg szeretné tudni, hogyan töltheti le a rövid útmutató kódprojektet a webhelyéről, olvassa el a Útmutató: A Node.js háttérrendszer gyorsindítási kódprojektjének letöltése a Git használatával című témakört.

Az Xcode-ban nyomja le a Futtatás gombot az alkalmazás elindításához. A rendszer kivételt jelez, mert az alkalmazás nem hitelesített felhasználóként próbál hozzáférni a háttérrendszerhez, de a TodoItem tábla hitelesítést igényel.

Hitelesítés hozzáadása az alkalmazáshoz

Objective-C:

  1. Mac gépen nyissa meg a QSTodoListViewController.m fájlt az Xcode-ban, és adja hozzá a következő metódust:

    - (void)loginAndGetData
    {
        QSAppDelegate *appDelegate = (QSAppDelegate *)[UIApplication sharedApplication].delegate;
        appDelegate.qsTodoService = self.todoService;
    
        [self.todoService.client loginWithProvider:@"google" urlScheme:@"appname" controller:self animated:YES completion:^(MSUser * _Nullable user, NSError * _Nullable error) {
            if (error) {
                NSLog(@"Login failed with error: %@, %@", error, [error userInfo]);
            }
            else {
                self.todoService.client.currentUser = user;
                NSLog(@"User logged in: %@", user.userId);
    
                [self refresh];
            }
        }];
    }
    

    Ha nem a Google-t használja identitásszolgáltatóként, módosítsa a google-tmicrosoftaccount, twitter, facebook vagy windowsazureactivedirectory értékre. Ha a Facebookot használja, engedélyeznie kell a Facebook-tartományokat az alkalmazásban.

    Cserélje le az urlScheme nevet az alkalmazás egyedi nevére. Az urlScheme protokollnak meg kell egyeznie a Azure Portal Engedélyezett külső átirányítási URL-címek mezőjében megadott URL-séma protokollal. A hitelesítési visszahívás az urlScheme használatával tér vissza az alkalmazáshoz a hitelesítési kérelem befejezése után.

  2. Cserélje le [self refresh] a értéket a QSTodoListViewController.m fájlban viewDidLoad a következő kódra:

    [self loginAndGetData];
    
  3. Nyissa meg a QSAppDelegate.h fájlt, és adja hozzá a következő kódot:

    #import "QSTodoService.h"
    
    @property (strong, nonatomic) QSTodoService *qsTodoService;
    
  4. Nyissa meg a QSAppDelegate.m fájlt, és adja hozzá a következő kódot:

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    {
        if ([[url.scheme lowercaseString] isEqualToString:@"appname"]) {
            // Resume login flow
            return [self.qsTodoService.client resumeWithURL:url];
        }
        else {
            return NO;
        }
    }
    

    Adja hozzá ezt a kódot közvetlenül a sorolvasás #pragma mark - Core Data stackelőtt. Cserélje le az alkalmazásnevet az 1. lépésben használt urlScheme értékre.

  5. Nyissa meg a AppName-Info.plist fájlt (az AppName helyére írja be az alkalmazás nevét), és adja hozzá a következő kódot:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.microsoft.azure.zumo</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appname</string>
            </array>
        </dict>
    </array>
    

    Ezt a kódot az <dict> elemen belül kell elhelyezni. Cserélje le az appname sztringet (a CFBundleURLSchemes tömbjében) az 1. lépésben kiválasztott alkalmazásnévre. Ezeket a módosításokat a plist szerkesztőben is elvégezheti – kattintson a fájlra az AppName-Info.plist XCode-ban a plist szerkesztő megnyitásához.

    Cserélje le a com.microsoft.azure.zumoCFBundleURLName sztringet az Apple csomagazonosítójára.

  6. Nyomja le a Futtatás gombot az alkalmazás elindításához, majd jelentkezzen be. Ha be van jelentkezve, meg kell tudnia tekinteni a Teendők listát, és frissítéseket kell végeznie.

Swift:

  1. Mac gépén nyissa meg a ToDoTableViewController.swift fájlt az Xcode-ban, és adja hozzá a következő metódust:

    func loginAndGetData() {
    
        guard let client = self.table?.client, client.currentUser == nil else {
            return
        }
    
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.todoTableViewController = self
    
        let loginBlock: MSClientLoginBlock = {(user, error) -> Void in
            if (error != nil) {
                print("Error: \(error?.localizedDescription)")
            }
            else {
                client.currentUser = user
                print("User logged in: \(user?.userId)")
            }
        }
    
        client.login(withProvider:"google", urlScheme: "appname", controller: self, animated: true, completion: loginBlock)
    
    }
    

    Ha nem a Google-t használja identitásszolgáltatóként, módosítsa a google-tmicrosoftaccount, twitter, facebook vagy windowsazureactivedirectory értékre. Ha a Facebookot használja, engedélyeznie kell a Facebook-tartományokat az alkalmazásban.

    Cserélje le az urlScheme nevet az alkalmazás egyedi nevére. Az urlScheme protokollnak meg kell egyeznie a Azure Portal Engedélyezett külső átirányítási URL-címek mezőjében megadott URL-séma protokollal. A hitelesítési visszahívás az urlScheme használatával tér vissza az alkalmazáshoz a hitelesítési kérelem befejezése után.

  2. Távolítsa el a sorokat self.refreshControl?.beginRefreshing()self.onRefresh(self.refreshControl) a ToDoTableViewController.swift fájl végénviewDidLoad(). Adjon hozzá egy hívást loginAndGetData() a helyére:

    loginAndGetData()
    
  3. Nyissa meg a AppDelegate.swift fájlt, és adja hozzá a következő sort az AppDelegate osztályhoz:

    var todoTableViewController: ToDoTableViewController?
    
    func application(_ application: UIApplication, openURL url: NSURL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.scheme?.lowercased() == "appname" {
            return (todoTableViewController!.table?.client.resume(with: url as URL))!
        }
        else {
            return false
        }
    }
    

    Cserélje le az alkalmazásnevet az 1. lépésben használt urlScheme értékre.

  4. Nyissa meg a AppName-Info.plist fájlt (az AppName helyére írja be az alkalmazás nevét), és adja hozzá a következő kódot:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.microsoft.azure.zumo</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appname</string>
            </array>
        </dict>
    </array>
    

    Ezt a kódot az <dict> elemen belül kell elhelyezni. Cserélje le az appname sztringet (a CFBundleURLSchemes tömbjében) az 1. lépésben kiválasztott alkalmazásnévre. Ezeket a módosításokat a plist szerkesztőben is elvégezheti – kattintson a fájlra az AppName-Info.plist XCode-ban a plist szerkesztő megnyitásához.

    Cserélje le a com.microsoft.azure.zumoCFBundleURLName sztringet az Apple csomagazonosítójára.

  5. Nyomja le a Futtatás gombot az alkalmazás elindításához, majd jelentkezzen be. Ha be van jelentkezve, meg kell tudnia tekinteni a Teendők listát, és frissítéseket kell végeznie.

App Service hitelesítés az Apples Inter-App Communicationt használja. A témával kapcsolatos további részletekért tekintse meg az Apple dokumentációját