Az iOS- vagy iPadOS-alkalmazás módosítása a megosztott eszköz mód támogatásához

Ebben az oktatóanyagban megtudhatja, hogyan módosíthatja az iOS- vagy iPadOS-alkalmazásokat a megosztott eszköz mód (SDM) támogatásához. Az SDM egy Microsoft Entra ID funkció, amely lehetővé teszi, hogy a szervezetek iOS, iPadOS vagy Android rendszerű eszközt konfiguráljanak a több alkalmazott közötti egyszerű megosztáshoz, ami az előtérbeli feldolgozók beállításainak gyakori gyakorlata.

Ebben az útmutatóban Ön:

  • Támogatás hozzáadása egyfiókos módhoz.
  • Konfigurálja az alkalmazást az SDM használatára.
  • Megosztott eszköz mód észlelése.
  • Állapítsa meg, hogy a bejelentkezett felhasználó megváltozott-e.

Prerequisites

Megosztott eszköz mód észlelése

A megosztott eszköz mód észlelése fontos az alkalmazás számára. Sok alkalmazás felhasználói élményének (UX) megváltoztatására van szükség, amikor az alkalmazást megosztott eszközön használják. Előfordulhat például, hogy az alkalmazás rendelkezik egy "Regisztráció" funkcióval, amely nem megfelelő az előtérbeli feldolgozók számára, mert valószínűleg már rendelkezik fiókkal. Ha megosztott eszköz módban van, további biztonságot is érdemes hozzáadni az alkalmazás adatainak kezeléséhez.

getDeviceInformationWithParameters:completionBlock: Az API MSALPublicClientApplication használatával állapítsa meg, hogy egy alkalmazás megosztott eszköz módban fut-e egy eszközön.

Az alábbi kódrészletek példákat mutatnak az getDeviceInformationWithParameters:completionBlock: API használatára.

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
}];

Kérje le a bejelentkezett felhasználót, és állapítsa meg, hogy megváltozott-e egy felhasználó az eszközön

A megosztott eszköz mód támogatásának másik fontos része a felhasználó állapotának meghatározása az eszközön, valamint az alkalmazásadatok törlése, ha a felhasználó megváltozott, vagy ha egyáltalán nincs felhasználó az eszközön. Önnek kell gondoskodnia arról, hogy az adatok ne szivárogjanak ki egy másik felhasználó számára.

Az API használatával getCurrentAccountWithParameters:completionBlock: lekérdezheti az eszközön jelenleg bejelentkezett fiókot.

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
}];

Felhasználó globális bejelentkezése

Ha egy eszköz megosztott eszközként van konfigurálva, az alkalmazás meghívhatja az acquireTokenWithParameters:completionBlock: API-t a fiókba való bejelentkezéshez. A fiók globálisan elérhető lesz az eszközön lévő összes jogosult alkalmazás számára, miután az első alkalmazás bejelentkezett a fiókba.

Objective-C

MSALInteractiveTokenParameters *parameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"api://myapi/scope"] webviewParameters:[self msalTestWebViewParameters]];

parameters.loginHint = self.loginHintTextField.text;

[application acquireTokenWithParameters:parameters completionBlock:completionBlock];

Felhasználó globális kijelentkeztetése

Az alábbi kód eltávolítja a bejelentkezett fiókot, és nemcsak az alkalmazásból, hanem a megosztotteszköz-módban lévő eszközről is törli a gyorsítótárazott tokeneket. Ez azonban nem törli az adatokat az alkalmazásból. Törölnie kell az adatokat az alkalmazásból, és törölnie kell minden olyan gyorsítótárazott adatot, amit az alkalmazás megjeleníthet a felhasználó számára.

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

}];

Az Apple-eszközök Microsoft Enterprise SSO beépülő modulja csak az alkalmazások állapotát törli. Nem törli az állapotot a Safari böngészőben. A kódrészletekben látható opcionális signoutFromBrowser tulajdonság használatával elindíthatja a böngésző kijelentkezést a Safariban. Emiatt a böngésző rövid időre elindul az eszközön.

Közvetítés fogadása más alkalmazásokból kezdeményezett globális kijelentkezés észleléséhez

A fiók módosítás közvetítésének fogadásához regisztrálnia kell egy broadcast fogadót. Amikor egy fiókmódosítási adás érkezik, azonnal kérje le a bejelentkezett felhasználót, és állapítsa meg, hogy megváltozott-e egy felhasználó az eszközön. Ha változás észlelhető, kezdeményezheti a korábban bejelentkezett fiók adatainak törlését. Javasoljuk, hogy megfelelően állítsa le a műveleteket, és végezze el az adatok törlését.

Az alábbi kódrészlet bemutatja, hogyan regisztrálhat egy broadcast vevőt.

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 

} 

A CFNotificationAddObserver elérhető beállításaival kapcsolatos további információkért, vagy a megfelelő Swift-metódusaláírások megtekintéséhez lásd:

iOS esetén az alkalmazás háttérengedélyt igényel ahhoz, hogy aktív maradjon a háttérben, és figyelje a Darwin-értesítéseket. A háttérképességet hozzá kell adni egy másik háttérművelet támogatásához – előfordulhat, hogy az alkalmazás elutasítható az Apple App Store-ból, ha háttérképessége csak a Darwin-értesítések figyelésére alkalmas. Ha az alkalmazás már konfigurálva van a háttérműveletek elvégzésére, a művelet részeként hozzáadhatja a figyelőt. Az iOS háttérfunkcióiról további információt a háttérvégrehajtási módok konfigurálása című témakörben talál.

Microsoft megosztott eszköz módot támogató alkalmazások

Ezek a Microsoft alkalmazások támogatják Microsoft Entra megosztott eszköz módot:

Important

A nyilvános előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy egyes funkciók nem támogatottak, vagy korlátozott képességekkel rendelkeznek. További információ: Univerzális licencfeltételek online szolgáltatásokhoz.

Megosztott eszköz módot támogató külső MDM-k

Ezek a külső Mobil Eszközkezelés (MDM) szolgáltatók támogatják Microsoft Entra megosztott eszköz módot:

Következő lépések

A megosztott eszköz mód működés közbeni megtekintéséhez az alábbi kódminta GitHub tartalmaz egy példát, amely egy frontline worker alkalmazást futtat egy iOS-eszközön megosztott eszköz módban:

MSAL iOS Swift Microsoft Graph API mintaprojekt