Aracılığıyla paylaş


Öğretici: Android uygulamanıza paylaşılan cihaz modu desteği ekleme

Bu öğreticide Android geliştiricileri, Android için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanarak bir Android uygulamasında paylaşılan cihaz modu desteği eklemeyi öğrenir.

Bu öğreticide:

  • Mevcut bir Android uygulama projesi oluşturun veya değiştirin.
  • Paylaşılan cihaz modunu etkinleştirme ve algılama
  • Tek veya birden çok hesap modunu algılama
  • Kullanıcı anahtarını algılama
  • Genel oturum açmayı ve oturumu kapatmayı etkinleştirme

Var olan bir Android uygulamasını oluşturma veya değiştirme

Öğreticinin geri kalanını tamamlamak için yeni bir Android uygulaması oluşturmanız veya mevcut bir Android uygulamasını değiştirmeniz gerekir. Henüz yapmadıysanız, MSAL'yi Android uygulamanızla tümleştirme, bir kullanıcıda oturum açma, Microsoft Graph'ı arama ve bir kullanıcının oturumunu kapatma yönergeleri için MSAL Android öğreticisine bakın. Öğrenme ve test için tamamlanmış bir kod örneği kullanmayı tercih ediyorsanız GitHub'dan örnek uygulamayı kopyalayın. Örnek, tek veya çok hesaplı modda çalışma özelliğine sahiptir.

MSAL SDK'sını yerel Maven deponuza ekleme

Örnek uygulamayı kullanmıyorsanız, MSAL kitaplığını build.gradle dosyanıza bağımlılık olarak ekleyin, örneğin:

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

Tek hesap modu için destek ekleme

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.

Uygulamanızın kullanabileceği Microsoft kimlik platformu özellikleri, uygulamanın tek hesap modunda mı yoksa birden çok hesap modunda mı çalıştığına bağlı olarak değişir.

Paylaşılan cihaz modu uygulamaları yalnızca tek hesap modunda çalışır.

Önemli

Yalnızca birden çok hesap modunu destekleyen uygulamalar paylaşılan bir cihazda çalıştırılamaz. Çalışan tek hesap modunu desteklemeyen bir uygulamayı yüklerse, paylaşılan cihazda çalışmaz.

MSAL SDK'sı yayımlanmadan önce yazılan uygulamalar birden çok hesap modunda çalıştırılır ve paylaşılan mod cihazında çalıştırılmadan önce tek hesap modunu destekleyecek şekilde güncelleştirilmeleri gerekir. 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 modelinin diyagramı.

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
Hesap Tek hesap Birden çok hesap
Oturum açma Küresel Küresel
Oturumu kapatma Küresel 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ı

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

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

MSAL yapılandırma dosyanızda olarak true ayarlayın"shared_device_mode_supported".

Birden çok hesap modunu desteklemeyi planlamıyor olabilirsiniz. Bu, paylaşılan bir cihaz kullanmıyorsanız ve kullanıcı aynı anda birden fazla hesapla uygulamada oturum açabilirse olabilir. Öyleyse 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.

Örnek uygulamanın app>main>res>ham dizininde yer alan auth_config.json dosyasının bir örneği aşağıda verilmiştir:

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

Paylaşılan cihaz modunu algılama

Paylaşılan cihaz modu, Android cihazlarını birden çok çalışan tarafından paylaşılacak şekilde yapılandırmanıza olanak tanırken, cihazın Microsoft Identity destekli yönetimini sağlar. Çalışanlar cihazlarında oturum açabilir ve müşteri bilgilerine hızlı bir şekilde erişebilir. Vardiyalarını veya görevlerini tamamladıktan sonra paylaşılan cihazdaki tüm uygulamaların oturumunu tek bir tıklamayla kapatabilecekler ve cihaz bir sonraki çalışanın kullanımına hemen hazır hale gelecek.

Paylaşılan cihaz modundaki bir cihazda bir uygulamanın çalışıp çalışmadığını belirlemek için kullanın isSharedDevice() . Uygulamanız bu bayrağı kullanarak UX'i buna göre değiştirmesi gerekip gerekmediğini belirleyebilir.

Burada, uygulamasını nasıl kullanabileceğinizi isSharedDevice()gösteren bir kod parçacığı yer alır. Örnek uygulamadaki SingleAccountModeFragment sınıfındandır:

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

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;

/*Configure your sample app and save state for this activity*/
PublicClientApplication.create(this.getApplicationCOntext(),
  R.raw.auth_config,
  new PublicClientApplication.ApplicationCreatedListener(){
  @Override
  public void onCreated(IPublicClientApplication application){
  mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
  loadAccount();
  }
  @Override
  public void onError(MsalException exception){
  /*Fail to initialize PublicClientApplication */
  }
});

Tek ve birden çok hesap modunu algılama

Paylaşılan bir cihazda yalnızca ön cephe çalışanları için kullanılacak bir uygulama yazıyorsanız uygulamanızı yalnızca tek hesap modunu destekleyecek şekilde yazmanızı öneririz. Bu, tıbbi kayıt uygulamaları, fatura uygulamaları ve çoğu iş kolu uygulaması gibi görev odaklı uygulamaların çoğunu içerir. Bu, SDK'nın birçok özelliğinin barındırılması gerekmediğinden geliştirmenizi basitleştirir.

Uygulamanız birden çok hesabı ve paylaşılan cihaz modunu destekliyorsa, aşağıda gösterildiği gibi bir tür denetimi gerçekleştirmeniz ve uygun arabirime atamanız gerekir.

private IPublicClientApplication mApplication;

        if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
          IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
          ...
        } else if (mApplication instanceOf    ISingleAccountPublicClientApplication) {
           ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
            ...
        }

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

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;
        mSingleAccountApp.acquireTokenSilentAsync(SCOPES,"http://login.microsoftonline.com/common",getAuthSilentCallback());
      }
    }
    @Override
    public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
    {
      if (currentAccount == null)
      {
        //Perform a cleanup task as the signed-in account changed.
        updateSingedOutUI();
      }
    }
    @Override
    public void onError(@NonNull Exception exception)
    {
    }
  }
}

Bir kullanıcıda genel olarak oturum açma

Aşağıdaki, kimlik doğrulayıcı uygulamasıyla MSAL kullanan diğer uygulamalarda cihaz genelindeki bir kullanıcıda oturum açar:

private void onSignInClicked()
{
  mSingleAccountApp.signIn(getActivity(), SCOPES, null, getAuthInteractiveCallback());
}

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

Aşağıdaki, 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:

private void onSignOutClicked()
{
  mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback()
  {
    @Override
    public void onSignOut()
    {
      updateSignedOutUI();
    }
    @Override
    public void onError(@NonNull MsalException exception)
    {
      /*failed to remove account with an exception*/
    }
  });
}

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

Uygulamayı kaydetme ve test için kiracınızı ayarlama

Uygulamanızı ayarlayıp cihazınızı paylaşılan cihaz moduna geçirebilmek için önce uygulamayı kuruluş kiracınıza kaydetmeniz gerekir. Ardından uygulamanızın doğru çalışması için auth_config.json bu değerleri sağlarsınız.

Bunun nasıl yapılacağını öğrenmek için bkz . Uygulamanızı kaydetme.

Not

Uygulamanızı kaydederken lütfen sol taraftaki hızlı başlangıç kılavuzunu kullanın ve ardından Android'i seçin. Bu sizi, uygulamanız için Paket Adı ve İmza Karması sağlamanız istenecek bir sayfaya yönlendirir. Bunlar, uygulama yapılandırmanızın çalıştığından emin olmak için çok önemlidir. Ardından uygulamanız için kullanabileceğiniz ve kesip auth_config.json dosyanıza yapıştırabileceğiniz bir yapılandırma nesnesi alırsınız.

Android uygulama sayfanızı yapılandırma

Bu değişikliği benim için yap'ı seçip hızlı başlangıcın istediği değerleri sağlamanız gerekir. İşiniz bittiğinde, Microsoft Entra Id ihtiyacınız olan tüm yapılandırma dosyalarını oluşturur.

Test amacıyla kiracınızda aşağıdaki rolleri ayarlayın: en az iki çalışan ve bir Bulut Cihazı Yöneticisi. Bulut Cihazı Yöneticisi'ni ayarlamak için Kuruluş Rollerini değiştirmeniz gerekir. Microsoft Entra yönetim merkezinden, Kimlik>Rolleri ve yöneticiler>Roller &>Tüm roller'i seçerek Kuruluş Rollerinize gidin ve ardından Bulut Cihazı Yöneticisi'ni seçin. Bir cihazı paylaşılan moda koyabilecek kullanıcıları ekleyin.

Örnek uygulamayı çalıştırma

Örnek Uygulama, kuruluşunuzun Graph API'sini çağıran basit bir uygulamadır. İlk çalıştırmada, uygulama çalışan hesabınızda yeni olduğundan onay vermeniz istenir.

Uygulama yapılandırma bilgileri ekranı

Sonraki adımlar

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