Dodawanie uwierzytelniania do aplikacji systemu iOS
W tym samouczku dodasz uwierzytelnianie do projektu Szybkiego startu systemu iOS przy użyciu obsługiwanego dostawcy tożsamości. Ten samouczek jest oparty na samouczku Szybki start dla systemu iOS , który należy wykonać najpierw.
Rejestrowanie aplikacji na potrzeby uwierzytelniania i konfigurowanie App Service
Najpierw należy zarejestrować aplikację w witrynie dostawcy tożsamości, a następnie ustawić poświadczenia wygenerowane przez dostawcę w zapleczu usługi Mobile Apps.
Skonfiguruj preferowanego dostawcę tożsamości, postępując zgodnie z instrukcjami specyficznymi dla dostawcy:
Powtórz poprzednie kroki dla każdego dostawcy, który chcesz obsługiwać w aplikacji.
Dodawanie aplikacji do dozwolonych zewnętrznych adresów URL przekierowania
Bezpieczne uwierzytelnianie wymaga zdefiniowania nowego schematu adresów URL dla aplikacji. Dzięki temu system uwierzytelniania może przekierować z powrotem do aplikacji po zakończeniu procesu uwierzytelniania. W tym samouczku używamy nazwy aplikacji schematu adresów URL. Można jednak użyć dowolnego wybranego schematu adresu URL. Powinna być unikatowa dla aplikacji mobilnej. Aby włączyć przekierowanie po stronie serwera:
W Azure Portal wybierz App Service.
Kliknij opcję menu Uwierzytelnianie/autoryzacja .
Kliknij pozycję Azure Active Directory w sekcji Dostawcy uwierzytelniania .
Ustaw tryb zarządzania na wartość Zaawansowane.
W polu Dozwolone zewnętrzne adresy URL przekierowania wprowadź wartość
appname://easyauth.callback
. Nazwa aplikacji w tym ciągu to schemat adresu URL aplikacji mobilnej. Powinna ona być zgodna ze standardową specyfikacją adresu URL protokołu (należy używać tylko liter i cyfr i zaczynać się literą). Należy zanotować wybrany ciąg, ponieważ musisz dostosować kod aplikacji mobilnej za pomocą schematu adresów URL w kilku miejscach.Kliknij przycisk OK.
Kliknij pozycję Zapisz.
Ograniczanie uprawnień do uwierzytelnionych użytkowników
Domyślnie interfejsy API w zapleczu usługi Mobile Apps mogą być wywoływane anonimowo. Następnie należy ograniczyć dostęp tylko do uwierzytelnionych klientów.
Node.js zaplecza (za pośrednictwem Azure Portal):
W ustawieniach usługi Mobile Apps kliknij pozycję Łatwe tabele i wybierz tabelę. Kliknij pozycję Zmień uprawnienia, wybierz pozycję Dostęp uwierzytelniony tylko dla wszystkich uprawnień, a następnie kliknij przycisk Zapisz.
Zaplecze platformy .NET (C#):
W projekcie serwera przejdź do pliku Controllers>TodoItemController.cs.
[Authorize]
Dodaj atrybut do klasy TodoItemController w następujący sposób. Aby ograniczyć dostęp tylko do określonych metod, można również zastosować ten atrybut tylko do tych metod zamiast klasy. Ponownie opublikuj projekt serwera.[Authorize] public class TodoItemController : TableController<TodoItem>
zapleczeNode.js (za pośrednictwem kodu Node.js):
Aby wymagać uwierzytelniania na potrzeby dostępu do tabel, dodaj następujący wiersz do skryptu serwera Node.js:
table.access = 'authenticated';
Aby uzyskać więcej informacji, zobacz Instrukcje: wymaganie uwierzytelniania w celu uzyskania dostępu do tabel. Aby dowiedzieć się, jak pobrać projekt kodu szybkiego startu z witryny, zobacz Jak pobrać projekt kodu zaplecza Node.js zaplecza przy użyciu usługi Git.
W programie Xcode naciśnij pozycję Uruchom , aby uruchomić aplikację. Zgłaszany jest wyjątek, ponieważ aplikacja próbuje uzyskać dostęp do zaplecza jako nieuwierzytelniony użytkownik, ale tabela TodoItem wymaga teraz uwierzytelniania.
Dodawanie uwierzytelniania do aplikacji
Cel-C:
Na komputerze Mac otwórz plik QSTodoListViewController.m w środowisku Xcode i dodaj następującą metodę:
- (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]; } }]; }
Zmień google na microsoftaccount, twitter, facebook lub windowsazureactivedirectory, jeśli nie używasz Google jako dostawcy tożsamości. Jeśli używasz serwisu Facebook, musisz zezwolić na domeny Facebook w swojej aplikacji.
Zastąp wartość urlScheme unikatową nazwą aplikacji. Adres URLScheme powinien być taki sam jak protokół schematu adresów URL określony w polu Dozwolone zewnętrzne adresy URL przekierowania w Azure Portal. Funkcja urlScheme jest używana przez wywołanie zwrotne uwierzytelniania w celu przełączenia się z powrotem do aplikacji po zakończeniu żądania uwierzytelniania.
Zastąp
[self refresh]
element wviewDidLoad
pliku QSTodoListViewController.m następującym kodem:[self loginAndGetData];
Otwórz plik
QSAppDelegate.h
i dodaj następujący kod:#import "QSTodoService.h" @property (strong, nonatomic) QSTodoService *qsTodoService;
Otwórz plik
QSAppDelegate.m
i dodaj następujący kod:- (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; } }
Dodaj ten kod bezpośrednio przed odczytem
#pragma mark - Core Data stack
wiersza . Zastąp nazwę aplikacji wartością urlScheme użytą w kroku 1.AppName-Info.plist
Otwórz plik (zastępując ciąg AppName nazwą aplikacji), a następnie dodaj następujący kod:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.microsoft.azure.zumo</string> <key>CFBundleURLSchemes</key> <array> <string>appname</string> </array> </dict> </array>
Ten kod powinien zostać umieszczony wewnątrz
<dict>
elementu . Zastąp ciąg nazwy aplikacji (w tablicy dla wartości CFBundleURLSchemes) nazwą aplikacji wybraną w kroku 1. Możesz również wprowadzić te zmiany w edytorze plist — kliknijAppName-Info.plist
plik w programie XCode, aby otworzyć edytor plist.Zastąp
com.microsoft.azure.zumo
ciąg wartości CFBundleURLName identyfikatorem pakietu firmy Apple.Naciśnij przycisk Uruchom , aby uruchomić aplikację, a następnie zaloguj się. Po zalogowaniu powinno być możliwe wyświetlenie listy zadań do wykonania i wprowadzenie aktualizacji.
Swift:
Na komputerze Mac otwórz plik ToDoTableViewController.swift w środowisku Xcode i dodaj następującą metodę:
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) }
Zmień google na microsoftaccount, twitter, facebook lub windowsazureactivedirectory, jeśli nie używasz Google jako dostawcy tożsamości. Jeśli używasz serwisu Facebook, musisz dodać domeny Facebook do listy dozwolonych w swojej aplikacji.
Zastąp wartość urlScheme unikatową nazwą aplikacji. Adres URLScheme powinien być taki sam jak protokół schematu adresów URL określony w polu Dozwolone zewnętrzne adresy URL przekierowania w Azure Portal. Funkcja urlScheme jest używana przez wywołanie zwrotne uwierzytelniania w celu przełączenia się z powrotem do aplikacji po zakończeniu żądania uwierzytelniania.
Usuń wiersze
self.refreshControl?.beginRefreshing()
iself.onRefresh(self.refreshControl)
na końcuviewDidLoad()
w pliku ToDoTableViewController.swift. Dodaj wywołanie metody wloginAndGetData()
swoim miejscu:loginAndGetData()
AppDelegate.swift
Otwórz plik i dodaj następujący wiersz doAppDelegate
klasy: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 } }
Zastąp nazwę aplikacji wartością urlScheme użytą w kroku 1.
AppName-Info.plist
Otwórz plik (zastępując ciąg AppName nazwą aplikacji), a następnie dodaj następujący kod:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.microsoft.azure.zumo</string> <key>CFBundleURLSchemes</key> <array> <string>appname</string> </array> </dict> </array>
Ten kod powinien zostać umieszczony wewnątrz
<dict>
elementu . Zastąp ciąg nazwy aplikacji (w tablicy dla wartości CFBundleURLSchemes) nazwą aplikacji wybraną w kroku 1. Możesz również wprowadzić te zmiany w edytorze plist — kliknijAppName-Info.plist
plik w programie XCode, aby otworzyć edytor plist.Zastąp
com.microsoft.azure.zumo
ciąg wartości CFBundleURLName identyfikatorem pakietu firmy Apple.Naciśnij przycisk Uruchom , aby uruchomić aplikację, a następnie zaloguj się. Po zalogowaniu powinno być możliwe wyświetlenie listy zadań do wykonania i wprowadzenie aktualizacji.
App Service Authentication używa usługi Apples Inter-App Communication. Aby uzyskać więcej informacji na ten temat, zapoznaj się z dokumentacją firmy Apple