Quickstart: Gebruikers aanmelden en Microsoft Graph aanroepen vanuit een iOS- of macOS-app
In deze quickstart downloadt u een codevoorbeeld en voert u dit uit. Het codevoorbeeld laat zien hoe gebruikers kunnen worden aangemeld met een systeemeigen iOS- of macOS-toepassing, en een toegangstoken kunnen krijgen om de Microsoft Graph API aan te roepen.
De quickstart is van toepassing op iOS- en macOS-apps. Sommige stappen zijn alleen nodig voor iOS-apps en worden als zodanig aangeduid.
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- XCode 10+
- iOS 10+
- macOS 10.12+
Hoe het voorbeeld werkt
Uw quickstart-app registreren
Tip
Stappen in dit artikel kunnen enigszins variëren op basis van de portal waaruit u begint.
Volg deze stappen om de toepassing te registreren en de registratiegegevens van de app handmatig toe te voegen aan uw oplossing:
- Meld u als toepassingsontwikkelaar aan bij het Microsoft Entra-beheercentrum.
- Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingen in het bovenste menu om over te schakelen naar de tenant waarin u de toepassing wilt registreren in het menu Mappen en abonnementen.
- Blader naar identiteitstoepassingen>> App-registraties.
- Selecteer Nieuwe registratie.
- Voer een Naam in voor de toepassing. Gebruikers van uw app kunnen de naam zien. U kunt deze later wijzigen.
- Selecteer Registreren.
- Selecteer onder Beheren achtereenvolgens Verificatie>Platform toevoegen>iOS
- Voer de bundel-id voor uw toepassing in. De bundel-id is een unieke tekenreeks en een unieke identificatie voor uw toepassing, bijvoorbeeld
com.<yourname>.identitysample.MSALMacOS
. Noteer de waarde die u gebruikt. De iOS-configuratie is ook van toepassing op macOS-toepassingen. - Selecteer Configureren en sla de details van de MSAL-configuratie op voor later gebruik verderop in deze quickstart.
- Selecteer Gereed.
Stap 2: Het voorbeeldproject downloaden
Stap 3: Afhankelijkheden installeren
- Pak het zip-bestand uit.
- Navigeer in een terminalvenster naar de map met het gedownloade codevoorbeeld en voer
pod install
uit om de MSAL-bibliotheek te installeren.
Stap 4: Uw project configureren
Als u hierboven optie 1 hebt geselecteerd, kunt u deze stappen overslaan.
Open het project in XCode.
Bewerk ViewController.swift en vervang de regel die begint met 'let kClientID' door het volgende codefragment. Vergeet niet om de waarde bij te werken voor
kClientID
de clientID die u hebt opgeslagen toen u uw app eerder in deze quickstart registreerde:let kClientID = "Enter_the_Application_Id_Here"
Als u een app bouwt voor nationale Microsoft Entra-clouds, vervangt u de regel die begint met 'let kGraphEndpoint' en 'let kAuthority' door de juiste eindpunten. Gebruik de standaardwaarden voor globale toegang:
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"
Andere eindpunten worden hier beschreven. Als u bijvoorbeeld de quickstart wilt uitvoeren met Microsoft Entra Duitsland, gebruikt u het volgende:
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
Open de projectinstellingen. Voer in de sectie Identiteit de bundel-id in.
Klik met de rechtermuisknop op Info.plist en selecteer Openen als>Broncode.
Vervang onder het dict-hoofdknooppunt
Enter_the_bundle_Id_Here
door de bundel-id die u in de portal hebt gebruikt. Let op het voorvoegselmsauth.
in de tekenreeks.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Bouw de app en voer deze uit.
Meer informatie
Lees deze secties voor meer informatie over deze snelstart.
MSAL ophalen
MSAL (MSAL.framework) is de bibliotheek die wordt gebruikt voor het aanmelden van gebruikers en aanvragen van tokens die worden gebruikt voor toegang tot een API die wordt beveiligd door Microsoft identity platform. U kunt MSAL toevoegen aan uw toepassing met behulp van het volgende proces:
$ vi Podfile
Voeg het volgende toe aan deze podfile (met het doel van het project):
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
Voer de CocoaPods-installatieopdracht uit:
pod install
MSAL initialiseren
U kunt de verwijzing voor MSAL toevoegen door de volgende code toe te voegen:
import MSAL
Vervolgens initialiseert u MSAL met de volgende code:
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Hierin: | Beschrijving |
---|---|
clientId |
De toepassings-id van de toepassing die is geregistreerd in portal.azure.com |
authority |
Microsoft identity platform. In de meeste gevallen is dit https://login.microsoftonline.com/common |
redirectUri |
De omleidings-URI van de toepassing. U kunt 'nil' doorgeven om de standaardwaarde te gebruiken, of uw aangepaste omleidings-URI gebruiken. |
Alleen voor iOS: extra app-vereisten
Uw app moet ook het volgende bevatten in uw AppDelegate
. Hiermee kan de tokenrespons van de verificatiebroker-app worden verwerkt door de MSAL SDK tijdens het verificatieproces.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Notitie
Als u in iOS 13+ UISceneDelegate
gebruikt in plaats van UIApplicationDelegate
, plaatst u deze code in de scene:openURLContexts:
callback (zie de documentatie van Apple).
Als u ondersteuning biedt voor UISceneDelegate en UIApplicationDelegate voor compatibiliteit met oudere iOS-versies, moet MSAL-callback in beide locaties worden geplaatst.
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)
}
Ten slotte moet de app de vermelding LSApplicationQueriesSchemes
bevatten in Info.plist, naast CFBundleURLTypes
. In het voorbeeld is deze vermelding al opgenomen.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Gebruikers aanmelden en tokens aanvragen
MSAL biedt twee methoden voor het verkrijgen van tokens: acquireToken
en acquireTokenSilent
.
acquireToken: een token interactief ophalen
In sommige situaties moeten gebruikers communiceren met Microsoft identity platform. In dergelijke gevallen kunnen eindgebruikers verplicht zijn om hun account te selecteren, hun referenties in te voeren of toestemming te geven voor de machtigingen van uw app. Voorbeeld:
- De eerste keer dat gebruikers zich aanmelden bij de toepassing
- Als gebruiker hun wachtwoord opnieuw instellen, moeten ze hun referenties invoeren
- Wanneer via de toepassing voor het eerst toegang wordt aangevraagd tot een resource
- Wanneer MFA of ander beleid voor voorwaardelijke toegang is vereist
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Hierin: | Beschrijving |
---|---|
scopes |
Bevat de bereiken die worden aangevraagd (dat wil gezegd, [ "user.read" ] voor Microsoft Graph of [ "<Application ID URL>/scope" ] voor aangepaste web-API's (api://<Application ID>/access_as_user )) |
acquireTokenSilent: Een toegangstoken op de achtergrond ophalen
Gebruikers zouden zich niet telkens moeten aanmelden wanneer apps een token aanvragen. Als de gebruiker al is aangemeld, kunnen apps via deze methode tokens op de achtergrond aanvragen.
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 */}
}
Hierin: | Beschrijving |
---|---|
scopes |
Bevat de bereiken die worden aangevraagd (dat wil gezegd, [ "user.read" ] voor Microsoft Graph of [ "<Application ID URL>/scope" ] voor aangepaste web-API's (api://<Application ID>/access_as_user )) |
account |
Het account waarvoor een token wordt aangevraagd. Deze quickstart betreft een toepassing met één account. Als u een app met meerdere accounts wilt maken, moet u logica definiëren om te bepalen welk account moet worden gebruikt voor tokenaanvragen met behulp van accountsFromDeviceForParameters:completionBlock: en doorgifte van de juiste accountIdentifier |
Help en ondersteuning
Als u hulp nodig hebt, een probleem wilt melden of meer informatie wilt over uw ondersteuningsopties, raadpleegt u Hulp en ondersteuning voor ontwikkelaars.
Volgende stappen
Ga naar de stapsgewijze zelfstudie waarin u een iOS- of macOS-app bouwt die een toegangstoken van het Microsoft-identiteitsplatform ontvangt en dit gebruikt om de Microsoft Graph-API aan te roepen.