Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie leert u hoe u een iOS- of iPadOS-toepassing wijzigt ter ondersteuning van de modus Gedeeld apparaat (SDM). SDM is een Microsoft Entra ID functie waarmee organisaties een iOS-, iPadOS- of Android-apparaat kunnen configureren om eenvoudig te delen tussen meerdere werknemers, een gangbare procedure in de frontlinewerkrolinstellingen.
In deze handleiding leert u:
- Voeg ondersteuning toe voor de modus voor één account.
- Configureer uw app voor het gebruik van SDM.
- Detecteer modus voor gedeeld apparaat.
- Bepaal of de aangemelde gebruiker is gewijzigd.
Prerequisites
Modus voor gedeeld apparaat detecteren
Het detecteren van de modus voor gedeelde apparaten is belangrijk voor uw toepassing. Veel toepassingen vereisen een wijziging in hun gebruikerservaring (UX) wanneer de toepassing wordt gebruikt op een gedeeld apparaat. Uw toepassing kan bijvoorbeeld een functie 'Registreren' hebben, die niet geschikt is voor een frontlinewerker, omdat ze waarschijnlijk al een account hebben. Mogelijk wilt u ook extra beveiliging toevoegen aan de verwerking van gegevens van uw toepassing als deze zich in de modus gedeeld apparaat bevindt.
Gebruik de getDeviceInformationWithParameters:completionBlock: API in de MSALPublicClientApplication api om te bepalen of een app wordt uitgevoerd op een apparaat in de modus gedeeld apparaat.
In de volgende codefragmenten ziet u voorbeelden van het gebruik van de getDeviceInformationWithParameters:completionBlock: API.
Swift
application.getDeviceInformation(with: nil, completionBlock: { (deviceInformation, error) in
guard let deviceInfo = deviceInformation else {
return
}
let isSharedDevice = deviceInfo.deviceMode == .shared
// Change your app UX if needed
})
Objective-C
[application getDeviceInformationWithParameters:nil
completionBlock:^(MSALDeviceInformation * _Nullable deviceInformation, NSError * _Nullable error)
{
if (!deviceInformation)
{
return;
}
BOOL isSharedDevice = deviceInformation.deviceMode == MSALDeviceModeShared;
// Change your app UX if needed
}];
De aangemelde gebruiker ophalen en bepalen of de gebruiker op het apparaat is gewijzigd
Een ander belangrijk onderdeel van het ondersteunen van de modus gedeeld apparaat is het bepalen van de status van de gebruiker op het apparaat en het wissen van toepassingsgegevens als een gebruiker is gewijzigd of als er helemaal geen gebruiker op het apparaat is. U bent verantwoordelijk voor het controleren of gegevens niet naar een andere gebruiker worden gelekt.
U kunt getCurrentAccountWithParameters:completionBlock: de API gebruiken om het account dat momenteel op het apparaat is aangemeld, op te vragen.
Swift
let msalParameters = MSALParameters()
msalParameters.completionBlockQueue = DispatchQueue.main
application.getCurrentAccount(with: msalParameters, completionBlock: { (currentAccount, previousAccount, error) in
// currentAccount is the currently signed in account
// previousAccount is the previously signed in account if any
})
Objective-C
MSALParameters *parameters = [MSALParameters new];
parameters.completionBlockQueue = dispatch_get_main_queue();
[application getCurrentAccountWithParameters:parameters
completionBlock:^(MSALAccount * _Nullable account, MSALAccount * _Nullable previousAccount, NSError * _Nullable error)
{
// currentAccount is the currently signed in account
// previousAccount is the previously signed in account if any
}];
Globaal aanmelden als een gebruiker
Wanneer een apparaat is geconfigureerd als een gedeeld apparaat, kan uw toepassing de acquireTokenWithParameters:completionBlock: API aanroepen om u aan te melden bij het account. Het account is wereldwijd beschikbaar voor alle in aanmerking komende apps op het apparaat nadat de eerste app zich heeft aangemeld bij het account.
Objective-C
MSALInteractiveTokenParameters *parameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"api://myapi/scope"] webviewParameters:[self msalTestWebViewParameters]];
parameters.loginHint = self.loginHintTextField.text;
[application acquireTokenWithParameters:parameters completionBlock:completionBlock];
Een gebruiker wereldwijd afmelden
Met de volgende code wordt het aangemelde account verwijderd en worden tokens in de cache gewist van niet alleen de app, maar ook van het apparaat dat zich in de modus gedeeld apparaat bevindt. De gegevens uit uw toepassing worden echter niet gewist. U moet de gegevens uit uw toepassing wissen en alle gegevens in de cache wissen die uw toepassing mogelijk aan de gebruiker weergeeft.
Swift
let account = .... /* account retrieved above */
let signoutParameters = MSALSignoutParameters(webviewParameters: self.webViewParamaters!)
signoutParameters.signoutFromBrowser = true // To trigger a browser signout in Safari.
application.signout(with: account, signoutParameters: signoutParameters, completionBlock: {(success, error) in
if let error = error {
// Signout failed
return
}
// Sign out completed successfully
})
Objective-C
MSALAccount *account = ... /* account retrieved above */;
MSALSignoutParameters *signoutParameters = [[MSALSignoutParameters alloc] initWithWebviewParameters:webViewParameters];
signoutParameters.signoutFromBrowser = YES; // To trigger a browser signout in Safari.
[application signoutWithAccount:account signoutParameters:signoutParameters completionBlock:^(BOOL success, NSError * _Nullable error)
{
if (!success)
{
// Signout failed
return;
}
// Sign out completed successfully
}];
De Microsoft Enterprise SSO-invoegtoepassing voor Apple-apparaten wist alleen de status voor toepassingen. De status wordt niet gewist in de Safari-browser. U kunt de optionele signoutFromBrowser eigenschap die wordt weergegeven in codefragmenten gebruiken om een browser af te melden in Safari. Hierdoor wordt de browser kort gestart op het apparaat.
Uitzending ontvangen om globale afmelding te detecteren die is geïnitieerd vanuit andere toepassingen
Als u de uitzending van accountwijziging wilt ontvangen, moet u een broadcast-ontvanger registreren. Wanneer een uitzending voor accountwijziging wordt ontvangen, haalt u onmiddellijk de aangemelde gebruiker op en bepaalt u of een gebruiker op het apparaat is gewijzigd. Als er een wijziging wordt gedetecteerd, start u het opschonen van gegevens voor een eerder aangemeld account. Het wordt aanbevolen om alle bewerkingen correct te stoppen en gegevens op te ruimen.
In het volgende codefragment ziet u hoe u een broadcast-ontvanger kunt registreren.
NSString *const MSAL_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY = @"SHARED_MODE_CURRENT_ACCOUNT_CHANGED";
- (void) registerDarwinNotificationListener
{
CFNotificationCenterRef center =
CFNotificationCenterGetDarwinNotifyCenter();
CFNotificationCenterAddObserver(center, nil,
sharedModeAccountChangedCallback,
(CFStringRef)MSAL_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY,
nil, CFNotificationSuspensionBehaviorDeliverImmediately);
}
// CFNotificationCallbacks used specifically for Darwin notifications leave userInfo unused
void sharedModeAccountChangedCallback(CFNotificationCenterRef center, void * observer, CFStringRef name, void const * object, __unused CFDictionaryRef userInfo)
{
// Invoke account cleanup logic here
}
Zie voor meer informatie over de beschikbare opties voor CFNotificationAddObserver of om de bijbehorende methodehandtekeningen in Swift te bekijken:
Voor iOS is voor uw app een achtergrondmachtiging vereist om actief te blijven op de achtergrond en te luisteren naar Darwin-meldingen. De achtergrondmogelijkheid moet worden toegevoegd ter ondersteuning van een andere achtergrondbewerking. Uw app kan worden afgewezen in de Apple App Store als deze alleen naar Darwin-meldingen kan luisteren. Als uw app al is geconfigureerd voor het voltooien van achtergrondbewerkingen, kunt u de listener toevoegen als onderdeel van die bewerking. Zie Achtergronduitvoeringsmodi voor iOS configureren voor meer informatie over de achtergrondmogelijkheden
Microsoft toepassingen die ondersteuning bieden voor de modus gedeeld apparaat
Deze Microsoft-toepassingen ondersteunen Microsoft Entra modus voor gedeelde apparaten:
- Microsoft Teams
- Microsoft Viva Engage (eerder Yammer)
- Microsoft Outlook
- Microsoft Power Apps
- Microsoft Power BI - Mobiel
- Microsoft Edge
- Microsoft Word
- Microsoft Excel
- Microsoft PowerPoint
Important
De openbare previewversie is beschikbaar zonder een service level agreement (SLA) en wordt niet aanbevolen voor productieworkloads. Sommige functies worden mogelijk niet ondersteund of hebben beperkte mogelijkheden. Zie Universele licentievoorwaarden voor onlineservices voor meer informatie.
MDM's van derden die ondersteuning bieden voor de modus gedeeld apparaat
Deze mdm-providers (Mobile Apparaatbeheer) van derden ondersteunen Microsoft Entra modus voor gedeelde apparaten:
Volgende stappen
Als u de modus voor gedeelde apparaten in actie wilt zien, bevat het volgende codevoorbeeld op GitHub een voorbeeld van het uitvoeren van een frontline worker-app op een iOS-apparaat in de modus gedeeld apparaat: