Öğretici: Güvenli bir JavaScript uygulamasından kullanıcı olarak Microsoft Graph'e erişim sağlama

Azure App Service üzerinde çalışan bir web uygulamasından Microsoft Graph erişmeyi öğrenin.

Microsoft Graph'a erişimi gösteren diyagram.

Web uygulamanızdan Microsoft Graph erişim eklemek ve oturum açmış kullanıcı olarak bazı eylemler gerçekleştirmek istiyorsunuz. Bu bölümde, web uygulamasına temsilci izinleri verme ve oturum açmış kullanıcının profil bilgilerini Microsoft Entra ID alma işlemleri açıklanmaktadır.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Bir web uygulaması için delege edilmiş izinler verme.
  • Oturum açmış bir kullanıcı için web uygulamasından Microsoft Graph arayın.

Azure hesabınız yoksa başlamadan önce free hesabı oluşturun.

Önkoşullar

Microsoft Graph'a çağrı yapmak için ön uç erişimi ver

Web uygulamanızda kimlik doğrulama ve yetkilendirmeyi etkinleştirdikten sonra, web uygulaması Microsoft kimlik platformuna kaydedilir ve bir Microsoft Entra uygulaması tarafından desteklenir. Bu adımda, web uygulamasına kullanıcı için Microsoft Graph'a erişim izni verirsiniz.

Note

Teknik olarak, web uygulamasının Microsoft Entra uygulamasına kullanıcı için Microsoft Graph Microsoft Entra uygulamasına erişim izinleri verirsiniz.

  1. Microsoft Entra admin center ve Entra ID öğesini seçin.

  2. App registrations>Owned applications>Bu dizindeki tüm uygulamaları görüntüle öğesini seçin. Web uygulamanızın adını ve ardından API izinleri'ne tıklayın.

  3. İzin ekle'yi ve ardından Microsoft API'leri ve ardından Microsoft Graph'ı seçin.

  4. Temsilci izinleri'ni ve ardından listeden User.Read öğesini seçin. İzinler ekle'yi seçin.

App Service’i kullanılabilir bir erişim belirteci döndürecek şekilde yapılandırma

Web uygulaması artık oturum açmış kullanıcı olarak Microsoft Graph erişmek için gerekli izinlere sahiptir. Bu bölümde, App Service kimlik doğrulamasını ve yetkilendirmesini, Microsoft Graph'a erişmek için size kullanılabilir bir erişim belirteci verecek şekilde yapılandıracaksınız. Bu adım için aşağı akış hizmetinin (Microsoft Graph) kapsamını eklemeniz User.Read gerekir: https://graph.microsoft.com/User.Read.

Önemli

App Service'i kullanılabilir bir erişim belirteci döndürecek şekilde yapılandırmazsanız, kodunuzda Microsoft Graph API'leri çağırdığınızda CompactToken parsing failed with error code: 80049217 hatası alırsınız.

Azure Kaynak Gezgini gidin ve kaynak ağacını kullanarak web uygulamanızı bulun. Kaynak URL'si https://management.azure.com/subscriptions/subscriptionId/resourceGroups/SecureWebApp/providers/Microsoft.Web/sites/SecureWebApp20200915115914 benzer olmalıdır.

Azure Kaynak Gezgini artık kaynak ağacında web uygulamanız seçili olarak açılır.

  1. Sayfanın üst kısmında Edit öğesini seçerek Azure kaynaklarınızın düzenlenmesini etkinleştirin.

  2. Sol tarayıcıda config>authsettingsV2 yapısına inin.

  3. authsettingsV2 görünümünde Düzenle'yi seçin.

  4. identityProviders>oturum açma bölümünü bulun ve aşağıdaki loginParameters ayarlarını ekleyin: "loginParameters":[ "response_type=code id_token","scope=openid offline_access profile https://graph.microsoft.com/User.Read" ].

    "identityProviders": {
        "azureActiveDirectory": {
          "enabled": true,
          "login": {
            "loginParameters":[
              "response_type=code id_token",
              "scope=openid offline_access profile https://graph.microsoft.com/User.Read"
            ]
          }
        }
      }
    },
    
  5. PUT'ı seçerek ayarlarınızı kaydedin.

Bu ayarın geçerlilik kazanması birkaç dakika sürebilir. Web uygulamanız artık uygun bir erişim belirteci ile Microsoft Graph erişecek şekilde yapılandırıldı. Aksi takdirde, Microsoft Graph sıkıştırılmış belirtecin biçiminin yanlış olduğunu belirten bir hata döndürür.

Node.js'dan Microsoft Graph arama

Web uygulamanız artık gerekli izinlere sahip. Ayrıca oturum açma parametrelerine Microsoft Graph'ın istemci kimliğini ekler.

İstemci kitaplığı paketlerini yükleme

npm ile projenize @azure/identity ve @microsoft/microsoft-graph-client paketlerini yükleyin.

npm install @microsoft/microsoft-graph-client

Kimlik doğrulama bilgilerini yapılandırma

Kimlik doğrulama ayarlarını tutmak için bir nesne oluşturun:

// partial code in app.js
const appSettings = {
    appCredentials: {
        clientId: process.env.WEBSITE_AUTH_CLIENT_ID, // Enter the client Id here,
        tenantId: "common", // Enter the tenant info here,
        clientSecret: process.env.MICROSOFT_PROVIDER_AUTHENTICATION_SECRET // Enter the client secret here,
    },
    authRoutes: {
        redirect: "/.auth/login/aad/callback", // Enter the redirect URI here
        error: "/error", // enter the relative path to error handling route
        unauthorized: "/unauthorized" // enter the relative path to unauthorized route
    },
    protectedResources: {
        graphAPI: {
            endpoint: "https://graph.microsoft.com/v1.0/me", // resource endpoint
            scopes: ["User.Read"] // resource scopes
        },
    },
}

Kullanıcı adına Microsoft Graph çağırma

Aşağıdaki kod, uygulama olarak Microsoft Graph denetleyicisini çağırmayı ve bazı kullanıcı bilgilerini almayı gösterir.

// controllers/graphController.js

// get the name of the app service instance from environment variables
const appServiceName = process.env.WEBSITE_SITE_NAME;

const graphHelper = require('../utils/graphHelper');

exports.getProfilePage = async(req, res, next) => {

    try {
        // get user's access token scoped to Microsoft Graph from session
        // use token to create Graph client
        const graphClient = graphHelper.getAuthenticatedClient(req.session.protectedResources["graphAPI"].accessToken);

        // return user's profile
        const profile = await graphClient
            .api('/me')
            .get();

        res.render('profile', { isAuthenticated: req.session.isAuthenticated, profile: profile, appServiceName: appServiceName });   
    } catch (error) {
        next(error);
    }
}

Önceki kod, Microsoft Graph istemcisini döndürmek için aşağıdaki getAuthenticatedClient işlevine dayanır.

// utils/graphHelper.js

const graph = require('@microsoft/microsoft-graph-client');

getAuthenticatedClient = (accessToken) => {
    // Initialize Graph client
    const client = graph.Client.init({
        // Use the provided access token to authenticate requests
        authProvider: (done) => {
            done(null, accessToken);
        }
    });

    return client;
}

Kaynakları temizleme

Bu çok bölümlü öğreticideki tüm adımları tamamladıysanız bir App Service, App Service barındırma planı ve bir kaynak grubunda depolama hesabı oluşturdunuz. Ayrıca Microsoft Entra ID'de bir uygulama kaydı oluşturdunuz. Dış yapılandırmayı seçtiyseniz yeni bir dış kiracı oluşturmuş olabilirsiniz. Artık gerekli olmadığında, ücret tahakkuk etmeye devam etmemesi için bu kaynakları ve uygulama kaydını silin.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Eğitimi izlerken oluşturulan Azure kaynaklarını silin.

Kaynak grubunu silme

  1. Azure portalında, Azure portalı menüsünde Kaynak grupları'nı seçin.

  2. App Service ve App Service planınızı içeren kaynak grubunu seçin.

  3. Kaynak grubunu ve tüm kaynakları silmek için Kaynak grubunu sil'i seçin.

    Kaynak grubunun silinmesini gösteren ekran görüntüsü.

Bu eylem birkaç dakika sürebilir.

Uygulama kaydını silme

  1. Microsoft Entra admin centerApp registrations'ı seçin. Ardından oluşturduğunuz uygulamayı seçin.

    Uygulama kaydının seçilmesini gösteren ekran görüntüsü.

  2. Uygulama kaydına genel bakış bölümünde Sil'i seçin.

    Uygulama kaydını silme işlemini gösteren ekran görüntüsü.

Dış kiracıyı silme

Yeni bir dış kiracı oluşturduysanız, bu kiracıyı silebilirsiniz.

  1. Microsoft Entra yönetim merkezinde EntraID>Genel Bakış>Kiracıları Yönet bölümüne gidin.

  2. Silmek istediğiniz kiracıyı seçin ve ardından Sil'i seçin.

    Kiracıyı silmeden önce gerekli eylemleri tamamlamanız gerekebilir. Örneğin, kiracıdaki tüm kullanıcı akışlarını ve uygulama kayıtlarını silmeniz gerekebilir.

  3. Kiracıyı silmeye hazırsanız Sil'i seçin.

Sonraki adımlar

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:

  • Bir web uygulaması için delege edilmiş izinler verme.
  • Oturum açmış bir kullanıcı için web uygulamasından Microsoft Graph arayın.