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 yapmak 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 oturumu kapattığında, cihazın ve desteklenen tüm uygulamaların oturumu otomatik olarak kapatılarak cihaz bir sonraki kullanıcı için hazır olur.

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, paylaşılan cihaz modunda sıfır dokunmayla sağlama yoluyla büyük ölçekte cihaz kurulumuna izin verdiğinden bir MDM kullanmaktır. MDM, Microsoft Authenticator uygulamasını cihazlara iletir ve cihaza yönelik 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.

    Önemli

    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 etkinleştirilmiş uygulamaların kaldırılıp yeniden yüklenmesi gerekir.

Microsoft Intune, Microsoft Entra paylaşılan cihaz modunda cihazlar için sıfır dokunmayla sağlamayı destekler. Bu, cihazın ön cephe çalışanının en az etkileşimiyle Intune'a ayarlanabileceği ve 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. Bu, çok görevli olarak arka plandan yeniden yüklenip yüklenmediğini içerir. 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.

Microsoft Authentication Library (MSAL) SDK'sını uygulamanızın bağımlılıklarına 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 olarak ayarlayın "account_mode" "SINGLE" . Bu, uygulamanızın her zaman 'i edineceğini ISingleAccountPublicClientApplicationgaranti eder ve MSAL tümleştirmenizi ö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şılan mod cihazı Kişisel cihaz
Firmalar Tek hesap Birden çok hesap
Oturum aç Global Global
Oturumu kapatma Global Her uygulama, oturumu kapatmanın uygulamada yerel olup olmadığını denetleyebilir.
Desteklenen hesap türleri Yalnızca iş hesapları Desteklenen kişisel ve iş hesapları

PublicClientApplication nesnesini başlatma

MSAL yapılandırma dosyasında ayarlarsanız "account_mode":"SINGLE" , döndürülen uygulama nesnesini güvenli bir şekilde olarak ISingleAccountPublicCLientApplicationdö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ı API'yi kullanma isSharedDevice örneklerini gösterir.

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

Oturum açmış kullanıcıyı alma ve cihazda bir kullanıcının değişip değişmediğini belirleme

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 .

yöntemi, loadAccount oturum açmış kullanıcının hesabını alı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ıda genel olarak oturum açma

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 kapatmayı algılamak için yayın alma

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ı Bağlama kayıtlı alıcılar aracılığıyla kaydetmeniz önerilir.

Hesap değişikliği yayını alındığında, oturum açmış kullanıcıyı hemen 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 oturumu kapatma ve genel uygulama 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 modda çalışan bir uygulamada kullanıcıyı oturumu kapatmak için MSAL kullandığında, oturum açmış 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. Diyagramda etkinliğin başlatıldığı zaman, hesapta oturum açma ve oturumu kapatma işlemleri ve etkinliği duraklatma, devam ettirip durdurma gibi olayların nasıl sığdırıldığı açıklanmıştır.

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