Vuosi sitten kävin läpi, miten Power Automatella voi kutsua osaa Microsoftin rajapinnoista hyödyntäen Http with Azure AD -yhdistintä. Tämä on usein todella kätevää:

  • Rajapintaa kutsutaan delegoiduin käyttöoikeuksin
  • Käytettävän tunnuksen salasana tallentuu luotuun yhteyteen (connection), sitä ei pääse kaivamaan sieltä esiin
  • Tunnuksella voi olla MFA käytössä
  • Ei tarvetta rekisteröidä omaa sovellusta Azure AD:hen

Samassa jutussa vertailin eri tapoja kutsua Entra ID -todennusta käyttävää (Microsoftin tarjoamaa) rajapintaa

  • HTTP-toiminnon käyttö Service Principalilla
  • HTTP-toiminnon käyttö käyttäjällä
  • Oma yhdistin
  • HTTP with Azure AD -yhdistin

Azure AD:n uudelleen nimeämisen myötä Http with Azure AD -yhdistin katosi ja tilalle tuli Http with Microsoft Entra ID. Mutta niitäpä tuli kaksi. Tavallinen ja preauthorized.

Mikä ero näillä kahdella yhdistimellä oikeasti on? Selvitetään.

Http with Microsoft Entra ID (preauthorized)

Http with Microsoft Entra ID (preauthorized) on käytännössä sama kuin vanha Http with Azure AD -yhdistin. Sillä voi tehdä delegoituja kutsuja Microsoftin eri palveluihin (Microsoft Graph API, Dataverse API, Power BI API jne). Sinun ei tarvitse tehdä Entra ID:hen mitään määrityksiä (rekisteröidä sovellusta tai tehdä luvituksia). Yhdistin on valmiiksi luvitettu käyttämään tiettyjen rajapintojen valittuja palveluja.

Esimerkki – Tiimit joiden jäsen olen

Tehdään flow, joka hakee Microsoft Graph API:n avulla tiedon tiimeistä, joiden jäsen olen. Lisätään flow’hun Http with Microsoft Entra ID (preauthorized) -yhdistimen Invoke an HTTP request -toiminto.

Yhteyttä luotaessa määritellään käytettävän resurssin osoitteet. Esimerkissämme Microsoft Graph API:n.

Syntynyt yhteysviite ei kerro, minkä palvelun käyttöön se on luotu.

Tämä aiheuttaa helposti ongelmia jatkossa, kun yrität selvittää millä yhteysviitteellä voit käyttää Microsoft Graph API:a ja millä Power BI API:a. Kannattaa käydä lisäämässä käytettävä palvelu yhteysviitteen nimeen.

Lopuksi tehdään kutsu, joka palauttaa tiimit joiden jäsen olen.

https://graph.microsoft.com/v1.0/me/joinedTeams

Ja sieltä ne tulevat.

Esimerkki – Henkilöiden läsnäolotiedot

Etukäteen luvitetun yhdistimen ongelmana on, etteivät kaikki rajapinnan toiminnot ole käytettävissä. Koitetaan hakea henkilön x läsnäolotietoa.

https://graph.microsoft.com/v1.0/communications/getPresencesByUserId

Vastaus on tyly.

Graph Explorerilla voimme todeta, että tällainen rajapinta on ja se toimii kyseisellä käyttäjällä.

Nyt astuu kuvaan yhdistimen toinen versio.

Http with Microsoft Entra ID

Yhdistintä käytetään aivan samoin kuin preauthorized -vesiota. Mutta tätä versiota ei ole etukäteen luvitettu käyttämään mitään palveluja.

Lisätään flow’hun Http with Microsoft Entra ID -yhdistimen Invoke an HTTP request -toiminto.

Määritellään jälleen mitä palveua käytetään (Microsoft Graph API).

Emme voi edes luoda yhteyttä (connection). Koska yhdistimelle ei ole määritelty mitään oikeuksia.

Esimerkki – Henkilöiden läsnäolotiedot

Haluamme hakea henkilöiden läsnäolotietoja Microsoft Graph API:sta. Valmiiksi luvitetulla yhdistimellä se ei onnistunut, joten luvitetaan tämä toinen ja käytetään sitä.

Yhdistimen luvittaminen

Luvituksen voi tehdä toistaiseksi ainoastaan Power Shellillä (versio 7 tai uudempi). Haetaan PowerShell skripti (ManagePermissionGrant.ps1) GitHubista. Täpätään tiedoston asetuksista Unblock päälle.

Avataan PowerShell ja yhdistetään.

Connect-MgGraph

Tunnistaudutaan (admin tunnuksella).

Suoritetaan ManagePermissionGrant.ps1 -komento. Microsoft Graph API löytyy valinnan A (Azure Global) alta, joten valitaan se.

Jälleen tunnistaudutaan (Global Admin tunnuksin), jonka jälkeen voidaan valita joko useimmiten käytetyistä sovelluksista (C) tai kaikista (A).

Haluamme valita kaikista vaihtoehdoista, joten valitsemme A:n. Avautuu dialogi, josta valitaan ensin haluttu palvelu. Täällähän on vaikka mitä. Valitaan Microsoft Graph.

Pääsemme vihdoin valitsemaan Microsoft Graphin toimintoja.

Tarkistetaan dokumentaatiosta, mitä oikeuksia läsnäolotiedon hakeminen edellyttää.

Presence.Read.All riittää. Lisätään se.

Seuraavaksi valitaan, voiko yhdistimen avulla käyttää valittuja toimintoja kaikki vai ainoastaan valitut käyttäjät. Annetaan oikeus kaikille.

Lopuksi vielä hyväksytään.

Vaikka luvituksia ei voi tehdä Azure portaalista, ovat ne siellä nähtävillä. Haetaan sovellus HttpWithAADApp ja katsotaan sen luvitukset (permissions).

Siellähän ne.

Yhdistimen käyttö

Lisätään flow’hun HTTP with Microsoft Entra ID -yhdistimen Invoke an HTTP request -toiminto.

Käytämme edelleen Microsoft Graph API:a, joten annetaan luonnin yhteydessä sen osoitteet.

Kokeillaan hakea käyttäjän läsnäolotietoa.

Ja sieltä se tulee!

Yhteenveto

Uusi yhdistin (HTTP with Microsoft Entra ID) on mainio lisä nykyiseen palettiin. Sen avulla pääsee käyttämään useiden Microsoftin rajapintojen toimintoja käyttäjän käyttöoikeuksien sallimissa rajoissa (delegoidut oikeudet).

Kätevää esimerkiksi kun rajapintaa käytetään Power Appsista käsin sovelluksen käyttäjän tunnuksella.

Muutama asia on kuitenkin syytä huomioida.

  1. Yhdistimen luvittaminen edellyttää Global Admin -oikeuksia
  2. Yhdistimellä on vain yhdet luvitusasetukset. Valitut käyttäjät (tai tenantin kaikki käyttäjät) saavat käyttää kaikkia sen avulla luvitettuja toimintoja (omien käyttöoikeuksiensa puitteissa) kaikissa Power Platform ympäristöissä

Yhdistimen käyttöä eri ympäristöissä voi rajoittaa DLP-sääännöillä. Valitettavasti endpoint-tasoisia DLP-sääntöjä voi tehdä ainoastaan yhdistimen etukäteen luvitetulle (preauthorized) versiolle.