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

Hoe het voorbeeld werkt

Diagram waarin wordt getoond hoe de voorbeeld-app die door deze quickstart is gegenereerd, 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:

  1. Meld u als toepassingsontwikkelaar aan bij het Microsoft Entra-beheercentrum.
  2. 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.
  3. Blader naar identiteitstoepassingen>> App-registraties.
  4. Selecteer Nieuwe registratie.
  5. Voer een Naam in voor de toepassing. Gebruikers van uw app kunnen de naam zien. U kunt deze later wijzigen.
  6. Selecteer Registreren.
  7. Selecteer onder Beheren achtereenvolgens Verificatie>Platform toevoegen>iOS
  8. 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.
  9. Selecteer Configureren en sla de details van de MSAL-configuratie op voor later gebruik verderop in deze quickstart.
  10. Selecteer Gereed.

Stap 2: Het voorbeeldproject downloaden

Stap 3: Afhankelijkheden installeren

  1. Pak het zip-bestand uit.
  2. 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.

  1. Open het project in XCode.

  2. 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"
    
  3. 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"
    
  4. 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"
    
  5. Open de projectinstellingen. Voer in de sectie Identiteit de bundel-id in.

  6. Klik met de rechtermuisknop op Info.plist en selecteer Openen als>Broncode.

  7. Vervang onder het dict-hoofdknooppunt Enter_the_bundle_Id_Here door de bundel-id die u in de portal hebt gebruikt. Let op het voorvoegsel msauth. in de tekenreeks.

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    
  8. 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.