Sdílet prostřednictvím


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

V tomto kurzu přidáte ověřování do projektu rychlého startu pro iOS pomocí podporovaného zprostředkovatele identity. Tento kurz je založený na rychlém úvodním kurzu pro iOS , který musíte nejprve dokončit.

Registrace aplikace pro ověřování a konfigurace App Service

Nejprve musíte aplikaci zaregistrovat na webu zprostředkovatele identity a pak nastavíte přihlašovací údaje generované poskytovatelem v back-endu Mobile Apps.

  1. Podle pokynů specifických pro zprostředkovatele nakonfigurujte upřednostňované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 k povoleným externím adresám URL

Zabezpečené ověřování vyžaduje, abyste pro svou aplikaci definovali nové schéma adres URL. To umožňuje ověřovacímu systému, aby se po dokončení procesu ověřování přesměrovává zpět do vaší aplikace. V tomto kurzu použijeme název aplikace schématu ADRES URL. Můžete ale použít libovolné schéma adres URL, které zvolíte. Měl by být jedinečný pro vaši mobilní aplikaci. Povolení přesměrování na straně serveru:

  1. V Azure Portal vyberte App Service.

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

  3. V části Zprostředkovatelé ověřování klikněte na Azure Active Directory.

  4. Nastavte režim správy na Upřesnit.

  5. Do pole Povolené adresy URL externího přesměrování zadejte appname://easyauth.callback. Název aplikace v tomto řetězci je schéma adres URL pro vaši mobilní aplikaci. Měl by se řídit normální specifikací adresy URL pro protokol (používejte pouze písmena a číslice a začínat písmenem). Řetězec, který zvolíte, byste si měli poznamenat, protože kód mobilní aplikace budete muset upravit pomocí schématu adres URL na několika místech.

  6. Klikněte na OK.

  7. 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 pouze na ověřené klienty.

  • Node.js back-endu (prostřednictvím Azure Portal):

    V nastavení Mobile Apps klikněte na Snadné tabulky a vyberte tabulku. Klikněte na Změnit oprávnění, vyberte Ověřený přístup pouze pro všechna oprávnění a potom 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 tento atribut použít pouze pro tyto metody místo třídy. Znovu publikujte projekt serveru.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js back-endu (prostřednictvím kódu Node.js):

    Pokud chcete pro přístup k tabulce vyžadovat ověřování, přidejte do skriptu Node.js serveru 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 rychlého startu z webu, najdete v tématu Postupy: Stažení projektu rychlého startu kódu Node.js back-endu pomocí Gitu.

V Xcode spusťte aplikaci stisknutím klávesy Spustit . Došlo k výjimce, protože se aplikace pokusí o přístup k back-endu jako neověřený uživatel, ale tabulka TodoItem teď vyžaduje ověření.

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

Objective-C:

  1. Na počítači Mac otevřete soubor QSTodoListViewController.m v Xcode a přidejte následující metodu:

    - (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];
            }
        }];
    }
    

    Pokud google nepoužíváte jako zprostředkovatele identity, změňte google na microsoftaccount, twitter, facebook nebo windowsazureactivedirectory . Pokud používáte Facebook, musíte ve své aplikaci zadat seznam povolených domén Facebooku .

    Nahraďte urlScheme jedinečným názvem vaší aplikace. Adresa urlScheme by měla být stejná jako protokol schématu adres URL, který jste zadali v poli Povolené externí adresy URL v Azure Portal. Adresa URLScheme se používá při zpětném volání ověřování k přepnutí zpět do aplikace po dokončení žádosti o ověření.

  2. Nahraďte [self refresh] v viewDidLoadsouboru QSTodoListViewController.m následujícím kódem:

    [self loginAndGetData];
    
  3. Otevřete soubor QSAppDelegate.h a přidejte následující kód:

    #import "QSTodoService.h"
    
    @property (strong, nonatomic) QSTodoService *qsTodoService;
    
  4. Otevřete soubor QSAppDelegate.m a přidejte následující kód:

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

    Přidejte tento kód přímo před řádek načítá #pragma mark - Core Data stack. Nahraďte appname hodnotou urlScheme, kterou jste použili v kroku 1.

  5. AppName-Info.plist Otevřete soubor (nahraďte AppName názvem vaší aplikace) a přidejte následující kód:

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

    Tento kód by měl být umístěn uvnitř elementu <dict> . Nahraďte řetězec appname (v poli pro CFBundleURLSchemes) názvem aplikace, který jste zvolili v kroku 1. Tyto změny můžete provést také v editoru plist – kliknutím na AppName-Info.plist soubor v XCode otevřete editor plist.

    com.microsoft.azure.zumo Řetězec pro CFBundleURLName nahraďte identifikátorem sady Apple.

  6. Stisknutím klávesy Spustit spusťte aplikaci a pak se přihlaste. Po přihlášení byste měli být schopni zobrazit seznam úkolů a provádět aktualizace.

Swift:

  1. Na Macu otevřete ToDoTableViewController.swift v Xcode a přidejte následující metodu:

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

    Pokud google nepoužíváte jako zprostředkovatele identity, změňte google na microsoftaccount, twitter, facebook nebo windowsazureactivedirectory . Pokud používáte Facebook, musíte v aplikaci zahrnout domény Facebooku na seznam povolených .

    Nahraďte urlScheme jedinečným názvem vaší aplikace. Adresa urlScheme by měla být stejná jako protokol schématu adres URL, který jste zadali v poli Povolené externí adresy URL v Azure Portal. Adresa URLScheme se používá při zpětném volání ověřování k přepnutí zpět do aplikace po dokončení žádosti o ověření.

  2. Odeberte řádky self.refreshControl?.beginRefreshing() a self.onRefresh(self.refreshControl) na konci viewDidLoad() v ToDoTableViewController.swift. Přidejte volání na loginAndGetData() jejich místo:

    loginAndGetData()
    
  3. AppDelegate.swift Otevřete soubor a přidejte do AppDelegate třídy následující řádek:

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

    Nahraďte appname hodnotou urlScheme, kterou jste použili v kroku 1.

  4. AppName-Info.plist Otevřete soubor (nahraďte AppName názvem vaší aplikace) a přidejte následující kód:

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

    Tento kód by měl být umístěn uvnitř elementu <dict> . Nahraďte řetězec appname (v poli pro CFBundleURLSchemes) názvem aplikace, který jste zvolili v kroku 1. Tyto změny můžete provést také v editoru plist – kliknutím na AppName-Info.plist soubor v XCode otevřete editor plist.

    com.microsoft.azure.zumo Řetězec pro CFBundleURLName nahraďte identifikátorem sady Apple.

  5. Stisknutím klávesy Spustit spusťte aplikaci a pak se přihlaste. Po přihlášení byste měli být schopni zobrazit seznam úkolů a provádět aktualizace.

App Service Authentication používá Apples Inter-App Communication. Další podrobnosti o tomto tématu najdete v dokumentaci společnosti Apple.