Zelfstudie: Uw iOS-app (Swift) voorbereiden voor verificatie
Dit is de tweede zelfstudie in de reeks zelfstudies die laat zien hoe u Microsoft Authentication Library (MSAL) voor iOS en macOS toevoegt aan uw iOS Swift-app.
In deze zelfstudie gaat u;
- Voeg het MSAL-framework toe aan een iOS-app (Swift).
- Een SDK-exemplaar maken.
Vereisten
- Xcode.
- Als u dit nog niet hebt gedaan, volgt u de instructies in de zelfstudie: Mobiele iOS-app (Swift) registreren en configureren en een app registreren in uw externe tenant. Zorg ervoor dat u de volgende stappen uitvoert:
- Een toepassing registreren.
- Voeg een omleidings-URL voor het platform toe.
- Schakel de openbare clientstroom in.
- Gedelegeerde machtiging voor Microsoft Graph.
- iOS-project (Swift).
Het MSAL-framework toevoegen aan een iOS-app (Swift)
De MSAL Authentication SDK wordt gebruikt voor het integreren van verificatie in uw apps met behulp van standaard OAuth2 en OpenID Connect. Hiermee kunt u zich aanmelden bij gebruikers of apps met Microsoft-identiteiten. Voer de volgende stappen uit om MSAL toe te voegen aan uw iOS-project (Swift):
- Open uw iOS-project in Xcode.
- Selecteer Pakketafhankelijkheden toevoegen... in het menu Bestand .
- Voer in
https://github.com/AzureAD/microsoft-authentication-library-for-objc
als pakket-URL en kies Pakket toevoegen
De bundel-id bijwerken
In het Apple-ecosysteem is een bundel-id een unieke id voor een toepassing. Volg deze stappen om de bundel-id in uw project bij te werken:
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>
EEN SDK-exemplaar maken
Voer de volgende stappen uit om een MSAL-exemplaar in uw project te maken:
Importeer de MSAL-bibliotheek in uw weergavecontroller door boven aan uw
ViewController
klas toe te voegenimport MSAL
.Voeg een
applicationContext
lidvariabele toe aan uw ViewController-klasse door de volgende code toe te voegen vlak voor deviewDidLoad()
functie:var applicationContext : MSALPublicClientApplication? var webViewParamaters : MSALWebviewParameters?
De code declareert twee variabelen:
applicationContext
, waarmee een exemplaar vanMSALPublicClientApplication
enwebViewParameters
, waarmee een exemplaar vanMSALWebviewParameters
.MSALPublicClientApplication
is een klasse die wordt geleverd door MSAL voor het verwerken van openbare clienttoepassingen. DitMSALWebviewParameters
is een klasse van MSAL die parameters definieert voor het configureren van de webweergave die tijdens het verificatieproces wordt gebruikt.Voeg de volgende code toe aan de weergavefunctie
viewDidLoad()
:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
De code probeert MSAL te initialiseren, waarbij eventuele fouten tijdens het proces worden verwerkt. Als er een fout optreedt, wordt de logboekregistratie bijgewerkt met de details van de fout.
Voeg de volgende code toe waarmee een functie wordt gemaakt
initMSAL()
, waarmee MSAL wordt geïnitialiseerd:func initMSAL() throws { guard let authorityURL = URL(string: Configuration.kAuthority) else { self.updateLogging(text: "Unable to create authority URL") return } let authority = try MSALCIAMAuthority(url: authorityURL) let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID, redirectUri: Configuration.kRedirectUri, authority: authority) self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration) }
Met deze code wordt de MSAL voor iOS geïnitialiseerd. Er wordt eerst geprobeerd een URL voor de instantie te maken met behulp van de opgegeven Configuration.kAuthority-tekenreeks . Als dit lukt, wordt er een MSAL-instantieobject gemaakt op basis van die URL. Vervolgens configureert het de
MSALPublicClientApplication
met de opgegeven client-id, omleidings-URI en instantie. Als alle configuraties correct zijn ingesteld, wordt de toepassingscontext geïnitialiseerd met de geconfigureerdeMSALPublicClientApplication
. Als er fouten optreden tijdens het proces, treedt er een fout op.Maak het bestand Configuration.swift en voeg de volgende configuraties toe:
import Foundation @objcMembers class Configuration { static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here" // Update the below to your client ID you received in the portal. static let kClientID = "Enter_the_Application_Id_Here" static let kRedirectUri = "Enter_the_Redirect_URI_Here" static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here" static let kScopes = ["Enter_the_Protected_API_Scopes_Here"] static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com" }
Deze Swift-configuratiecode definieert een klasse met de naam
Configuration
en wordt gemarkeerd met@objcMembers
. Het bevat statische constanten voor verschillende configuratieparameters met betrekking tot een verificatie-instelling. Deze parameters omvatten het tenantsubdomein, client-id, omleidings-URI, beveiligd API-eindpunt en bereiken. Deze configuratieconstanten moeten worden bijgewerkt met de juiste waarden die specifiek zijn voor de installatie van de toepassing.Zoek de tijdelijke aanduiding:
Enter_the_Application_Id_Here
en vervang deze door de toepassings-id (client) van de app die u eerder hebt geregistreerd.Enter_the_Redirect_URI_Here
en vervang deze door de waarde van kRedirectUri in het MSAL-configuratiebestand dat u eerder hebt gedownload toen u de omleidings-URL van het platform toevoegde.Enter_the_Protected_API_Scopes_Here
en vervang deze door de bereiken die eerder zijn vastgelegd. Als u geen bereiken hebt vastgelegd, kunt u deze bereiklijst leeg laten.Enter_the_Tenant_Subdomain_Here
en vervang het door het subdomein Directory (tenant). Als uw primaire tenantdomein bijvoorbeeld iscontoso.onmicrosoft.com
, gebruikt ucontoso
. Als u uw tenantsubdomein niet weet, leest u de details van uw tenant.
Aangepast URL-domein gebruiken (optioneel)
Gebruik een aangepast domein om de verificatie-URL volledig te merken. Vanuit gebruikersperspectief blijven gebruikers in uw domein tijdens het verificatieproces in plaats van omgeleid naar ciamlogin.com domeinnaam.
Gebruik de volgende stappen om een aangepast domein te gebruiken:
Gebruik de stappen in Aangepaste URL-domeinen inschakelen voor apps in externe tenants om aangepast URL-domein in te schakelen voor uw externe tenant.
Open het bestand Configuration.swift :
- Werk de waarde van de
kAuthority
eigenschap bij naar https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. VervangEnter_the_Custom_Domain_Here
door uw aangepaste URL-domein enEnter_the_Tenant_ID_Here
door uw tenant-id. Als u uw tenant-id niet hebt, leest u de details van uw tenant.
- Werk de waarde van de
Nadat u de wijzigingen hebt aangebracht in het bestand Configuration.swift, als uw aangepaste URL-domein is login.contoso.com en uw tenant-id aaaabbbb-0000-cccc-1111-dddd2222eeeee is, moet uw bestand er ongeveer als volgt uitzien:
import Foundation
@objcMembers
class Configuration {
static let kTenantSubdomain = "login.contoso.com"
// Update the below to your client ID you received in the portal.
static let kClientID = "Enter_the_Application_Id_Here"
static let kRedirectUri = "Enter_the_Redirect_URI_Here"
static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
Volgende stappen
Zelfstudie: Gebruikers aanmelden in de mobiele iOS-app (Swift)