Rychlý start: Přihlášení uživatelů a volání Microsoft Graphu z aplikace pro iOS nebo macOS
V tomto rychlém startu si stáhnete a spustíte ukázku kódu, která předvádí, jak může nativní aplikace pro iOS nebo macOS přihlásit uživatele a získat přístupový token pro volání rozhraní Microsoft Graph API.
Rychlý start platí pro aplikace pro iOS i macOS. Některé kroky jsou potřeba jenom pro aplikace pro iOS a budou označeny jako takové.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- XCode 10+
- iOS 10+
- macOS 10.12+
Jak ukázka funguje
Registrace aplikace pro rychlý start
Tip
Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.
Pokud chcete zaregistrovat aplikaci a ručně přidat informace o registraci aplikace ke svému řešení, postupujte následovně:
- Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.
- Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.
- Přejděte k aplikacím> identit>Registrace aplikací.
- Vyberte Nová registrace.
- Zadejte název aplikace. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit.
- Vyberte Zaregistrovat.
- V části Spravovat vyberte Možnost Přidat platformu pro iOS pro>ověřování.>
- Zadejte identifikátor sady prostředků pro vaši aplikaci. Identifikátor sady je jedinečný řetězec, který jednoznačně identifikuje vaši aplikaci, například
com.<yourname>.identitysample.MSALMacOS
. Poznamenejte si hodnotu, kterou používáte. Všimněte si, že konfigurace iOS se vztahuje také na aplikace macOS. - Vyberte Konfigurovat a uložit podrobnosti konfigurace MSAL pro pozdější použití v tomto rychlém startu.
- Vyberte Hotovo.
Krok 2: Stažení ukázkového projektu
Krok 3: Instalace závislostí
- Extrahujte soubor zip.
- V okně terminálu přejděte do složky s ukázkou staženého kódu a spusťte
pod install
instalaci nejnovější knihovny MSAL.
Krok 4: Konfigurace projektu
Pokud jste vybrali možnost 1 výše, můžete tyto kroky přeskočit.
Otevřete projekt v XCode.
Upravte ViewController.swift a nahraďte řádek začínající řetězcem let kClientID následujícím fragmentem kódu. Nezapomeňte aktualizovat hodnotu
kClientID
id klienta, které jste si uložili při registraci aplikace dříve v tomto rychlém startu:let kClientID = "Enter_the_Application_Id_Here"
Pokud vytváříte aplikaci pro národní cloudy Microsoft Entra, nahraďte řádek začínající na let kGraphEndpoint a let kAuthority správnými koncovými body. Pro globální přístup použijte výchozí hodnoty:
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"
Tady jsou popsané další koncové body. Pokud chcete například spustit rychlý start s Microsoft Entra Germany, použijte následující:
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
Otevřete nastavení projektu. V části Identita zadejte identifikátor sady.
Klikněte pravým tlačítkem na Soubor Info.plist a vyberte Otevřít jako>zdrojový kód.
V kořenovém uzlu diktování nahraďte
Enter_the_bundle_Id_Here
ID sady, které jste použili na portálu.msauth.
Všimněte si předpony v řetězci.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Sestavte a spusťte aplikaci.
Další informace
Další informace o tomto rychlém startu najdete v následujících částech.
Získání knihovny MSAL
MSAL (MSAL.framework) je knihovna, která slouží k přihlašování uživatelů a vyžádání tokenů používaných pro přístup k rozhraní API chráněnému platformou Microsoft Identity Platform. Knihovnu MSAL můžete do své aplikace přidat následujícím způsobem:
$ vi Podfile
Do tohoto souboru podfile přidejte následující položky (s cílem projektu):
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
Spusťte instalační příkaz CocoaPods:
pod install
Inicializace knihovny MSAL
Odkaz na knihovnu MSAL můžete přidat tak, že přidáte následující kód:
import MSAL
Potom inicializujte knihovnu MSAL pomocí následujícího kódu:
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Kde: | Popis |
---|---|
clientId |
ID aplikace z aplikace zaregistrované na webu portal.azure.com |
authority |
Platforma Microsoft Identity Platform. Ve většině případů to bude https://login.microsoftonline.com/common |
redirectUri |
Identifikátor URI přesměrování aplikace. Pokud chcete použít výchozí hodnotu, můžete předat hodnotu nil nebo vlastní identifikátor URI přesměrování. |
Pouze pro iOS další požadavky na aplikace
Ve vaší AppDelegate
aplikaci musí být také následující. To umožňuje sadě MSAL SDK zpracovat odpověď tokenu z aplikace zprostředkovatele ověřování při ověřování.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Poznámka:
Pokud v iOSu 13+, místo toho tento UIApplicationDelegate
UISceneDelegate
kód nasadíte do zpětného scene:openURLContexts:
volání (viz dokumentace společnosti Apple).
Pokud podporujete jak UISceneDelegate, tak UIApplicationDelegate kvůli kompatibilitě se starším iOSem, musí být zpětné volání MSAL umístěné na obou místech.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
Aplikace musí mít LSApplicationQueriesSchemes
v souboru Info.plist položku vedle CFBundleURLTypes
souboru . Součástí této ukázky je i tato ukázka.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Přihlášení uživatelů a vyžádání tokenů
Knihovna MSAL používá k získání tokenů dvě metody: acquireToken
a acquireTokenSilent
.
acquireToken: Interaktivní získání tokenu
Některé situace vyžadují, aby uživatelé komunikovali s platformou Microsoft Identity Platform. V těchto případech může být koncový uživatel nutný k výběru svého účtu, zadání přihlašovacích údajů nebo souhlasu s oprávněními vaší aplikace. Příklad:
- Při prvním přihlášení k aplikaci
- Pokud uživatel resetuje heslo, bude muset zadat svoje přihlašovací údaje.
- Když aplikace žádá o přístup k prostředku poprvé
- Pokud se vyžadují vícefaktorové ověřování nebo jiné zásady podmíněného přístupu
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Kde: | Popis |
---|---|
scopes |
Obsahuje požadované obory (to znamená [ "user.read" ] pro Microsoft Graph nebo [ "<Application ID URL>/scope" ] pro vlastní webová rozhraní API (api://<Application ID>/access_as_user )). |
acquireTokenSilent: Bezobslužné získání přístupového tokenu
Aplikace by neměly vyžadovat, aby se uživatelé při každém vyžádání tokenu přihlásili. Pokud se uživatel už přihlásil, tato metoda umožňuje aplikacím bezobslužně požadovat tokeny.
self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
guard let account = currentAccount else {
return
}
let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Kde: | Popis |
---|---|
scopes |
Obsahuje požadované obory (to znamená [ "user.read" ] pro Microsoft Graph nebo [ "<Application ID URL>/scope" ] pro vlastní webová rozhraní API (api://<Application ID>/access_as_user )). |
account |
Pro účet se požaduje token. Tento rychlý start se týká jedné aplikace účtu. Pokud chcete vytvořit aplikaci s více účty, budete muset definovat logiku pro identifikaci účtu, který se má použít pro žádosti o tokeny pomocí accountsFromDeviceForParameters:completionBlock: a předání správných chyb. accountIdentifier |
Nápověda a podpora
Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.
Další kroky
Přejděte k podrobnému kurzu, ve kterém vytvoříte aplikaci pro iOS nebo macOS, která získá přístupový token z platformy Microsoft Identity Platform a použije ho k volání rozhraní Microsoft Graph API.