Hızlı Başlangıç: Tek sayfalı bir uygulamada (SPA) kullanıcılarla oturum açma ve Microsoft Graph API'sini çağırma

Şunlar için geçerlidir: Aşağıdaki içeriğin iş gücü kiracıları için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. İş gücü kiracıları Aşağıdaki içeriğin dış kiracılar için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu hızlı başlangıçta, Kod Değişimi için Kanıt Anahtarı (PKCE) ile yetkilendirme kodu akışını kullanarak ve Microsoft Graph API'sini çağırarak kullanıcıların nasıl oturum açtığını göstermek için örnek bir tek sayfalık uygulama (SPA) kullanacaksınız. Örnek, kimlik doğrulamasını işlemek için Microsoft Kimlik Doğrulama Kitaplığı kullanır.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Henüz bir hesabınız yoksa, ücretsiz bir hesap oluşturun .
  • Bu Azure hesabının uygulamaları yönetme izinleri olmalıdır. Aşağıdaki Microsoft Entra rollerinden herhangi biri gerekli izinleri içerir:
    • Uygulama Yöneticisi
    • Uygulama Geliştirici
  • Çalışma amaçlı kiracı. Varsayılan Dizininizi kullanabilir veya yeni bir kiracı ayarlayabilirsiniz.
  • Visual Studio Code veya başka bir kod düzenleyicisi.

Örnek uygulamayı kopyalama veya indirme

Örnek uygulamayı edinmek için GitHub'dan kopyalayabilir veya .zip dosyası olarak indirebilirsiniz.

  • Örneği kopyalamak için bir komut istemi açın ve projeyi oluşturmak istediğiniz yere gidin ve aşağıdaki komutu girin:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-javascript.git
    
  • .zip dosyasınıindirin. Adın uzunluğu 260 karakterden az olan bir dosya yoluna dosyayı ayıklayın.

Projeyi yapılandırma

  1. IDE'nizde, örneği içeren ms-identity-docs-code-javascript proje klasörünü açın.

  2. vanillajs-spa/App/public/authConfig.js açın ve yönetim merkezinde kaydedilen bilgilerle aşağıdaki değerleri güncelleştirin.

    /**
     * Configuration object to be passed to MSAL instance on creation. 
     * For a full list of MSAL.js configuration parameters, visit:
     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md 
     */
    const msalConfig = {
        auth: {
             clientId: "Enter_the_Application_Id_Here",
             // WORKFORCE TENANT
             authority: "https://login.microsoftonline.com/Enter_the_Tenant_Info_Here", //  Replace the placeholder with your tenant info
             // EXTERNAL TENANT
             // authority: "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/", // Replace the placeholder with your tenant subdomain
            redirectUri: '/', // You must register this URI on App Registration. Defaults to window.location.href e.g. http://localhost:3000/
            navigateToLoginRequestUrl: true, // If "true", will navigate back to the original request location before processing the auth code response.
        },
        cache: {
            cacheLocation: 'sessionStorage', // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO.
            storeAuthStateInCookie: false, // set this to true if you have to support IE
        },
        system: {
            loggerOptions: {
                loggerCallback: (level, message, containsPii) => {
                    if (containsPii) {
                        return;
                    }
                    switch (level) {
                        case msal.LogLevel.Error:
                            console.error(message);
                            return;
                        case msal.LogLevel.Info:
                            console.info(message);
                            return;
                        case msal.LogLevel.Verbose:
                            console.debug(message);
                            return;
                        case msal.LogLevel.Warning:
                            console.warn(message);
                            return;
                    }
                },
            },
        },
    };
    
    /**
     * Scopes you add here will be prompted for user consent during sign-in.
     * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
     * For more information about OIDC scopes, visit: 
     * https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#openid-connect-scopes
     */
    const loginRequest = {
        scopes: ["User.Read"],
    };
    
    /**
     * An optional silentRequest object can be used to achieve silent SSO
     * between applications by providing a "login_hint" property.
     */
    
    // const silentRequest = {
    //   scopes: ["openid", "profile"],
    //   loginHint: "example@domain.net"
    // };
    
    // exporting config object for jest
    if (typeof exports !== 'undefined') {
        module.exports = {
            msalConfig: msalConfig,
            loginRequest: loginRequest,
        };
    }
    
    • clientId - İstemci olarak da adlandırılan uygulamanın tanımlayıcısı. Tırnak işareti içindeki yazıyı daha önce kaydedilmiş Uygulama (istemci) kimliği değeriyle değiştirin.
    • authority - Yetki, MSAL'nin token talep edebileceği bir dizini gösteren bir URL'dir. Enter_the_Tenant_Info_Here ifadesini, daha önce kaydedilmiş olan Dizin (kiracı) kimliği değeriyle değiştirin.
    • redirectUri - Uygulamanın yönlendirme URI'si. Gerekirse, tırnak içindeki metni daha önce kaydedilmiş yeniden yönlendirme URI'siyle değiştirin.

Uygulamayı çalıştırın, oturum açın ve çıkış yapın

Node.jskullanarak projeyi bir web sunucusuyla çalıştırın:

  1. Sunucuyu başlatmak için proje dizininden aşağıdaki komutları çalıştırın:

    cd vanillajs-spa/App
    npm install
    npm start
    
  2. Terminalde görüntülenen https URL'sini (örneğin, https://localhost:3000) kopyalayın ve bir tarayıcıya yapıştırın. Özel veya gizli bir tarayıcı oturumu kullanmanızı öneririz.

  3. Adımları izleyin ve Microsoft hesabınızla oturum açmak için gerekli ayrıntıları girin. Size tek seferlik bir geçiş kodu gönderebilmek için bir e-posta adresi istenir. İstendiğinde kodu girin.

  4. Uygulama, erişim verdiğiniz verilere erişimi korumak ve oturum açıp profilinizi okumak için izin isteyecektir. SeçKabul Et Uygulamada oturum açtığınızı ve Profil ayrıntılarınıza Microsoft Graph API'sinden eriştiğnizi gösteren aşağıdaki ekran görüntüsü görüntülenir.

    API çağrısının sonuçlarını gösteren JavaScript Uygulamasının ekran görüntüsü.

Önkoşullar

Örnek SPA'yı kopyalama veya indirme

Örnek uygulamayı edinmek için GitHub'dan kopyalayabilir veya .zip dosyası olarak indirebilirsiniz.

  • Örneği kopyalamak için bir komut istemi açın ve projeyi oluşturmak istediğiniz yere gidin ve aşağıdaki komutu girin:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • Örneğiindirin. Adın uzunluğu 260 karakterden az olan bir dosya yoluna dosyayı ayıklayın.

Örnek SPA'yi yapılandırma

  1. App/public/authConfig.js açın ve aşağıdaki değerleri Microsoft Entra yönetim merkezinden alınan değerlerle değiştirin:

    • Enter_the_Application_Id_Here ve daha önce kaydettiğiniz uygulamanın Uygulama (istemci) kimliğiyle değiştirin.
    • Enter_the_Tenant_Subdomain_Here'u, Dizinin (kiracının) alt etki alanıyla değiştirin. Örneğin, kiracınızın birincil alan adı contoso.onmicrosoft.comise, contosokullanın. Eğer kiracı adınız yoksa, kiracı ayrıntılarınızı nasıl okuyacağınızıöğrenin.
  2. Dosyayı kaydedin.

Projenizi çalıştırma ve oturum açma

  1. Sunucuyu başlatmak için proje dizininden aşağıdaki komutları çalıştırın:

    cd 1-Authentication\0-sign-in-vanillajs\App
    npm install
    npm start
    
  2. Terminalde görüntülenen https URL'sini (örneğin, https://localhost:3000) kopyalayın ve bir tarayıcıya yapıştırın. Özel veya gizli bir tarayıcı oturumu kullanmanızı öneririz.

  3. Kiracıya kayıtlı bir hesapla oturum açın.

  4. Uygulamada oturum açtığınızı ve Profil ayrıntılarınıza Microsoft Graph API'sinden eriştiğnizi gösteren aşağıdaki ekran görüntüsü görüntülenir.

    API çağrısının sonuçlarını gösteren JavaScript Uygulamasının ekran görüntüsü.

Uygulama oturumunu kapatma

  1. Sayfada Oturumu kapat düğmesini bulun ve seçin.
  2. Oturumunu kapatmak için bir hesap seçmeniz istenir. Oturum açmak için kullandığınız hesabı seçin.

Oturumunuz kapatıldığını belirten bir ileti görüntülenir. Artık tarayıcı penceresini kapatabilirsiniz.