Öğretici: İşlev ve Microsoft Graph ile özel roller atama

Bu makalede, Microsoft Graph'i sorgulamak ve bir kullanıcıya Active Directory grup üyeliğine göre özel roller atamak için bir işlevin nasıl kullanılacağı gösterilmektedir.

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

Not

Bu öğreticide rol atamak için bir işlev kullanmanız gerekir. İşlev tabanlı rol yönetimi şu anda önizleme aşamasındadır. Bu öğreticiyi tamamlamak için gereken izin düzeyi "User.Read.All" şeklindedir.

Uygulamanın API'sinde GetRoles adlı bir işlev vardır. Bu işlev, Microsoft Graph'ten Active Directory'yi sorgulamak için kullanıcının erişim belirtecini kullanır. Kullanıcı uygulamada tanımlanan herhangi bir grubun üyesiyse, ilgili özel roller kullanıcıya eşlenir.

Önkoşullar

Gereksinim Açıklamalar
Etkin Azure hesabı Hesabınız yoksa ücretsiz bir hesap oluşturabilirsiniz.
Microsoft Entra izinleri Microsoft Entra uygulaması oluşturmak için yeterli izinlere sahip olmanız gerekir.

GitHub deposu oluşturma

  1. roller işlev şablonunu temel alan bir depo oluşturun. Yeni bir depo oluşturmak için aşağıdaki konuma gidin.

    https://github.com/staticwebdev/roles-function/generate

  2. Deponuza my-custom-roles-app adını verin.

  3. Şablondan depo oluştur’u seçin.

Statik web uygulamasını Azure'a dağıtma

  1. Yeni bir tarayıcı penceresinde Azure portalını açın.

  2. Sol üst köşeden Kaynak oluştur'u seçin.

  3. Arama kutusuna statik web uygulamaları yazın.

  4. Static Web Apps’ı seçin.

  5. Oluştur'u belirleyin.

  6. Statik web uygulamanızı aşağıdaki bilgilerle yapılandırın:

    Ayar Value Notlar
    Abonelik Azure aboneliği seçin.
    Kaynak grubu my-custom-roles-app-group adlı yeni bir grup oluşturun.
    Veri Akışı Adı my-custom-roles-app
    Plan türü Standart Kimlik doğrulamasını özelleştirmek ve bir işlev kullanarak roller atamak için Standart plan gerekir.
    API için bölge Size en yakın bölgeyi seçin.
  7. Dağıtım ayrıntıları bölümünde:

    Ayar Değer
    Source GitHub'ı seçin.
    Organization Depoyu oluşturduğunuz kuruluşu seçin.
    Depo My-custom-roles-app öğesini seçin.
    Şube Ana öğesini seçin.
  8. Derleme Ayrıntıları bölümünde bu uygulamanın yapılandırma ayrıntılarını ekleyin.

    Ayar Value Notlar
    Ön ayarlar oluşturma Özel'i seçin.
    Uygulama konumu /frontend girin. Bu klasör ön uç uygulamasını içerir.
    API konumu /Apı Depodaki API işlevlerini içeren klasör.
    Çıkış konumu Boş bırakın. Bu uygulamanın derleme çıkışı yok.
  9. Gözden geçir ve oluştur’u seçin.

  10. İlk dağıtımı başlat'ı seçin.

  11. İşlem tamamlandıktan sonra Kaynağa git'i seçerek yeni statik web uygulamanızı açın.

  12. Genel bakış bölümünde uygulamanızın URL'sini bulun. Active Directory kimlik doğrulamasını ayarlamak için gelecek adımlarda kullanmak üzere bu değeri bir metin düzenleyicisine kopyalayın.

Microsoft Entra uygulaması oluşturma

  1. Azure portalında Microsoft Entra Id araması yapın ve adresine gidin.

  2. Yönet menüsünden Uygulama kayıtları'i seçin.

  3. Uygulama kaydet penceresini açmak için Yeni kayıt'ı seçin. Aşağıdaki değerleri girin:

    Ayar Value Notlar
    Veri Akışı Adı MyStaticWebApp girin.
    Desteklenen hesap türleri Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin.
    Yeniden yönlendirme URI'si Web'i seçin ve statik web uygulamanızın Microsoft Entra kimlik doğrulama geri çağırma URL'sini girin. değerini <YOUR_SITE_URL>/.auth/login/aad/callback statik web uygulamanızın URL'si ile değiştirin<YOUR_SITE_URL>. Bu URL, önceki bir adımda bir metin düzenleyicisine kopyaladığınız urldir.

    Create an app registration

  4. Kaydet'i seçin.

  5. Uygulama kaydı oluşturulduktan sonra, Temel Bileşenler bölümündeki Uygulama (istemci) kimliği ve Dizin (kiracı) kimliğini bir metin düzenleyicisine kopyalayın.

    Statik web uygulamanızda Active Directory kimlik doğrulamasını yapılandırmak için bu değerlere ihtiyacınız vardır.

Kimlik belirteçlerini etkinleştirme

  1. Uygulama kayıt ayarlarında Yönet'in altında Kimlik Doğrulaması'nı seçin.

  2. Örtük verme ve karma akışlar bölümünde Kimlik belirteçlerini (örtük ve karma akışlar için kullanılır) seçin.

    Statik Web Apps çalışma zamanı, kullanıcılarınızın kimliğini doğrulamak için bu yapılandırmayı gerektirir.

  3. Kaydet'i seçin.

İstemci gizli dizisi oluşturma

  1. Uygulama kayıt ayarlarında Yönet'in altında Sertifikalar ve gizli diziler'i seçin.

  2. Gizli anahtarlar bölümünün altında, Yeni gizli anahtar'ı seçin.

  3. Açıklama alanı için MyStaticWebApp girin.

  4. Süre Sonu alanı için varsayılan değeri 6 ay olarak bırakın.

    Not

    Yeni bir gizli dizi oluşturup uygulamanızı değeriyle güncelleştirerek gizli diziyi sona erme tarihinden önce döndürmeniz gerekir.

  5. Ekle'yi seçin.

  6. Oluşturduğunuz istemci gizli dizisinin Değerini bir metin düzenleyicisine kopyalayın.

    Statik web uygulamanızda Active Directory kimlik doğrulamasını yapılandırmak için bu değere ihtiyacınız vardır.

    Create a client secret

Active Directory kimlik doğrulamayı yapılandırma

  1. Bir tarayıcıda, dağıtılan statik web uygulamasını içeren GitHub deposunu açın.

    Uygulamanın ön uç/staticwebapp.config.json yapılandırma dosyasına gidin. Bu dosya aşağıdaki bölümü içerir:

    "auth": {
      "rolesSource": "/api/GetRoles",
      "identityProviders": {
        "azureActiveDirectory": {
          "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
          "registration": {
            "openIdIssuer": "https://login.microsoftonline.com/<YOUR_AAD_TENANT_ID>",
            "clientIdSettingName": "AAD_CLIENT_ID",
            "clientSecretSettingName": "AAD_CLIENT_SECRET"
          },
          "login": {
            "loginParameters": [
              "resource=https://graph.microsoft.com"
            ]
          }
        }
      }
    },
    

    Bu yapılandırma aşağıdaki ayarlardan oluşur:

    Özellikler Açıklama
    rolesSource Oturum açma işleminin kullanılabilir rollerin listesini aldığı URL. Örnek uygulama için URL'si şeklindedir /api/GetRoles.
    userDetailsClaim Oturum açma isteğini doğrulamak için kullanılan şemanın URL'si.
    openIdIssuer Kiracı kimliğinizin eklendiği Microsoft Entra oturum açma yolu.
    clientIdSettingName Microsoft Entra istemci kimliğiniz.
    clientSecretSettingName Microsoft Entra istemci gizli anahtarı değeriniz.
    loginParameters Microsoft Graph için erişim belirteci almak için, loginParameters alanının ile resource=https://graph.microsoft.comyapılandırılması gerekir.
  2. Dosyayı güncelleştirmek için Düzenle'yi seçin.

  3. değerini Microsoft Entra Kimliğinizin dizin (kiracı) kimliğiyle değiştirerek <YOUR_AAD_TENANT_ID> openIdIssuer değerini https://login.microsoftonline.com/<YOUR_AAD_TENANT_ID> güncelleştirin.

  4. Değişiklikleri işle'yi seçin ....

  5. İşleme iletisi girin ve Değişiklikleri işle'yi seçin.

    Bu değişikliklerin işlenmesi, statik web uygulamasını güncelleştirmek için bir GitHub Actions çalıştırması başlatır.

  6. Azure portalında statik web uygulaması kaynağınıza gidin.

  7. Menü çubuğunda Yapılandırma'ya tıklayın.

  8. Uygulama ayarları bölümünde aşağıdaki ayarları ekleyin:

    Veri Akışı Adı Değer
    AAD_CLIENT_ID Active Directory uygulamanızın (istemci) kimliği.
    AAD_CLIENT_SECRET Active Directory uygulama istemci gizli anahtarı değeriniz.
  9. Kaydet'i seçin.

Rol oluşturma

  1. Azure portalında Active Directory uygulama kaydınızı açın.

  2. Yönet'in altında Uygulama rolleri'ne tıklayın.

  3. Uygulama rolü oluştur'u seçin ve aşağıdaki değerleri girin:

    Ayar Value
    Görünen ad Yönetici girin.
    İzin verilen üye türleri Kullanıcılar/Gruplar'ı seçin.
    Değer Yönetici girin.
    Açıklama Yönetici istrator girin.
  4. Bu uygulama rolünü etkinleştirmek istiyor musunuz? kutusunu işaretleyin

  5. Uygula'yı seçin.

  6. Şimdi okuyucu adlı bir rol için aynı işlemi yineleyin.

  7. Her rolün kimlik değerlerini kopyalayın ve bir metin düzenleyicisinde bir kenara ayarlayın.

Özel rolleri doğrulama

Örnek uygulama, kullanıcının önceden tanımlanmış bir grupta olup olmadığını belirlemek için Microsoft Graph'i sorgulayan bir API işlevi (api/GetRoles/index.js) içerir.

İşlev, kullanıcının grup üyeliklerine bağlı olarak kullanıcıya özel roller atar. Uygulama, belirli yolları bu özel rollere göre kısıtlayan şekilde yapılandırılır.

  1. GitHub deponuzda api/GetRoles/index.js konumunda bulunan GetRoles işlevine gidin.

    Üst kısımda özel kullanıcı rollerini Microsoft Entra gruplarına eşleyen bir roleGroupMappings nesne vardır.

  2. Düzenle öğesini seçin.

  3. Nesneyi Microsoft Entra kiracınızdaki grup kimlikleriyle güncelleştirin.

    Örneğin, kimlikleri 6b0b2fff-53e9-4cff-914f-dd97a13bfbd6 ve b6059db5-9cef-4b27-9434-bb793aa31805olan gruplarınız varsa nesnesini şu şekilde güncelleştirebilirsiniz:

    const roleGroupMappings = {
      'admin': '6b0b2fff-53e9-4cff-914f-dd97a13bfbd6',
      'reader': 'b6059db5-9cef-4b27-9434-bb793aa31805'
    };
    

    Bir kullanıcının Kimliği Microsoft Entra Kimliği ile başarıyla doğrulandığında GetRoles işlevi çağrılır. İşlev, Kullanıcının erişim belirtecini kullanarak Microsoft Graph'ten Active Directory grup üyeliğini sorgular. Kullanıcı nesnesinde roleGroupMappings tanımlanan grupların bir üyesiyse, ilgili özel roller döndürülür.

    Yukarıdaki örnekte, bir kullanıcı kimliğine b6059db5-9cef-4b27-9434-bb793aa31805sahip Active Directory grubunun bir üyesiyse bu kullanıcıya rol verilir reader .

  4. Değişiklikleri işle'yi seçin ....

  5. İşleme iletisi ekleyin ve Değişiklikleri işle'yi seçin.

    Bu değişikliklerin yapılması, statik web uygulamasını güncelleştirmek için içinde bir derleme başlatır.

  6. Dağıtım tamamlandığında, uygulamanın URL'sine giderek değişikliklerinizi doğrulayabilirsiniz.

  7. Microsoft Entra Id kullanarak statik web uygulamanızda oturum açın.

  8. Oturum açtığınızda örnek uygulama, kimliğinizin Active Directory grup üyeliğine göre size atanan rollerin listesini görüntüler.

    Bu rollere bağlı olarak, uygulamadaki bazı yollara erişmenize izin verilir veya yasaklanır.

Not

Microsoft Graph'a yönelik bazı sorgular birden çok veri sayfası döndürür. Birden fazla sorgu isteği gerektiğinde, Microsoft Graph yanıtta bir @odata.nextLink sonraki sonuç sayfasının URL'sini içeren bir özellik döndürür. Daha fazla bilgi için bkz . Uygulamanızda Microsoft Graph verilerini sayfalama

Kaynakları temizleme

Kaynak grubunu silerek dağıtmış olduğunuz kaynakları temizleyin.

  1. Azure portalda, sol menüden Kaynak grubu’nu seçin.

  2. Ada göre filtrele alanına kaynak grubu adını girin.

  3. Bu öğreticide kullandığınız kaynak grubu adını seçin.

  4. Üstteki menüden Kaynak grubunu sil’i seçin.

Sonraki adımlar