Hızlı Başlangıç: Kullanıcıların oturumunu açma ve mobil uygulamadan Microsoft Graph API çağırma

Bu hızlı başlangıçta, bir Android uygulamasının kullanıcıları nasıl oturum açabileceğini ve Microsoft Graph API çağırmak için nasıl erişim belirteci alabileceğini gösteren bir kod örneği indirip çalıştıracaksınız.

Bkz. Örnek bir çizim için nasıl çalışır ?

Microsoft kimlik platformu uygulamanıza belirteç sağlayabilmesi için uygulamaların Azure Active Directory'deki bir uygulama nesnesi tarafından temsil edilmesi gerekir.

Önkoşullar

1. Adım: Örnek uygulamayı alma

Kodu indirin.

2. Adım: Örnek uygulamayı çalıştırma

Android Studio'nun kullanılabilir cihazlar açılan listesinden öykünücünüzü veya fiziksel cihazınızı seçin ve uygulamayı çalıştırın.

Örnek uygulama Tek Hesap Modu ekranında başlar. Varsayılan kapsam olan user.read varsayılan olarak sağlanır ve bu kapsam, Microsoft Graph API çağrısı sırasında kendi profil verilerinizi okurken kullanılır. Microsoft Graph API çağrısının URL'si varsayılan olarak sağlanır. İsterseniz bunların ikisini de değiştirebilirsiniz.

Tek ve birden çok hesap kullanımını gösteren MSAL örnek uygulaması

Tek ve birden çok hesap modu arasında geçiş yapmak için uygulama menüsünü kullanın.

Tek hesap modunda iş veya ev hesabı kullanarak oturum açın:

  1. Kullanıcıdan kimlik bilgilerini istemesi için Graf verilerini etkileşimli olarak al'ı seçin. Ekranın en altında Microsoft Graph API çağrısının çıkışını görürsünüz.
  2. Oturum açtıktan sonra kullanıcıdan kimlik bilgilerini yeniden istemeden Microsoft Graph API çağrı yapmak için Graf verilerini sessizce al'ı seçin. Ekranın en altında Microsoft Graph API çağrısının çıkışını görürsünüz.

Birden çok hesap modunda aynı adımları yineleyebilirsiniz. Ayrıca, oturum açmış hesabı kaldırabilirsiniz ve bu hesap için önbelleğe alınmış belirteçleri de kaldırır.

Örnek nasıl çalışır?

Örnek uygulamanın ekran görüntüsü

Kod, tek ve birden çok hesap MSAL uygulamasının nasıl yazıldığını gösteren parçalar halinde düzenlenmiştir. Kod dosyaları aşağıdaki gibi düzenlenir:

Dosya Gösteriler
MainActivity Kullanıcı arabirimini yönetir
MSGraphRequestWrapper MSAL tarafından sağlanan belirteci kullanarak Microsoft Graph API çağırır
MultipleAccountModeFragment Çok hesaplı bir uygulama başlatır, bir kullanıcı hesabı yükler ve Microsoft Graph API çağırmak için bir belirteç alır
SingleAccountModeFragment Tek hesaplı bir uygulama başlatır, bir kullanıcı hesabı yükler ve Microsoft Graph API çağırmak için bir belirteç alır
res/auth_config_multiple_account.json Birden çok hesap yapılandırma dosyası
res/auth_config_single_account.json Tek hesap yapılandırma dosyası
Gradle Betikleri/build.grade (Module:app) MSAL kitaplık bağımlılıkları buraya eklenir

Şimdi bu dosyalara daha ayrıntılı bir şekilde göz atacak ve her birinde MSAL'ye özgü kodu çağıracağız.

Uygulamaya MSAL ekleme

MSAL (com.microsoft.identity.client), kullanıcıları oturum açmak ve Microsoft kimlik platformu tarafından korunan bir API'ye erişmek için kullanılan belirteçleri istemek için kullanılan kitaplıktır. Gradle Betikleri>build.gradle'a (Modül: uygulama)Bağımlılıklar'ın altına aşağıdakileri eklediğinizde Gradle 3.0+ kitaplığı yükler:

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

Bu, Gradle'a maven central'dan MSAL indirmesi ve derlemesi talimatını verilmektedir.

Maven'e build.gradle dosyasının allprojects>depoları bölümüne de başvuru eklemeniz gerekir:

allprojects {
    repositories {
        mavenCentral()
        google()
        mavenLocal()
        maven {
            url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
        }
        maven {
            name "vsts-maven-adal-android"
            url "https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1"
            credentials {
                username System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") : project.findProperty("vstsUsername")
                password System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") : project.findProperty("vstsMavenAccessToken")
            }
        }
        jcenter()
    }
}

MSAL içeri aktarmaları

MSAL kitaplığıyla ilgili içeri aktarmalar şeklindedir com.microsoft.identity.client.*. Örneğin, genel istemci uygulamanızı temsil eden sınıfın PublicClientApplication ad alanının hangisi olduğunu görürsünüzimport com.microsoft.identity.client.PublicClientApplication;.

SingleAccountModeFragment.java

Bu dosyada tek bir hesap MSAL uygulamasının nasıl oluşturulacağı ve bir Microsoft Graph API nasıl çağrılacağı gösterilmektedir.

Tek hesap uygulamaları yalnızca tek bir kullanıcı tarafından kullanılır. Örneğin, eşleme uygulamanızda oturum açmak için kullanabileceğiniz tek bir hesabınız olabilir.

Tek hesap MSAL başlatma

içinde auth_config_single_account.jsononCreateView()dosyasında depolanan auth_config_single_account.json yapılandırma bilgileri kullanılarak tek bir hesap PublicClientApplication oluşturulur. MSAL kitaplığını tek hesaplı bir MSAL uygulamasında kullanmak üzere bu şekilde başlatırsınız:

...
// Creates a PublicClientApplication object with res/raw/auth_config_single_account.json
PublicClientApplication.createSingleAccountPublicClientApplication(getContext(),
        R.raw.auth_config_single_account,
        new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
            @Override
            public void onCreated(ISingleAccountPublicClientApplication application) {
                /**
                 * This test app assumes that the app is only going to support one account.
                 * This requires "account_mode" : "SINGLE" in the config json file.
                 **/
                mSingleAccountApp = application;
                loadAccount();
            }

            @Override
            public void onError(MsalException exception) {
                displayError(exception);
            }
        });

Kullanıcı oturum açma

içindeSingleAccountModeFragment.java, bir kullanıcının oturum açma kodu, tıklama işleyicisindedirinitializeUI()signInButton.

Belirteçleri almaya çalışmadan önce çağrısında signIn() bulunur. signIn() çağrılmış gibi acquireToken() davranarak kullanıcının oturum açması için etkileşimli bir istem oluşturur.

Bir kullanıcıda oturum açmak zaman uyumsuz bir işlemdir. kullanıcı oturum açtığında Microsoft Graph API çağıran ve kullanıcı arabirimini güncelleştiren bir geri çağırma geçirilir:

mSingleAccountApp.signIn(getActivity(), null, getScopes(), getAuthInteractiveCallback());

Kullanıcının oturumunu kapatma

içindeSingleAccountModeFragment.java, kullanıcının oturumunu kapatma kodu, tıklama işleyicisindedirinitializeUI()signOutButton. Kullanıcının oturumu kapatma işlemi zaman uyumsuz bir işlemdir. Kullanıcının oturumu kapatması, bu hesabın belirteç önbelleğini de temizler. Kullanıcı hesabı oturumu kapatıldıktan sonra kullanıcı arabirimini güncelleştirmek için bir geri arama oluşturulur:

mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
    @Override
    public void onSignOut() {
        updateUI(null);
        performOperationOnSignOut();
    }

    @Override
    public void onError(@NonNull MsalException exception) {
        displayError(exception);
    }
});

Etkileşimli veya sessiz bir şekilde belirteç alma

Kullanıcıya en az sayıda istem sunmak için genellikle sessizce bir belirteç alırsınız. Ardından, bir hata varsa etkileşimli olarak belirteç almaya çalışır. Uygulama' yı ilk kez çağırdığı signIn()zaman, kullanıcıdan kimlik bilgilerini isteyen bir çağrısı acquireToken()olarak etkin bir şekilde hareket eder.

Kullanıcıdan hesabını seçmesi, kimlik bilgilerini girmesi veya uygulamanızın istediği izinlere onay vermesinin istenebileceği bazı durumlar şunlardır:

  • Kullanıcı uygulamada ilk kez oturum açtığında
  • Bir kullanıcı parolasını sıfırlarsa, kimlik bilgilerini girmesi gerekir
  • Onay iptal edilirse
  • Uygulamanız açıkça onay gerektiriyorsa
  • Uygulamanız bir kaynağa ilk kez erişim istediğinde
  • MFA veya diğer Koşullu Erişim ilkeleri gerektiğinde

Kullanıcıyı kapsayan kullanıcı arabirimiyle etkileşimli olarak belirteç almaya ilişkin kod, içinde, tıklama işleyicisindedirSingleAccountModeFragment.javainitializeUI()callGraphApiInteractiveButton:

/**
 * If acquireTokenSilent() returns an error that requires an interaction (MsalUiRequiredException),
 * invoke acquireToken() to have the user resolve the interrupt interactively.
 *
 * Some example scenarios are
 *  - password change
 *  - the resource you're acquiring a token for has a stricter set of requirement than your Single Sign-On refresh token.
 *  - you're introducing a new scope which the user has never consented for.
 **/
mSingleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());

Kullanıcı zaten oturum açmışsa, acquireTokenSilentAsync() uygulamaların tıklama işleyicisinde initializeUI()gösterildiği gibi sessizce belirteç istemesine callGraphApiSilentButton izin verir:

/**
 * Once you've signed the user in,
 * you can perform acquireTokenSilent to obtain resources without interrupting the user.
 **/
  mSingleAccountApp.acquireTokenSilentAsync(getScopes(), AUTHORITY, getAuthSilentCallback());

Hesap yükleme

Hesap yükleme kodu içindedir SingleAccountModeFragment.javaloadAccount(). Kullanıcının hesabını yüklemek zaman uyumsuz bir işlemdir, bu nedenle hesap yüklendiğinde, değiştiğinde veya hata oluştuğunda işlenmek üzere geri çağırmalar MSAL'ye geçirilir. Aşağıdaki kod, bir hesap kaldırıldığında, kullanıcı başka bir hesaba geçtiğinde vb. oluşan öğesini de işler onAccountChanged().

private void loadAccount() {
    ...

    mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback() {
        @Override
        public void onAccountLoaded(@Nullable IAccount activeAccount) {
            // You can use the account data to update your UI or your app database.
            updateUI(activeAccount);
        }

        @Override
        public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable IAccount currentAccount) {
            if (currentAccount == null) {
                // Perform a cleanup task as the signed-in account changed.
                performOperationOnSignOut();
            }
        }

        @Override
        public void onError(@NonNull MsalException exception) {
            displayError(exception);
        }
    });

Microsoft Graph'ı çağırma

Bir kullanıcı oturum açtığında, Microsoft Graph çağrısı içinde SingleAccountModeFragment.javatanımlanan bir HTTP isteği callGraphAPI() aracılığıyla yapılır. Bu işlev, içinden erişim belirtecini authenticationResult alma ve MSGraphRequestWrapper çağrısı paketleme ve çağrının sonuçlarını görüntüleme gibi bazı görevleri gerçekleştirerek örneği basitleştiren bir sarmalayıcıdır.

private void callGraphAPI(final IAuthenticationResult authenticationResult) {
    MSGraphRequestWrapper.callGraphAPIUsingVolley(
            getContext(),
            graphResourceTextView.getText().toString(),
            authenticationResult.getAccessToken(),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    /* Successfully called graph, process data and send to UI */
                    ...
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    ...
                }
            });
}

auth_config_single_account.json

Bu, tek bir hesap kullanan bir MSAL uygulamasının yapılandırma dosyasıdır.

Bu alanların açıklaması için bkz. Android MSAL yapılandırma dosyasını anlama .

Bu uygulamayı tek bir hesap kullanacak şekilde yapılandıran öğesinin "account_mode" : "SINGLE"varlığına dikkat edin.

"client_id", Microsoft bakımı yapılan bir uygulama nesnesi kaydını kullanmak üzere önceden yapılandırılmıştır. "redirect_uri", kod örneğiyle birlikte sağlanan imzalama anahtarını kullanacak şekilde önceden yapılandırılmıştır.

{
  "client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
  "authorization_user_agent" : "DEFAULT",
  "redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
  "account_mode" : "SINGLE",
  "broker_redirect_uri_registered": true,
  "authorities" : [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount",
        "tenant_id": "common"
      }
    }
  ]
}

MultipleAccountModeFragment.java

Bu dosya, birden çok hesap MSAL uygulaması oluşturmayı ve bir Microsoft Graph API çağırmayı gösterir.

Birden çok hesap uygulamasına örnek olarak, iş hesabı ve kişisel hesap gibi birden çok kullanıcı hesabıyla çalışmanıza olanak tanıyan bir posta uygulaması örnek olarak verilmiştir.

Birden çok hesap MSAL başlatması

MultipleAccountModeFragment.java dosyasında, içinde onCreateView()içinde depolanan auth_config_multiple_account.json fileyapılandırma bilgileri kullanılarak birden çok hesap uygulaması nesnesi (IMultipleAccountPublicClientApplication) oluşturulur:

// Creates a PublicClientApplication object with res/raw/auth_config_multiple_account.json
PublicClientApplication.createMultipleAccountPublicClientApplication(getContext(),
        R.raw.auth_config_multiple_account,
        new IPublicClientApplication.IMultipleAccountApplicationCreatedListener() {
            @Override
            public void onCreated(IMultipleAccountPublicClientApplication application) {
                mMultipleAccountApp = application;
                loadAccounts();
            }

            @Override
            public void onError(MsalException exception) {
                ...
            }
        });

Oluşturulan MultipleAccountPublicClientApplication nesne, belirteçleri almak ve kullanıcı hesabını yükleyip kaldırmak için MSAL kitaplığıyla etkileşim kurmak için kullanılabilmesi için bir sınıf üyesi değişkeninde depolanır.

Hesap yükleme

Birden çok hesap uygulaması genellikle MSAL işlemleri için kullanılacak hesabı seçmek için arar getAccounts() . Hesap yükleme kodu dosyasındadır MultipleAccountModeFragment.javaloadAccounts(). Kullanıcının hesabını yüklemek zaman uyumsuz bir işlemdir. Bu nedenle, geri arama hesabın yüklendiği, değiştiği veya bir hata oluştuğu durumları işler.

/**
 * Load currently signed-in accounts, if there's any.
 **/
private void loadAccounts() {
    if (mMultipleAccountApp == null) {
        return;
    }

    mMultipleAccountApp.getAccounts(new IPublicClientApplication.LoadAccountsCallback() {
        @Override
        public void onTaskCompleted(final List<IAccount> result) {
            // You can use the account data to update your UI or your app database.
            accountList = result;
            updateUI(accountList);
        }

        @Override
        public void onError(MsalException exception) {
            displayError(exception);
        }
    });
}

Etkileşimli veya sessiz bir şekilde belirteç alma

Kullanıcıdan hesabını seçmesi, kimlik bilgilerini girmesi veya uygulamanızın istediği izinlere onay vermesi istenebilecek bazı durumlar şunlardır:

  • Kullanıcılar uygulamada ilk kez oturum açtığında
  • Bir kullanıcı parolasını sıfırlarsa, kimlik bilgilerini girmesi gerekir
  • Onay iptal edilirse
  • Uygulamanız açıkça onay gerektiriyorsa
  • Uygulamanız bir kaynağa ilk kez erişim istediğinde
  • MFA veya diğer Koşullu Erişim ilkeleri gerektiğinde

Birden çok hesap uygulaması genellikle etkileşimli olarak belirteç almalıdır, yani kullanıcı arabirimiyle birlikte ve çağrısıyla acquireToken(). Etkileşimli olarak belirteç alma kodu, içindeki dosyasındainitializeUI(), tıklama işleyicisindedir:MultipleAccountModeFragment.javacallGraphApiInteractiveButton

/**
 * Acquire token interactively. It will also create an account object for the silent call as a result (to be obtained by getAccount()).
 *
 * If acquireTokenSilent() returns an error that requires an interaction,
 * invoke acquireToken() to have the user resolve the interrupt interactively.
 *
 * Some example scenarios are
 *  - password change
 *  - the resource you're acquiring a token for has a stricter set of requirement than your SSO refresh token.
 *  - you're introducing a new scope which the user has never consented for.
 **/
mMultipleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());

Uygulamalar, kullanıcının her belirteç istediğinde oturum açmasını gerektirmemelidir. Kullanıcı zaten oturum açmışsa, acquireTokenSilentAsync() uygulamaların dosyadainitializeUI() gösterildiği gibi tıklama işleyicisinde MultipleAccountModeFragment.java kullanıcıya sormadan belirteç istemesine callGraphApiSilentButton izin verir:

/**
 * Performs acquireToken without interrupting the user.
 *
 * This requires an account object of the account you're obtaining a token for.
 * (can be obtained via getAccount()).
 */
mMultipleAccountApp.acquireTokenSilentAsync(getScopes(),
    accountList.get(accountListSpinner.getSelectedItemPosition()),
    AUTHORITY,
    getAuthSilentCallback());

Hesabı kaldırma

Hesabı ve hesap için önbelleğe alınmış belirteçleri kaldırma kodu, hesabı kaldır düğmesinin işleyicisindeki dosyasında initializeUI() yer MultipleAccountModeFragment.java alır. Bir hesabı kaldırabilmeniz için önce ve acquireToken()gibi getAccounts() MSAL yöntemlerinden edindiğiniz bir hesap nesnesine ihtiyacınız vardır. Hesabın kaldırılması zaman uyumsuz bir işlem olduğundan, kullanıcı arabirimini onRemoved güncelleştirmek için geri çağırma sağlanır.

/**
 * Removes the selected account and cached tokens from this app (or device, if the device is in shared mode).
 **/
mMultipleAccountApp.removeAccount(accountList.get(accountListSpinner.getSelectedItemPosition()),
        new IMultipleAccountPublicClientApplication.RemoveAccountCallback() {
            @Override
            public void onRemoved() {
                ...
                /* Reload account asynchronously to get the up-to-date list. */
                loadAccounts();
            }

            @Override
            public void onError(@NonNull MsalException exception) {
                displayError(exception);
            }
        });

auth_config_multiple_account.json

Bu, birden çok hesap kullanan bir MSAL uygulamasının yapılandırma dosyasıdır.

Çeşitli alanların açıklaması için bkz. Android MSAL yapılandırma dosyasını anlama .

auth_config_single_account.json yapılandırma dosyasından farklı olarak, bu yapılandırma dosyası "account_mode" : "MULTIPLE" bunun yerine "account_mode" : "SINGLE" birden çok hesap uygulamasıdır.

"client_id", Microsoft devam eden bir uygulama nesnesi kaydı kullanacak şekilde önceden yapılandırılmıştır. "redirect_uri", kod örneğiyle birlikte sağlanan imzalama anahtarını kullanacak şekilde önceden yapılandırılmıştır.

{
  "client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
  "authorization_user_agent" : "DEFAULT",
  "redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
  "account_mode" : "MULTIPLE",
  "broker_redirect_uri_registered": true,
  "authorities" : [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount",
        "tenant_id": "common"
      }
    }
  ]
}

Yardım ve destek

Yardıma ihtiyacınız varsa, bir sorunu bildirmek istiyorsanız veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız, bkz. Geliştiriciler için yardım ve destek.

Sonraki adımlar

Microsoft kimlik platformu erişim belirtecini alan ve Microsoft Graph API çağırmak için kullanan bir Android uygulaması oluşturduğunuz Android öğreticisine geçin.

Bu hızlı başlangıçta, yerel bir iOS veya macOS uygulamasının kullanıcıları nasıl oturum açabileceğini ve Microsoft Graph API çağırmak için nasıl erişim belirteci alabileceğini gösteren bir kod örneği indirip çalıştıracaksınız.

Hızlı başlangıç hem iOS hem de macOS uygulamaları için geçerlidir. Bazı adımlar yalnızca iOS uygulamaları için gereklidir ve bu şekilde belirtilir.

Önkoşullar

Örnek nasıl çalışır?

Bu hızlı başlangıç tarafından oluşturulan örnek uygulamanın nasıl çalıştığını gösterir

Hızlı başlangıç uygulamanızı kaydetme ve indirme

Hızlı başlangıç uygulamanızı başlatmak için kullanabileceğiniz iki seçenek vardır:

1. Seçenek: Uygulamanızı kaydetme ve otomatik olarak yapılandırma ve ardından kod örneğini indirme

1. Adım: Uygulamanızı kaydetme

Uygulamanızı kaydetmek için

  1. Azure portal - Uygulama kayıtları hızlı başlangıç deneyimine gidin.
  2. Uygulamanız için bir ad girin ve Kaydet'i seçin.
  3. Yönergeleri izleyerek yeni uygulamanızı yalnızca tek tıklamayla indirin ve otomatik olarak yapılandırın.

2. Seçenek: Uygulamanızı ve kod örneğinizi el ile kaydetme ve yapılandırma

1. Adım: Uygulamanızı kaydetme

Uygulamanızı kaydetmek ve uygulama kayıt bilgilerinizi çözümünüze el ile eklemek için şu adımları izleyin:

  1. Azure Portal’ında oturum açın.
  2. Birden çok kiracıya erişiminiz varsa, uygulamayı kaydetmek istediğiniz kiracıya geçmek için üst menüdeki Dizinler + abonelikler filtresini kullanın.
  3. Azure Active Directory'yi bulun ve seçin.
  4. Yönet'in altında Uygulama kayıtları>Yeni kayıt'ı seçin.
  5. Uygulamanız için bir Ad girin. Uygulamanızın kullanıcıları bu adı görebilir ve daha sonra değiştirebilirsiniz.
  6. Kaydet’i seçin.
  7. Yönet'in altında Kimlik Doğrulaması>Platform> EkleiOS'ı seçin.
  8. Uygulamanız için Paket Tanımlayıcısı'nı girin. Paket tanımlayıcısı, uygulamanızı benzersiz olarak tanımlayan benzersiz bir dizedir, örneğin com.<yourname>.identitysample.MSALMacOS. Kullandığınız değeri not edin. iOS yapılandırmasının macOS uygulamaları için de geçerli olduğunu unutmayın.
  9. Yapılandır'ı seçin ve bu hızlı başlangıcın devamı için MSAL Yapılandırması ayrıntılarını kaydedin.
  10. Bitti seçeneğini belirleyin.

2. Adım: Örnek projeyi indirme

3. Adım: Bağımlılıkları yükleme

  1. Zip dosyasını ayıklayın.
  2. Terminal penceresinde, indirilen kod örneğinin olduğu klasöre gidin ve en son MSAL kitaplığını yüklemek için komutunu çalıştırın pod install .

4. Adım: Projenizi yapılandırma

Yukarıda Seçenek 1'i seçtiyseniz bu adımları atlayabilirsiniz.

  1. Projeyi XCode'da açın.

  2. ViewController.swift dosyasını düzenleyin ve 'let kClientID' ile başlayan satırı aşağıdaki kod parçacığıyla değiştirin. Değerini, bu hızlı başlangıcın önceki bölümlerinde uygulamanızı portala kaydederken kaydettiğiniz clientID değeriyle güncelleştirmeyi kClientID unutmayın:

    let kClientID = "Enter_the_Application_Id_Here"
    
  3. Ulusal Azure AD bulutlar için bir uygulama oluşturuyorsanız , 'let kGraphEndpoint' ve 'let kAuthority' ile başlayan çizgiyi doğru uç noktalarla değiştirin. Genel erişim için varsayılan değerleri kullanın:

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  4. Diğer uç noktalar burada belgelenmiştir. Örneğin, hızlı başlangıcı Azure AD Almanya ile çalıştırmak için aşağıdakileri kullanın:

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  5. Proje ayarlarını açın. Kimlik bölümünde portala girdiğiniz Paket Tanımlayıcısı'nı girin.

  6. Info.plist'e sağ tıklayın veKaynak KoduOlarak Aç'ı> seçin.

  7. Dikte kök düğümü altında değerini portalda kullandığınız Paket Kimliği ile değiştirinEnter_the_bundle_Id_Here. Dizedeki msauth. öneklere dikkat edin.

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    
  8. Uygulamayı derleyin ve çalıştırın!

Daha Fazla Bilgi

Bu hızlı başlangıç hakkında daha fazla bilgi almak için şu bölümleri okuyun.

MSAL alma

MSAL (MSAL.framework), kullanıcıları oturum açmak ve Microsoft kimlik platformu tarafından korunan bir API'ye erişmek için kullanılan belirteçleri istemek için kullanılan kitaplıktır. Aşağıdaki işlemi uygulayarak uygulamanıza MSAL ekleyebilirsiniz:

$ vi Podfile

Bu podfile'a aşağıdakileri ekleyin (projenizin hedefiyle):

use_frameworks!

target 'MSALiOS' do
   pod 'MSAL'
end

CocoaPods yükleme komutunu çalıştırın:

pod install

MSAL'ı başlatma

Şu kodu ekleyerek MSAL başvurusunu ekleyebilirsiniz:

import MSAL

Sonra şu kodu kullanarak MSAL'yi başlatın:

let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)

let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Konum: Açıklama
clientId portal.azure.com’da kaydedilen uygulamanın Uygulama Kimliği
authority Microsoft kimlik platformu. Çoğu durumda bu https://login.microsoftonline.com/common
redirectUri Uygulamanın yeniden yönlendirme URI'si. Varsayılan değeri veya özel yeniden yönlendirme URI'nizi kullanmak için 'nil' geçirebilirsiniz.

Yalnızca iOS için ek uygulama gereksinimleri

Uygulamanızın içinde de aşağıdakiler AppDelegateolmalıdır. Bu, kimlik doğrulaması yaptığınızda MSAL SDK'sının kimlik doğrulama aracı uygulamasından belirteç yanıtını işlemesini sağlar.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

    return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}

Not

iOS 13+ üzerinde yerine benimsediyseniz UISceneDelegateUIApplicationDelegatebu kodu geri çağırmaya scene:openURLContexts: yerleştirin ( Apple'ın belgelerine bakın). Eski iOS ile uyumluluk için hem UISceneDelegate hem de UIApplicationDelegate'i destekliyorsanız, MSAL geri çağırmanın her iki yere de yerleştirilmesi gerekir.

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {

   guard let urlContext = URLContexts.first else {
      return
   }

   let url = urlContext.url
   let sourceApp = urlContext.options.sourceApplication

   MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}

Son olarak, uygulamanızın Info.plist dosyasında ile birlikte CFBundleURLTypesbir LSApplicationQueriesSchemes girişi olmalıdır. Örnek, bu bilgilerle birlikte gelir.

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>msauthv2</string>
   <string>msauthv3</string>
</array>

Oturum açma kullanıcıları & belirteç isteğinde bulunun

Belirteç almak için MSAL’in iki yöntemi vardır: acquireToken ve acquireTokenSilent.

acquireToken: Etkileşimli olarak belirteç alma

Bazı durumlarda kullanıcıların Microsoft kimlik platformu etkileşim kurması gerekir. Böyle durumlarda, son kullanıcının hesabını seçmesi, kimlik bilgilerini girmesi veya uygulamanızın izinlerini onaylaması gerekebilir. Örneğin,

  • Kullanıcılar uygulamada ilk kez oturum açtığında
  • Bir kullanıcı parolasını sıfırlarsa, kimlik bilgilerini girmesi gerekir
  • Uygulamanız bir kaynağa ilk kez erişim istediğinde
  • MFA veya diğer Koşullu Erişim ilkeleri gerektiğinde
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Konum: Açıklama
scopes İstenen kapsamları içerir (yani, [ "user.read" ] Microsoft Graph için veya [ "<Application ID URL>/scope" ] özel web API'leri için (api://<Application ID>/access_as_user)

acquireTokenSilent: Erişim belirtecini sessizce alma

Uygulamalar, kullanıcılarının her belirteç isteğinde bulunduklarında oturum açmalarını gerektirmemelidir. Kullanıcı zaten oturum açtıysa, bu yöntem uygulamaların sessizce belirteç istemesine izin verir.

self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in

   guard let account = currentAccount else {
      return
   }

   let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
   self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Konum: Açıklama
scopes İstenen kapsamları içerir (yani, [ "user.read" ] Microsoft Graph için veya [ "<Application ID URL>/scope" ] özel web API'leri için (api://<Application ID>/access_as_user)
account Belirteç isteniyor hesabı. Bu hızlı başlangıç, tek bir hesap uygulaması hakkındadır. Çok hesaplı bir uygulama oluşturmak istiyorsanız, kullanarak ve doğru geçiş yaparak belirteç isteklerinde accountsFromDeviceForParameters:completionBlock: hangi hesabın kullanılacağını belirlemek için mantık tanımlamanız gerekir accountIdentifier

Yardım ve destek

Yardıma ihtiyacınız varsa, bir sorunu bildirmek veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız bkz. Geliştiriciler için yardım ve destek.

Sonraki adımlar

Microsoft kimlik platformu erişim belirtecini alan ve Microsoft Graph API çağırmak için kullanan bir iOS veya macOS uygulaması oluşturduğunuz adım adım öğreticiye geçin.