Öğ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:
- Statik bir web uygulaması dağıtma.
- Microsoft Entra uygulama kaydı oluşturun.
- Microsoft Entra Id ile özel kimlik doğrulaması ayarlayın.
- Kullanıcının Active Directory grup üyeliğini sorgulayan ve özel rollerin listesini döndüren sunucusuz bir işlev yapılandırın.
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
roller işlev şablonunu temel alan bir depo oluşturun. Yeni bir depo oluşturmak için aşağıdaki konuma gidin.
Deponuza my-custom-roles-app adını verin.
Şablondan depo oluştur’u seçin.
Statik web uygulamasını Azure'a dağıtma
Sol üst köşeden Kaynak oluştur'u seçin.
Arama kutusuna statik web uygulamaları yazın.
Static Web Apps’ı seçin.
Oluştur'u belirleyin.
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. 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. 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. Gözden geçir ve oluştur’u seçin.
İlk dağıtımı başlat'ı seçin.
İşlem tamamlandıktan sonra Kaynağa git'i seçerek yeni statik web uygulamanızı açın.
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
Azure portalında Microsoft Entra Id araması yapın ve adresine gidin.
Yönet menüsünden Uygulama kayıtları'i seçin.
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. Kaydet'i seçin.
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
Uygulama kayıt ayarlarında Yönet'in altında Kimlik Doğrulaması'nı seçin.
Ö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.
Kaydet'i seçin.
İstemci gizli dizisi oluşturma
Uygulama kayıt ayarlarında Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
Gizli anahtarlar bölümünün altında, Yeni gizli anahtar'ı seçin.
Açıklama alanı için MyStaticWebApp girin.
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.
Ekle'yi seçin.
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.
Active Directory kimlik doğrulamayı yapılandırma
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 ileresource=https://graph.microsoft.com
yapılandırılması gerekir.Dosyayı güncelleştirmek için Düzenle'yi seçin.
değerini Microsoft Entra Kimliğinizin dizin (kiracı) kimliğiyle değiştirerek
<YOUR_AAD_TENANT_ID>
openIdIssuer değerinihttps://login.microsoftonline.com/<YOUR_AAD_TENANT_ID>
güncelleştirin.Değişiklikleri işle'yi seçin ....
İş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.
Azure portalında statik web uygulaması kaynağınıza gidin.
Menü çubuğunda Yapılandırma'ya tıklayın.
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. Kaydet'i seçin.
Rol oluşturma
Azure portalında Active Directory uygulama kaydınızı açın.
Yönet'in altında Uygulama rolleri'ne tıklayın.
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. Bu uygulama rolünü etkinleştirmek istiyor musunuz? kutusunu işaretleyin
Uygula'yı seçin.
Şimdi okuyucu adlı bir rol için aynı işlemi yineleyin.
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.
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.Düzenle öğesini seçin.
Nesneyi Microsoft Entra kiracınızdaki grup kimlikleriyle güncelleştirin.
Örneğin, kimlikleri
6b0b2fff-53e9-4cff-914f-dd97a13bfbd6
veb6059db5-9cef-4b27-9434-bb793aa31805
olan 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-bb793aa31805
sahip Active Directory grubunun bir üyesiyse bu kullanıcıya rol verilirreader
.Değişiklikleri işle'yi seçin ....
İş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.
Dağıtım tamamlandığında, uygulamanın URL'sine giderek değişikliklerinizi doğrulayabilirsiniz.
Microsoft Entra Id kullanarak statik web uygulamanızda oturum açın.
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.
Azure portalda, sol menüden Kaynak grubu’nu seçin.
Ada göre filtrele alanına kaynak grubu adını girin.
Bu öğreticide kullandığınız kaynak grubu adını seçin.
Üstteki menüden Kaynak grubunu sil’i seçin.