Een mobiele app configureren die web-API's aanroept
Nadat u een toepassing hebt gemaakt, leert u hoe u de code configureert met behulp van de parameters voor app-registratie. Mobiele toepassingen leveren enkele uitdagingen op met betrekking tot het inpassen in het creatieframework.
Microsoft-bibliotheken die mobiele apps ondersteunen
De volgende Microsoft-bibliotheken ondersteunen mobiele apps:
Platform | Project over GitHub |
Pakket | Aan de slag |
Gebruikers aanmelden | Toegang krijgen tot web-API's | Algemeen beschikbaar (GA) of Openbare preview1 |
---|---|---|---|---|---|---|
Android (Java) | MSAL Android | MSAL | Snelstartgids | GA | ||
Android (Kotlin) | MSAL Android | MSAL | — | GA | ||
iOS (Swift/Obj-C) | MSAL voor iOS en macOS | MSAL | Zelfstudie | GA | ||
Xamarin (.NET) | MSAL.NET | Microsoft.Identity.Client | — | GA |
1 Universele licentievoorwaarden voor onlineservices zijn van toepassing op bibliotheken in openbare preview.
De toepassing instantiëren
Android
Mobiele toepassingen gebruiken de klasse PublicClientApplication
. U kunt deze als volgt instantiëren:
PublicClientApplication sampleApp = new PublicClientApplication(
this.getApplicationContext(),
R.raw.auth_config);
iOS
Mobiele toepassingen op iOS moeten de klasse MSALPublicClientApplication
instantiëren. Gebruik de volgende code om de klasse te instantiëren.
NSError *msalError = nil;
MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:&msalError];
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
if let application = try? MSALPublicClientApplication(configuration: config){ /* Use application */}
Aanvullende MSALPublicClientApplicationConfig-eigenschappen kunnen de standaardinstantie overschrijven, een omleidings-URI opgeven of het gedrag van MSAL-tokencaching wijzigen.
Xamarin of UWP
In deze sectie wordt uitgelegd hoe u de toepassing kunt instantiëren voor Xamarin.iOS-, Xamarin.Android- en UWP-apps.
Notitie
MSAL.NET versies 4.61.0 en hoger bieden geen ondersteuning voor Universeel Windows-platform (UWP), Xamarin Android en Xamarin iOS. U wordt aangeraden uw Xamarin-toepassingen te migreren naar moderne frameworks zoals MAUI. Lees meer over de afschaffing in Aankondiging van de geplande afschaffing van MSAL.NET voor Xamarin en UWP.
De toepassing instantiëren
In Xamarin of UWP kunt u de toepassing het eenvoudigst instantiëren door de volgende code te gebruiken. In deze code is ClientId
de unieke id van uw geregistreerde app.
var app = PublicClientApplicationBuilder.Create(clientId)
.Build();
Aanvullende With<Parameter>
-methoden stellen de bovenliggende gebruikersinterface in, overschrijven de standaardinstantie, geven een clientnaam en -versie op voor telemetrie, geven een omleidings-URI op en geven de HTTP-factory op die moet worden gebruikt. De HTTP-factory kan bijvoorbeeld worden gebruikt om proxy's te verwerken en telemetrie en logboekregistratie op te geven.
De volgende gedeelten bevatten meer informatie over het instantiëren van de toepassing.
De bovenliggende gebruikersinterface, het bovenliggende venster of de bovenliggende activiteit opgeven
Geef op Android de bovenliggende activiteit door voordat u de interactieve verificatie uitvoert. Geef op iOS, wanneer u een broker gebruikt, ViewController
door. Op dezelfde manier wilt u op UWP mogelijk het bovenliggende venster doorgeven. U geeft het door wanneer u het token ophaalt. Maar wanneer u de app maakt, kunt u ook een callback opgeven als gemachtigde die UIParent
retourneert.
IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId)
.ParentActivityOrWindowFunc(() => parentUi)
.Build();
Op Android raden we u aan om CurrentActivityPlugin
te gebruiken. De resulterende PublicClientApplication
-opbouwcode ziet er als volgt uit:
// Requires MSAL.NET 4.2 or above
var pca = PublicClientApplicationBuilder
.Create("<your-client-id-here>")
.WithParentActivityOrWindow(() => CrossCurrentActivity.Current)
.Build();
Meer parameters voor het bouwen van apps zoeken
Zie de lijst met methoden voor alle methoden die beschikbaar zijn in PublicClientApplicationBuilder
.
Zie de referentiedocumentatie voor een beschrijving van alle opties die worden weergegeven in PublicClientApplicationOptions
.
Taken voor MSAL voor iOS en macOS
Deze taken zijn nodig wanneer u MSAL gebruikt voor iOS en macOS:
- De
openURL
-callback implementeren - Toegang tot sleutelketengroepen inschakelen
- Browsers en WebViews aanpassen
Taken voor Xamarin.Android
Als u Xamarin.Android gebruikt, voert u de volgende taken uit:
- Zorg ervoor dat het besturingselement teruggaat naar MSAL nadat het interactieve gedeelte van de verificatiestroom is beëindigd
- Het Android-manifest bijwerken
- De ingesloten webweergave gebruiken (optioneel)
- Problemen oplossen indien nodig
Zie Overwegingen voor Xamarin.Android voor meer informatie.
Zie Xamarin.Android-specifieke overwegingen met MSAL.NET voor overwegingen over de browsers op Android.
Taken voor UWP
Op UWP kunt u bedrijfsnetwerken gebruiken. In de volgende secties worden de taken beschreven die u moet uitvoeren in het bedrijfsscenario.
Zie UWP-specifieke overwegingen met MSAL.NET voor meer informatie.
De toepassing configureren voor het gebruik van de broker
Op Android en iOS schakelen brokers het volgende in:
- Eenmalige aanmelding (SSO): u kunt eenmalige aanmelding gebruiken voor apparaten die zijn geregistreerd bij Microsoft Entra ID. Wanneer u eenmalige aanmelding gebruikt, hoeven uw gebruikers zich niet bij elke toepassing aan te melden.
- Apparaatidentificatie: Met deze instelling wordt beleid voor voorwaardelijke toegang ingeschakeld dat is gerelateerd aan Microsoft Entra-apparaten. Het verificatieproces maakt gebruik van het apparaatcertificaat dat is gemaakt toen het apparaat aan de werkplek werd toegevoegd.
- Verificatie van toepassingsidentificatie: wanneer een toepassing de broker aanroept, wordt de omleidings-URL doorgegeven. Vervolgens controleert de makelaar deze.
De broker inschakelen op Xamarin
Als u de broker op Xamarin wilt inschakelen, gebruikt u de parameter WithBroker()
wanneer u de methode PublicClientApplicationBuilder.CreateApplication
aanroept. .WithBroker()
is standaard ingesteld op Waar.
Als u brokered verificatie voor Xamarin.iOS wilt inschakelen, volgt u de stappen in de sectie Xamarin.iOS in dit artikel.
De broker voor MSAL voor Android inschakelen
Zie Brokered verificatie op Android voor meer informatie over het inschakelen van een broker op Android.
De broker voor MSAL voor iOS en macOS inschakelen
Brokered-verificatie is standaard ingeschakeld voor Microsoft Entra-scenario's in MSAL voor iOS en macOS.
De volgende secties bevatten instructies om uw toepassing te configureren voor ondersteuning van brokered verificatie voor MSAL voor Xamarin.iOS of MSAL voor iOS en macOS. De twee reeksen instructies bevatten enkele verschillende stappen.
Brokered verificatie inschakelen voor Xamarin iOS
Volg de stappen in deze sectie om uw Xamarin.iOS-app te laten communiceren met de Microsoft Authenticator-app.
Stap 1: Broker-ondersteuning inschakelen
Broker-ondersteuning is standaard uitgeschakeld. U schakelt deze in voor een afzonderlijke PublicClientApplication
-klasse. Gebruik de parameter WithBroker()
wanneer u de PublicClientApplication
-klasse maakt via PublicClientApplicationBuilder
. De parameter WithBroker()
is standaard ingesteld op true.
var app = PublicClientApplicationBuilder
.Create(ClientId)
.WithBroker()
.WithReplyUri(redirectUriOnIos) // $"msauth.{Bundle.Id}://auth" (see step 6 below)
.Build();
Stap 2: AppDelegate bijwerken om de callback af te handelen
Wanneer MSAL.NET de broker aanroept, roept de broker vervolgens uw toepassing terug. De broker roept de toepassing terug met behulp van de methode AppDelegate.OpenUrl
. Omdat MSAL wacht op het antwoord van de broker, moet uw toepassing samenwerken om MSAL.NET terug te roepen. U stelt dit gedrag in door het AppDelegate.cs
-bestand bij te werken om de methode te overschrijven, zoals in de volgende code wordt weergegeven.
public override bool OpenUrl(UIApplication app, NSUrl url,
string sourceApplication,
NSObject annotation)
{
if (AuthenticationContinuationHelper.IsBrokerResponse(sourceApplication))
{
AuthenticationContinuationHelper.SetBrokerContinuationEventArgs(url);
return true;
}
else if (!AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(url))
{
return false;
}
return true;
}
Deze methode wordt aangeroepen wanneer de toepassing wordt gestart. Het is een mogelijkheid om het antwoord van de broker te verwerken en het verificatieproces te voltooien dat MSAL.NET heeft gestart.
Stap 3: een UIViewController() instellen
Voor Xamarin iOS hoeft u normaal gesproken geen objectvenster in te stellen. Maar in dit geval moet u het zo instellen dat u antwoorden kunt verzenden naar en ontvangen van een broker. Als u een objectvenster wilt instellen, stelt u in AppDelegate.cs
een ViewController
in.
Voer de volgende stappen uit om het objectvenster in te stellen:
Stel in
AppDelegate.cs
deApp.RootViewController
in op een nieuweUIViewController()
. Deze instelling zorgt ervoor dat de aanroep naar de brokerUIViewController
omvat. Als deze niet juist is ingesteld, wordt mogelijk deze fout weergegeven:"uiviewcontroller_required_for_ios_broker":"UIViewController is null, so MSAL.NET cannot invoke the iOS broker. See https://aka.ms/msal-net-ios-broker."
Gebruik
.WithParentActivityOrWindow(App.RootViewController)
in de aanroepAcquireTokenInteractive
. Geef de verwijzing door naar het objectvenster dat u gaat gebruiken. Hier volgt een voorbeeld:In
App.cs
:public static object RootViewController { get; set; }
In
AppDelegate.cs
:LoadApplication(new App()); App.RootViewController = new UIViewController();
In de aanroep
AcquireToken
:result = await app.AcquireTokenInteractive(scopes) .WithParentActivityOrWindow(App.RootViewController) .ExecuteAsync();
Stap 4: Een URL-schema registreren
MSAL.NET gebruikt URL's om de broker aan te roepen en vervolgens het antwoord van de broker naar uw app terug te sturen. Registreer het URL-schema van uw app in het bestand Info.plist
om de retour af te ronden.
Voer de volgende stappen uit om het URL-schema van uw app te registreren:
Voeg een
CFBundleURLSchemes
het voorvoegselmsauth
toe.Voeg
CFBundleURLName
toe aan het einde. Volg dit patroon:$"msauth.(BundleId)"
Hier is
BundleId
een unieke identificatie van uw apparaat. AlsBundleId
bijvoorbeeldyourcompany.xforms
is, ismsauth.com.yourcompany.xforms
uw URL-schema.Dit URL-schema wordt onderdeel van de omleidings-URI die uw app uniek identificeert wanneer deze het antwoord van de broker ontvangt.
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>com.yourcompany.xforms</string> <key>CFBundleURLSchemes</key> <array> <string>msauth.com.yourcompany.xforms</string> </array> </dict> </array>
Stap 5: Toevoegen aan de sectie LSApplicationQueriesSchemes
MSAL gebruikt –canOpenURL:
om te controleren of de broker is geïnstalleerd op het apparaat. In iOS 9 heeft Apple de schema's vergrendeld waarvoor een toepassing query's kan uitvoeren.
Voeg msauthv2
toe aan de sectie LSApplicationQueriesSchemes
van het bestand Info.plist
, zoals in het volgende voorbeeld:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
</array>
Brokered verificatie voor MSAL voor iOS en macOS
Brokered-verificatie is standaard ingeschakeld voor Microsoft Entra-scenario's.
Stap 1: AppDelegate bijwerken om de callback af te handelen
Wanneer MSAL voor iOS en macOS de broker aanroept, roept de broker terug naar uw toepassing met behulp van de methode openURL
. Omdat MSAL wacht op het antwoord van de broker, moet uw toepassing samenwerken om MSAL terug te roepen. U stelt deze mogelijkheid in door het AppDelegate.m
-bestand bij te werken om de methode te overschrijven, zoals in de volgende codevoorbeelden wordt weergegeven.
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [MSALPublicClientApplication handleMSALResponse:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
guard let sourceApplication = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String else {
return false
}
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApplication)
}
Als u UISceneDelegate
in gebruikt hebt genomen op iOS 13 of hoger, plaatst u de MSAL-callback in plaats daarvan in de scene:openURLContexts:
van UISceneDelegate
. MSAL handleMSALResponse:sourceApplication:
mag slechts één keer worden aangeroepen voor elke URL.
Zie de Apple-documentatie voor meer informatie.
Stap 2: Een URL-schema registreren
MSAL voor iOS en macOS gebruikt URL's om de broker aan te roepen en vervolgens het broker-antwoord naar uw app te retourneren. Registreer het URL-schema voor uw app in het bestand Info.plist
om de retour af te ronden.
Een schema voor uw app registreren:
Voeg het voorvoegsel
msauth
toe aan uw aangepaste URL-schema.Voeg uw bundel-id toe aan het einde van uw schema. Volg dit patroon:
$"msauth.(BundleId)"
Hier is
BundleId
een unieke identificatie van uw apparaat. AlsBundleId
bijvoorbeeldyourcompany.xforms
is, ismsauth.com.yourcompany.xforms
uw URL-schema.Dit URL-schema wordt onderdeel van de omleidings-URI die uw app uniek identificeert wanneer deze het antwoord van de broker ontvangt. Zorg ervoor dat de omleidings-URI in de indeling
msauth.(BundleId)://auth
is geregistreerd voor uw toepassing.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.[BUNDLE_ID]</string> </array> </dict> </array>
Stap 3: LSApplicationQueriesSchemes toevoegen
Voeg LSApplicationQueriesSchemes
toe om aanroepen naar de Microsoft Authenticator-app toe te staan, als deze is geïnstalleerd.
Notitie
Het msauthv3
-schema is nodig wanneer uw app wordt gecompileerd met Xcode 11 en hoger.
Hier volgt een voorbeeld van het toevoegen van LSApplicationQueriesSchemes
:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Brokered verificatie voor Xamarin.Android
Zie Brokered verificatie op Xamarin.Android voor meer informatie over het inschakelen van een broker op Android.
Volgende stappen
Ga verder met het volgende artikel in dit scenario: Een token ophalen.