Android cihazlar için paylaşılan cihaz modu

Perakende çalışanları, uçuş ekibi üyeleri ve saha hizmeti çalışanları gibi ön cephe çalışanları genellikle işlerini gerçekleştirmek için paylaşılan bir mobil cihaz kullanır. Bu paylaşılan cihazlar, kullanıcılarınızın parolalarını veya PIN'lerini paylaşmaları durumunda, paylaşılan cihazdaki müşteri ve iş verilerine erişmek için kasıtlı olarak veya değil güvenlik riskleri sunabilir.

Paylaşılan cihaz modu , çalışanların cihazı güvenli bir şekilde paylaşabilmesi için Android 8.0 veya üzeri bir cihaz yapılandırmanıza olanak tanır. Çalışanlar bir kez oturum açabilir ve bu özelliği destekleyen tüm uygulamalarda çoklu oturum açma (SSO) alarak bilgilere daha hızlı erişim sağlayabilir. Çalışanlar vardiyalarını veya görevlerini tamamladıktan sonra oturumdan çıktıklarında, cihazın ve desteklenen tüm uygulamaların oturumlarından otomatik olarak çıkış yapılarak cihaz bir sonraki kullanıcı için hazır hale gelir.

Paylaşılan Cihaz Modu özelliğinden yararlanmak için uygulama geliştiricileri ve bulut cihazı yöneticileri birlikte çalışır:

  1. Cihaz yöneticileri, cihazı el ile veya Microsoft Intune gibi bir mobil cihaz yönetimi (MDM) sağlayıcısı kullanarak paylaşılacak şekilde hazırlar. Tercih edilen seçenek, elle müdahale gerektirmeyen sağlama sayesinde cihazın paylaşılan cihaz modunda geniş çapta kurulmasına izin verdiği için bir MDM kullanmaktır. MDM, Microsoft Authenticator uygulamasını cihazlara iletir ve yönetilen bir yapılandırma güncelleştirmesi aracılığıyla her cihaz için "Paylaşılan Modu" açar. Bu Paylaşılan Mod ayarı, cihazdaki desteklenen uygulamaların davranışını değiştiren ayardır. MDM sağlayıcısından alınan bu yapılandırma, cihaz için paylaşılan cihaz modunu ayarlar ve Authenticator Uygulamasını kullanarak paylaşılan cihaz kaydını tetikler.

  2. Uygulama geliştiricileri , aşağıdaki senaryoyu işlemek için tek hesaplı bir uygulama (paylaşılan cihaz modunda birden çok hesaplı uygulamalar desteklenmez) yazar:

    • Desteklenen tüm uygulamalar aracılığıyla kullanıcı cihaz genelinde oturum açma
    • Desteklenen tüm uygulamalar aracılığıyla cihaz genelinde kullanıcı oturumunu kapatma
    • Uygulamanızın paylaşılan cihaz modundaki bir cihazda olup olmadığını belirlemek için cihazın durumunu sorgula
    • Son kullanımdan bu yana uygulamanızda yapılan değişiklikleri belirlemek için kullanıcının cihaz durumunu sorgula

    Paylaşılan cihaz modunun desteklenmesi, uygulamanız için bir özellik yükseltmesi olarak kabul edilmelidir ve aynı cihazın birden çok kullanıcı arasında kullanıldığı ortamlarda benimsemesini artırmaya yardımcı olabilir.

    Important

    Android'de paylaşılan cihaz modunu destekleyen Microsoft uygulamalar herhangi bir değişiklik gerektirmez ve paylaşılan cihaz moduyla birlikte gelen avantajlardan yararlanmak için yalnızca cihaza yüklenmesi gerekir.

Paylaşılan Cihaz Modu'nda cihazı ayarlama

Android cihazınızı paylaşılan cihaz modunu destekleyecek şekilde yapılandırmak için Android işletim sistemi 8.0 veya üzerini çalıştırıyor olmalıdır. Cihaz ayrıca fabrika sıfırlaması ile silinmelidir veya tüm Microsoft ve diğer paylaşılan cihaz modu etkin uygulamaların kaldırılıp yeniden yüklenmesi gerekir.

Microsoft Intune, Microsoft Entra paylaşılan cihaz modundaki cihazlar için sıfır temasla sağlamayı destekler; bu, cihazın saha çalışanının çok az etkileşimiyle yapılandırılıp Intune’a kaydedilebileceği anlamına gelir. MDM olarak Microsoft Intune kullanırken cihazı paylaşılan cihaz modunda ayarlamak için bkz. Microsoft Entra paylaşılan cihaz modunda cihazlar için kaydı ayarlama.

Android uygulamanızı paylaşılan cihaz modunu destekleyecek şekilde değiştirme

Kullanıcılarınız, verilerinin başka bir kullanıcıya sızmadığından emin olmak için size bağlıdır. Aşağıdaki bölümler, uygulamanıza bir değişikliğin gerçekleştiğini ve işlenmesi gerektiğini göstermek için yararlı sinyaller sağlar. Uygulamanız her kullanıldığında cihazda kullanıcının durumunu denetlemek ve ardından önceki kullanıcının verilerini temizlemek sizin sorumluluğunuzdadır. Buna, çoklu görev sırasında arka plandan yeniden yüklenmesi durumu da dahildir. Kullanıcı değişikliğinde, hem önceki kullanıcının verilerinin temizlendiğinden hem de uygulamanızda görüntülenen önbelleğe alınmış verilerin kaldırıldığından emin olmanız gerekir. Uygulamanızı paylaşılan cihaz modunu destekleyecek şekilde güncelleştirdikten sonra sizin ve şirketinizin bir güvenlik gözden geçirme süreci yürütmenizi kesinlikle öneririz.

uygulamanızın bağımlılıklarına Microsoft Authentication Library (MSAL) SDK'sını ekleme

MSAL kitaplığını build.gradle dosyanıza bağımlılık olarak ekleyin, örneğin:

dependencies{
  implementation 'com.microsoft.identity.client.msal:5.+'
}

Uygulamanızı paylaşılan cihaz modunu kullanacak şekilde yapılandırma

Microsoft Kimlik Doğrulama Kitaplığı (MSAL) SDK'sı kullanılarak yazılan uygulamalar tek bir hesabı veya birden çok hesabı yönetebilir. Ayrıntılar için bkz. tek hesap modu veya birden çok hesap modu. Paylaşılan cihaz modu uygulamaları yalnızca tek hesap modunda çalışır.

Birden çok hesap modunu desteklemeyi planlamıyorsanız, msal yapılandırma dosyanızda "account_mode" değerini "SINGLE" olarak ayarlayın. Bu, uygulamanızın her zaman ISingleAccountPublicClientApplication'yi edineceğini garanti eder ve MSAL entegrasyonunuzu önemli ölçüde basitleştirir. varsayılan değeridir "account_mode" , "MULTIPLE"bu nedenle modu kullanıyorsanız "single account" yapılandırma dosyasında bu değeri değiştirmeniz önemlidir.

Yapılandırma dosyasının bir örneği aşağıda verilmişti:

{
  "client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
  "authorization_user_agent": "WEBVIEW",
  "redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
  "account_mode": "SINGLE",
  "broker_redirect_uri_registered": true,
  "authorities": [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount",
        "tenant_id": "common"
      }
    }
  ]
}

Yapılandırma dosyanızı ayarlama hakkında daha fazla bilgi için yapılandırma belgelerine bakın.

Hem tek hesabı hem de birden çok hesabı destekleme

Uygulamanız hem kişisel cihazlarda hem de paylaşılan cihazlarda çalıştırmayı destekleyecek şekilde oluşturulabilir. Uygulamanız şu anda birden çok hesabı destekliyorsa ve paylaşılan cihaz modunu desteklemek istiyorsanız, tek hesap modu için destek ekleyin.

Uygulamanızın üzerinde çalıştığı cihazın türüne bağlı olarak davranışını değiştirmesini de isteyebilirsiniz. Tek hesap modunda ne zaman çalıştırılacak belirlemek için kullanın ISingleAccountPublicClientApplication.isSharedDevice() .

Uygulamanızın bulunduğu cihaz türünü temsil eden iki farklı arabirim vardır. MSAL'nin uygulama fabrikasından bir uygulama örneği istediğinizde, doğru uygulama nesnesi otomatik olarak sağlanır.

Aşağıdaki nesne modeli, alabileceğiniz nesne türünü ve paylaşılan cihaz bağlamında ne anlama geldiğini gösterir:

genel istemci uygulaması devralma modeli

Nesnenizi aldığınızda bir tür denetimi yapmanız ve uygun arabirime atamanız PublicClientApplication gerekir. Aşağıdaki kod birden çok hesap modunu veya tek hesap modunu denetler ve uygulama nesnesini uygun şekilde yayınlar:

private IPublicClientApplication mApplication;

        // Running in personal-device mode?
        if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
          IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
          ...
        // Running in shared-device mode?
        } else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
           ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
            ...
        }

Aşağıdaki farklılıklar, uygulamanızın paylaşılan veya kişisel bir cihazda çalışıp çalışmadığına bağlı olarak geçerlidir:

Paylaşım modu cihazı Kişisel cihaz
Hesaplar Tek hesap Birden çok hesap
Oturum açma Genel Genel
Oturumu kapatma Genel Her bir uygulama, oturumu kapatma işleminin uygulama için yerel olup olmadığını kontrol edebilir.
Desteklenen hesap türleri Yalnızca iş hesapları Desteklenen kişisel ve iş hesapları

PublicClientApplication nesnesini başlatma

MSAL yapılandırma dosyasında "account_mode":"SINGLE" ayarlarsanız, döndürülen uygulama nesnesini güvenli bir şekilde ISingleAccountPublicCLientApplication olarak dönüştürebilirsiniz.

private ISingleAccountPublicClientApplication mSingleAccountApp;

PublicClientApplication.create(
    this.getApplicationCOntext(),
    R.raw.auth_config_single_account,
    new PublicClientApplication.ApplicationCreatedListener() {

        @Override
        public void onCreated(IPublicClientApplication application){
            mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
        }

        @Override
        public void onError(MsalException exception){
            /*Fail to initialize PublicClientApplication */
        }
    });

Paylaşılan cihaz modunu algılama

Paylaşılan cihaz modunu algılamak uygulamanız için önemlidir. Birçok uygulama, paylaşılan bir cihazda kullanıldığında kullanıcı deneyiminde (UX) değişiklik yapılmasını gerektirir. Örneğin, uygulamanızın bir "Kaydolma" özelliği olabilir ve bu özellik ön hat çalışanı için uygun değildir çünkü zaten bir hesabı vardır. Ayrıca, paylaşılan cihaz modundaysa uygulamanızın veri işlemesine ek güvenlik de eklemek isteyebilirsiniz.

isSharedDevice Paylaşılan cihaz modunda bir cihazda bir uygulamanın çalışıp çalışmadığını belirlemek için içindeki API'yi IPublicClientApplication kullanın.

Aşağıdaki kod parçacıkları, isSharedDevice API'sinin kullanımına ilişkin örnekler göstermektedir.

deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");

Oturum açmış kullanıcıyı almak ve cihazdaki kullanıcının değişip değişmediğini belirlemek

Paylaşılan cihaz modunu desteklemenin bir diğer önemli bölümü de kullanıcının cihazdaki durumunu belirlemek ve bir kullanıcı değiştiyse veya cihazda hiç kullanıcı yoksa uygulama verilerini temizlemektir. Verilerin başka bir kullanıcıya sızmadığından emin olmak sizin sorumluluğundadır.

Cihazda şu anda oturum açmış olan hesabı sorgulamak için API'yi kullanabilirsiniz getCurrentAccountAsync .

Oturum açmış kullanıcının hesabını almak için loadAccount yöntemi kullanılır. onAccountChanged yöntemi, oturum açmış kullanıcının değişip değişmediğini belirler ve değiştiyse şunları temizleyin:

private void loadAccount()
{
  mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback())
  {
    @Override
    public void onAccountLoaded(@Nullable IAccount activeAccount)
    {
      if (activeAccount != null)
      {
        signedInUser = activeAccount;
        final AcquireTokenSilentParameters silentParameters = new AcquireTokenSilentParameters.Builder()
                        .fromAuthority(signedInUser.getAuthority())
                        .forAccount(signedInUser)
                        .withScopes(Arrays.asList(getScopes()))
                        .withCallback(getAuthSilentCallback())
                        .build();
        mSingleAccountApp.acquireTokenSilentAsync(silentParameters);
      }
    }
    @Override
    public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
    {
      if (currentAccount == null)
      {
        //Perform a cleanup task as the signed-in account changed.
        cleaUp();
      }
    }
    @Override
    public void onError(@NonNull Exception exception)
    {
        //getCurrentAccountAsync failed
    }
  }
}

Bir kullanıcı için global oturum açın

Bir cihaz paylaşılan cihaz olarak yapılandırıldığında, uygulamanız hesapta oturum açmak için API'yi çağırabilir signIn . Hesap, ilk uygulama hesapta oturum açtığında cihazdaki tüm uygun uygulamalar için genel kullanıma sunulacaktır.

final SignInParameters signInParameters = ... /* create SignInParameters object */
mSingleAccountApp.signIn(signInParameters);

Bir kullanıcının genel olarak oturumunu kapatma

Aşağıdaki kod, oturum açmış hesabı kaldırır ve önbelleğe alınan belirteçleri yalnızca uygulamadan değil paylaşılan cihaz modundaki cihazdan da temizler. Ancak uygulamanızdaki verileri temizlemez. Uygulamanızdaki verileri temizlemeniz ve uygulamanızın kullanıcıya görüntüleyebileceği önbelleğe alınmış verileri temizlemeniz gerekir.

mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
    @Override
    public void onSignOut() {
        // clear data from your application
    }

    @Override
    public void onError(@NonNull MsalException exception) {
        // signout failed, show error
    }
});

Diğer uygulamalardan başlatılan genel oturumu kapatma işlemini algılamak için yayını al.

Hesap değişikliği yayınını almak için bir yayın alıcısı kaydetmeniz gerekir. Yayın alıcınızı Context ile kaydedilen alıcılar aracılığıyla kaydetmeniz tavsiye edilir.

Hesap değişikliği yayını alındığında, oturum açılan kullanıcıyı derhal alın ve cihazda bir kullanıcının değişip değişmediğini belirleyin. Bir değişiklik algılanırsa, önceden oturum açmış hesap için veri temizlemeyi başlatın. Tüm işlemlerin düzgün bir şekilde durdurulması ve veri temizlemenin yapılması önerilir.

Aşağıdaki kod parçacığı, yayın alıcısını nasıl kaydedebildiğinizi gösterir.

private static final String CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER = "com.microsoft.identity.client.sharedmode.CURRENT_ACCOUNT_CHANGED";
private BroadcastReceiver mAccountChangedBroadcastReceiver;
private void registerAccountChangeBroadcastReceiver(){
    mAccountChangedBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //INVOKE YOUR PRIOR ACCOUNT CLEAN UP LOGIC HERE
        }
    };
    IntentFilter filter = new

    IntentFilter(CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER);
    this.registerReceiver(mAccountChangedBroadcastReceiver, filter);
}

Paylaşılan cihaz modunu destekleyen Microsoft uygulamaları

Bu Microsoft uygulamaları Microsoft Entra paylaşılan cihaz modunu destekler:

Paylaşılan cihaz modunu destekleyen üçüncü taraf MDM'ler

Bu üçüncü taraf Mobil Cihaz Yönetimi (MDM) sağlayıcıları, Microsoft Entra paylaşılan cihaz modunu destekler:

Paylaşılan cihaz oturum kapatma ve uygulamanın genel yaşam döngüsü

Bir kullanıcı oturumu kapattığında, kullanıcının gizliliğini ve verilerini korumak için işlem yapmanız gerekir. Örneğin, bir tıbbi kayıt uygulaması oluşturuyorsanız, kullanıcı oturumu kapattığında daha önce görüntülenen hasta kayıtlarının temizlendiğinden emin olmak istersiniz. Uygulamanızın veri gizliliğine hazır olması ve ön plana her girişinde kontrol etmesi gerekir.

Uygulamanız, paylaşılan moddaki bir cihazda çalışan bir uygulamada kullanıcının oturumunu kapatmak için MSAL kullandığında, oturumu açık hesap ve önbelleğe alınmış belirteçler hem uygulamadan hem de cihazdan kaldırılır.

Aşağıdaki diyagramda, uygulamanız çalışırken oluşabilecek genel uygulama yaşam döngüsü ve yaygın olaylar gösterilmektedir. Diyagram, bir etkinliğin başlatılmasından itibaren bir hesapta oturum açma ve oturumu kapatma işlemlerini ve etkinliğin duraklatılması, sürdürülmesi ve durdurulması gibi olayların bu süreçte nasıl yer aldığını kapsar.

Paylaşılan cihaz uygulaması yaşam döngüsü

Sonraki Adımlar

Paylaşılan cihaz modunda uygulamaları çalıştırmak ve uygulamanızı test etmek için bir Android cihazı ayarlayın.

Android cihazlar için paylaşılan cihaz modu