Öğretici: Android uygulamanızda paylaşılan cihaz modunu kullanma
Bu öğreticide, Android geliştiricileri ve Microsoft Entra kiracı yöneticileri bir Android uygulaması için paylaşılan cihaz modunu etkinleştirmek için gereken kod, Authenticator uygulaması ve kiracı ayarları hakkında bilgi edinecek.
Bu öğreticide:
- Kod örneği indirme
- Paylaşılan cihaz modunu etkinleştirme ve algılama
- Tek veya birden çok hesap modunu algılama
- Kullanıcı anahtarını algılama ve genel oturum açma ve oturumu kapatmayı etkinleştirme
- Kiracıyı ayarlama ve uygulamayı kaydetme
- Paylaşılan cihaz modunda bir Android cihazı ayarlama
- Örnek uygulamayı çalıştırma
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Geliştirici kılavuzu
Öğreticinin bu bölümünde, Microsoft Kimlik Doğrulama Kitaplığı 'nı (MSAL) kullanarak bir Android uygulamasında paylaşılan cihaz modunu uygulamaya yönelik geliştirici yönergeleri sağlanır. MSAL'yi Android uygulamanızla tümleştirmeyi, bir kullanıcıda oturum açmayı, Microsoft Graph'ı aramayı ve bir kullanıcıyı oturumu kapatmayı öğrenmek için MSAL Android öğreticisine bakın.
Örneği indirme
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.+'
}
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 ISingleAccountPublicClientApplication
garanti 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 olacaktır.
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 ISingleAccountPublicCLientApplication
dö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);
}
Yönetici kılavuzu
Aşağıdaki adımlar uygulamanızı ayarlamayı ve cihazınızı paylaşılan cihaz moduna geçirmeyi açıklar.
Uygulamayı kaydetme
İlk olarak, uygulamayı kuruluş kiracınıza kaydedin. Ardından uygulamanızın düzgün çalışması için aşağıdaki değerleri auth_config.json olarak belirtin.
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.
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. Bu işlem tamamlandığında ihtiyacınız olan tüm yapılandırma dosyalarını oluşturacağız.
Kiracıyı ayarlama
Test amacıyla kiracınızda aşağıdakileri ayarlayın: en az iki çalışan, bir Bulut Cihazı Yöneticisi ve bir Uygulama Geliştiricisi. Kuruluş Rollerini değiştirerek Bulut Cihazı Yöneticisi'ni ayarlayın. Kuruluş Rollerinize erişmek için Kimlik>Rolleri ve yöneticiler>Roller ve yöneticiler>Tüm roller'i ve ardından Bulut Cihazı Yöneticisi'ni seçin. Bir cihazı paylaşılan moda koyabilecek kullanıcıları ekleyin.
Paylaşılan modda Bir Android cihazı ayarlama
Authenticator Uygulamasını indirin
Google Play mağazasından Microsoft Authenticator Uygulamasını indirin. Uygulamayı zaten indirdiyseniz en son sürüm olduğundan emin olun.
Kimlik doğrulayıcı uygulama ayarları ve cihazı buluta kaydetme
Authenticator Uygulamasını başlatın ve ana hesap sayfasına gidin. Hesap Ekle sayfasını gördüğünüzde, cihazı paylaştırmaya hazırsınız demektir.
Sağ menü çubuğunu kullanarak Ayarlar bölmesine gidin. İş ve Okul hesapları'nın altında Cihaz Kaydı'nı seçin.
Bu düğmeye tıkladığınızda, cihaz kişilerine erişimi yetkilendirmeniz istenir. Bunun nedeni Android'in cihazdaki hesap tümleştirmesidir. İzin ver'i seçin.
Bulut Cihazı Yöneticisi kuruluş e-postasını Paylaşılan cihaz olarak kaydet bölümüne girmelidir. Ardından paylaşılan cihaz olarak kaydet düğmesine tıklayın ve kimlik bilgilerini girin.
Cihaz artık paylaşılan modda.
Cihazdaki tüm oturum açma ve oturum kapatma işlemleri genel olacaktır, yani cihazdaki MSAL ve Microsoft Authenticator ile tümleştirilmiş tüm uygulamalar için geçerlidir. Artık paylaşılan cihaz modu özelliklerini kullanan uygulamaları cihaza dağıtabilirsiniz.
Paylaşılan cihazı görüntüleme
Bir cihazı paylaşılan moda aldıktan sonra kuruluşunuz tarafından bilinir ve kuruluş kiracınızda izlenir. Birleştirme Türü'ne bakarak paylaşılan cihazlarınızı görüntüleyebilirsiniz.
Ö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.
Sonraki adımlar
Android cihazlarda Microsoft Kimlik Doğrulama Kitaplığı ve paylaşılan cihaz modu ile çalışma hakkında daha fazla bilgi edinin: