Power Apps’de Microsoft Graph ile Azure Active Directory Entegrasyonu

Bu makalede Microsoft’un Graph API’ı ile Power Apps’de Custom Connector (özel bağlayıcı) oluşturulmuş ve Azure Active Directory’den veri alınmış Canvas Apps’de data tablosuna aktarılmıştır.

Herkese merhaba,

Bugün Power Apps’de custom connector oluşturup Azure Active Directory (AAD) entegrasyonu yapacağım. Bunun için de Microsoft 365’de yer alan bilgilere erişimimi sağlayan Microsoft Graph API’ı kullanacağım.

Herşeyden önce Custom Connector oluşturmadan önce şu yazıma göz atmanızı tavsiye ederim. Bu sefer authentication’da OAuth 2.0 kimlik doğrulama frameworkünü kullanacağım.

OAuth Authentication için öncelikle uygulamanın servise kaydedilmesi gerekir. Bunun için

Portal.Azure.com > App Registiration > +New Registration

Uygulamaya “AADSample” adı verip erişim iznimi belirledim ve Redirect URL’i lokal host yaptıktan sonra “Register” diyorum, Application ID’yi bir yere kopyalıyorum birazdan kullanacağım.

Certificates and Secrets‘dan Client-Client Secret oluşturuyorum.

Client Secrets > +New Client Secrets

“+New Client Secret” dedikten sonra açılan yan pencerede Client adına “DemoClient” diyorum ve 1 yıl sonra uçmasını istediğim için “Expires in 12 months” seçiyorum, add ile ekliyorum.

Genel Client’ın Value değerini yine kopyalayıp App ID ile saklıyorum.

Sırada sol menüde yer alan App Permission var.

App Permission > +Add a Permission > Microsoft Graph > Delegated Permissions

dedikten sonra AAD entegrasyonu için kullanmak istediğiniz verileri bulabilirsiniz. Ben bizim firmamızdaki grup bilgilerine ulaşmak istediğim için Groups’u seçeceğim ve “Add Permission” ile izni ekledim. Şimdi Grand Admin Consent Confirmation‘ı yaptıktan sonra permission için status’ler onaylanıyor.

Burada durup artık client ve izinleri tamamladıktan sonra Power Apps’e geçeceğiz.

Power Apps > Data > Custom Connector

Custom connector oluşturuyorum. Protokolim HTTPS, hostum “graph.microsoft.com” ve Base URL ‘im “/” olarak kalsın.

Geçiyorum 2. basamağa, doğrulama tipini OAuth 2.0 seçiliyken Identity Provider’ı AAD olarak belirliyorum ve kopyaladığım App (Client) ID’yi, Client Secret’i yapıştırıyorum. Resource URL: https://graph.microsoft.com ve Scope’da “User.Read.Group.Read.All” dedikten sonra “Create Connector” ile bağlayıcımı oluşturuyorum.

Bağlayıcı oluşturulduktan sonra verilen Redirect URL’i kopyalayım.

Azure Portalda Authentication‘a gidiyorum ve Web sekmesi altına “Add URL” ile ekliyor ve kaydediyorum.

Kaydettikten sonra 3.basamağa “Definition”a geçebilirim, artık Azure Portalda işim bitti. GetGroups ile firmamızdaki grupların bilgilerine ulaşacağım.

Definition tabında request ve response’ları belirlemek için AAD’den gelecek bilgilerin URL ve JSON formatlarına ihtiyacım var. Bunları da Graph Explorer‘dan alacağım. URL kısmına Groups yazıp “Run Query” dediğimde JSON formatı elde ediyorum.

Power Apps’e dönüp request ve response’u doldurabilirim.

Update Connector diyip bağlantımı yapmak üzere Canvas App‘e gidiyorum. DataSource’dan yeni oluşturduğum AAD_Groups connectorune bağlanıyorum. Uygulamaya bir tane data table, bir tane de buton koyuyorum.

Butonun OnSelect‘ine; UpdateContext({GroupInfo: AAD_Groups.GetGroups()}) yazıyorum ve Data Table‘ın ITEM‘ına da GroupInfo.Value ile AAD’den gelen grup bilgileri basılsın diyorum. Butona basmadan önce son bir nokta da Edit Field ile tabloda gelmesini istediğiniz bilgileri düzenlemek. Ben “Created Time, display name ve mail”i getirdim. Artık butona basabilirim.

Gördüğünüz gibi Microsoft Graph API ile custom connector oluşturduk ve Azure’da active directory Group bilgilerini aldık, bu bilgileri de Canvas app’de kullanıcıya sunduk.

Umarım faydalı olmuştur.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s