Snabbstart: Logga in användare och anropa Microsoft Graph från en iOS- eller macOS-app

I den här snabbstarten laddar du ned och kör ett kodexempel som visar hur ett inbyggt iOS- eller macOS-program kan logga in användare och få en åtkomsttoken för att anropa Microsoft Graph API.

Snabbstarten gäller för både iOS- och macOS-appar. Vissa steg behövs endast för iOS-appar och anges som sådana.

Förutsättningar

Så här fungerar exemplet

Diagram som visar hur exempelappen som genereras av den här snabbstarten fungerar.

Registrera snabbstartsappen

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Du registrerar programmet och lägger till appens registreringsinformationen i lösningen manuellt med hjälp av följande steg:

  1. Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.
  2. Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till den klientorganisation där du vill registrera programmet från menyn Kataloger + prenumerationer.
  3. Bläddra till Identitetsprogram>> Appregistreringar.
  4. Välj Ny registrering.
  5. Ange ett namn för ditt program. Användare av din app kan se det här namnet och du kan ändra det senare.
  6. Välj Registrera.
  7. Under Hantera väljer du Autentisering>Lägg till plattform>iOS.
  8. Ange paketidentifieraren för ditt program. Paketidentifieraren är en unik sträng som unikt identifierar ditt program, till exempel com.<yourname>.identitysample.MSALMacOS. Anteckna det värde som du använder. Observera att iOS-konfigurationen även gäller för macOS-program.
  9. Välj Konfigurera och spara MSAL-konfigurationsinformationen för senare i den här snabbstarten .
  10. Välj Klar.

Steg 2: Ladda ned exempelprojektet

Steg 3: Installera beroenden

  1. Extrahera zip-filen.
  2. I ett terminalfönster navigerar du till mappen med det nedladdade kodexemplet och kör pod install för att installera det senaste MSAL-biblioteket.

Steg 4: Konfigurera projektet

Om du har valt Alternativ 1 ovan kan du hoppa över de här stegen.

  1. Öppna projektet i XCode.

  2. Redigera ViewController.swift och ersätt raden som börjar med "let kClientID" med följande kodfragment. Kom ihåg att uppdatera värdet för kClientID med det clientID som du sparade när du registrerade appen tidigare i den här snabbstarten:

    let kClientID = "Enter_the_Application_Id_Here"
    
  3. Om du skapar en app för nationella Microsoft Entra-moln ersätter du raden som börjar med "let kGraphEndpoint" och "let kAuthority" med rätt slutpunkter. Använd standardvärden för global åtkomst:

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  4. Andra slutpunkter dokumenteras här. Om du till exempel vill köra snabbstarten med Microsoft Entra Tyskland använder du följande:

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  5. Öppna projektinställningarna. I avsnittet Identitet anger du paketidentifieraren.

  6. Högerklicka på Info.plist och välj Öppna som>källkod.

  7. Under rotnoden dict ersätter Enter_the_bundle_Id_Here du med det paket-ID som du använde i portalen. msauth. Observera prefixet i strängen.

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    
  8. Skapa och kör appen!

Mer information

Läs dessa avsnitten om du vill lära dig mer om den här snabbstarten.

Hämta MSAL

MSAL (MSAL.framework) är det bibliotek som används för att logga in användare och begära token som används för att komma åt ett API som skyddas av Microsofts identitetsplattform. Du kan lägga till MSAL i ditt program med hjälp av följande process:

$ vi Podfile

Lägg till följande i den här poddfilen (med projektets mål):

use_frameworks!

target 'MSALiOS' do
   pod 'MSAL'
end

Kör installationskommandot för CocoaPods:

pod install

Initiera MSAL

Du kan lägga till referensen för MSAL genom att lägga till följande kod:

import MSAL

Initiera sedan MSAL med hjälp av följande kod:

let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)

let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Där: beskrivning
clientId Program-ID från den app som registrerats i portal.azure.com
authority Microsofts identitetsplattform. I de flesta fall kommer detta att https://login.microsoftonline.com/common
redirectUri Programmets omdirigerings-URI. Du kan skicka "nil" för att använda standardvärdet eller din anpassade omdirigerings-URI.

Endast för iOS, ytterligare appkrav

Appen måste också ha följande i .AppDelegate På så sätt kan MSAL SDK hantera tokensvar från Auth Broker-appen när du utför autentisering.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

    return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}

Kommentar

Om du använder UISceneDelegate i iOS 13+ i stället för UIApplicationDelegateplacerar du koden i återanropet scene:openURLContexts: i stället (se Apples dokumentation). Om du stöder både UISceneDelegate och UIApplicationDelegate för kompatibilitet med äldre iOS måste MSAL-återanrop placeras på båda platserna.

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

Slutligen måste din app ha en LSApplicationQueriesSchemes post i Info.plisttillsammans med .CFBundleURLTypes Exemplet medföljer detta.

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>msauthv2</string>
   <string>msauthv3</string>
</array>

Logga in användare och begär token

MSAL har två metoder som används för att hämta token: acquireToken och acquireTokenSilent.

acquireToken: Hämta en token interaktivt

Vissa situationer kräver att användarna interagerar med Microsofts identitetsplattform. I dessa fall kan slutanvändaren behöva välja sitt konto, ange sina autentiseringsuppgifter eller godkänna appens behörigheter. Exempel:

  • Första gången användaren loggar in på programmet
  • Om en användare återställer sitt lösenord måste de ange sina autentiseringsuppgifter
  • När ditt program begär åtkomst till en resurs för första gången
  • När MFA eller andra principer för villkorsstyrd åtkomst krävs
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Där: beskrivning
scopes Innehåller de omfång som begärs (dvs. [ "user.read" ] för Microsoft Graph eller [ "<Application ID URL>/scope" ] för anpassade webb-API:er (api://<Application ID>/access_as_user))

acquireTokenSilent: Hämta en åtkomsttoken tyst

Appar bör inte kräva att användarna loggar in varje gång de begär en token. Om användaren redan har loggat in tillåter den här metoden att appar begär token tyst.

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 */}
}
Där: beskrivning
scopes Innehåller de omfång som begärs (dvs. [ "user.read" ] för Microsoft Graph eller [ "<Application ID URL>/scope" ] för anpassade webb-API:er (api://<Application ID>/access_as_user))
account Kontot som en token begärs för. Den här snabbstarten handlar om ett enda kontoprogram. Om du vill skapa en app med flera konton måste du definiera logik för att identifiera vilket konto som ska användas för tokenbegäranden som använder accountsFromDeviceForParameters:completionBlock: och skickar rätt accountIdentifier

Hjälp och support

Om du behöver hjälp, vill rapportera ett problem eller vill lära dig mer om dina supportalternativ kan du läsa Hjälp och support för utvecklare.

Nästa steg

Gå vidare till den stegvisa självstudien där du skapar en iOS- eller macOS-app som hämtar en åtkomsttoken från Microsofts identitetsplattform och använder den för att anropa Microsoft Graph API.