Skapa en anpassad koppling för Azure AD-skyddade Azure Functions

En viktig princip med Power Apps-koppling som använder Azure Active Directory (AAD) för autentisering är att de inte ger användare åtkomst till data som användaren inte redan har åtkomst till. Detta beror på att API-anropet till den AAD-skyddade tjänsten körs under den användaridentitet som används för att logga in på anslutningen. Därför behåller måltjänsten ansvaret för att tvinga fram vad som tillåts för den autentiserade användaren.

Den här självstudien visar hur du använder Azure Functions för att skapa en REST API, aktivera AAD-autentisering och sedan göra den tillgänglig för Power Apps som en anpassad koppling.

Skapa Azure Functions med Visual Studio Code

Med Azure Functions finns det många alternativ att överväga, inklusive värdalternativ, språkalternativ och redigeringsalternativ som att använda Azure-portalen, Visual Studio Code, Visual Studio och så vidare. I den här självstudien använder vi C# och Visual Studio Code. För att kunna slutföra den här självstudien måste först slutföra självstudien snabbstart: skapa ett Azure Functions-projekt med hjälp av Visual Studio Code. Anteckna namnet som du har angett för din funktionsapp i steget Publicera projektet på Azure.

Viktigt

Slutför inte avsnittet Rensa resurser. Du måste hålla alla dina resurser på plats för att bygga vidare på det du redan har gjort.

Skydda anrop till Azure Functions med hjälp av AAD

  1. Leta reda på din funktionsapp i Azure-portalen. Välj namnet på din funktionsapp i listan.

    Lista över funktionsappar i Azure-portalen

  2. I det övre avsnittet växlar du till fliken Plattformsfunktioner

    Fliken Plattformsfunktioner är markerad på bladet Funktionsapp i Azure-portalen

  3. Sedan väljer du länken Autentisering/auktorisering i gruppen Nätverk.

    Länken Autentisering/auktorisering är markerad på funktionsappsbladet i Azure-portalen

  4. På bladet Autentisering/auktorisering aktiverar du App Service-autentisering genom att ändra App Service-autentisering-växlingsknappen till .

    Alternativet På för växlingsknappen App Service-autentisering är markerat i funktionsappens autentiseringsinställningar i Azure-portalen

  5. I listrutan Åtgärd att vidta när en begäran inte har autentiserats ändrar du värdet till Logga in med Azure Active Directory. Den här inställningen säkerställer att anonyma begäranden till API:et inte tillåts.

    Alternativet "Logga in med Azure Active Directory" är markerat i listrutan "Åtgärder att vidta" när begäran inte har autentiserats på bladet funktionsappens autentiseringsinställningar

  6. Sedan i listan över autentiseringsproviders väljer du Azure Active Directory.

    'Azure Active Directory' markeras i listan över autentiseringsproviders för en funktionsapp

  7. På bladet Azure Active Directory-inställningar ställer du in alternativet Hanteringsläge till Express. Ställ in det andra alternativet för HanteringslägeSkapa ny AD-app.

    Azure Active Directory Bladet Azure Active Directory-inställningar öppnas för en funktionsapp i Azure-portalen

    Viktigt

    Innan du fortsätter bör du anteckna värdet i fältet Skapa app och kopiera/klistra in det någonstans för senare bruk. Det här värdet representerar namnet på det AAD-program som du ska använda för att skydda API:et. Du kommer att använda det här värdet senare när du konfigurerar ditt anpassade anslutningsprogram.

  8. Bekräfta valet genom att klicka på knappen OK.

  9. Gå tillbaka till bladet autentisering/auktorisering och välj Spara för att uppdatera funktionsappsinställningar för autentisering och auktorisering.

    Knappen Spara är markerad på bladet Autentisering/auktorisering för en funktionsapp i Azure-portalen

  10. När du har sparat väljer du Azure Active Directory i avsnittet autentiseringsprovider.

    Azure Active Directory-leverantör

  11. Välj Azure AD-app och kopiera sedan värdet klient-ID och klistra in det någonstans för senare användning.

    Sidan Klient-ID

  12. Bekräfta att API:et är korrekt skyddat genom att öppna ett nytt webbläsarfönster i privat läge och navigera till API:et. Du hittar URL:en för din funktionsapp i avsnittet Översikt på bladet Funktionsapp. Om autentiseringsinställningarna har tillämpats korrekt bör du omdirigeras till inloggningssidan för Azure AD.

    Azure AD inloggningssida

Skapa ett anpassat anslutningsprogram för din Azure-funktion

Om du vill skapa en anpassad anslutning som använder AAD-autentisering måste du skapa en AAD-appregistrering för att skydda det anpassade anslutningsprogrammet och få delegerad åtkomst till Azure Functions som skyddas av AAD-appens registrering som skapats i avsnittet Protect calls to Azure Functions using AAD (Skydda anrop till Azure Functions med hjälp av AAD).

Skapa en appregistrering för ditt anpassade anslutningsprogram i AAD

Börja med att skapa ett AAD-program för ditt anpassade anslutningsprogram. Detta krävs för att ge det anpassade anslutningsprogrammet behörighet att anropa dina Azure Functions.

  1. Gå till sidan Appregistreringar i Azure-portalen.

    Azure AD-registreringssidan i Azure-portalen

  2. I listan med registrerade appar väljer du Ny registrering.

    Knappen Lägg till

  3. Ange ett namn för ditt program, välj de alternativ som visas i skärmbilden nedan och välj sedan knappen Registrera.

    Registrera ett programformulär

    Anteckning

    Om du vill veta mer om programregistreringsalternativ se Snabbstart: registrera ett program med Microsoft identitetsplattform.

  4. När du har valt knappen Registrera visas API-behörigheter för appregistreringen.

    Skärmen API-behörigheter

  5. Välj knappen Lägg till behörighet.

    Knappen Lägg till en behörighet

  6. Välj fliken API:er som min organisation använder och sök sedan efter appens namn från steg 7 i avsnittet Protect calls to Azure Functions using AAD (Skydda anrop till Azure Functions med hjälp av AAD). När du hittar det klickar du på namnet på appen.

    Viktigt

    Ditt appnamn skiljer sig från det som finns i skärmbilden.

    Azure Function-appnamn

  7. Markera kryssrutan user_impersonation och klicka på knappen Lägg till behörigheter.

    Lägg till user_impersonation-behörighet

    Anteckning

    Läs mer om behörigheter i Permissions and consent in the Microsoft identity platform endpoint (Behörigheter och medgivande i slutpunkten för Microsoft Identity Platform).

  8. Välj Certifikat och hemligheter och välj sedan knappen Ny klienthemlighet.

    Certifikat och hemligheter

  9. Ange en beskrivning för din hemlighet, välj en förfalloperiod och välj sedan Lägg till.

    Lägg till en klienthemlighet

  10. Din nya hemlighet visas. Kopiera och klistra in värdet någonstans. Du behöver det senare.

    Skapa en nyckel

  11. Välj Översikt och kopiera och klistra sedan in värdet för Program-ID (klient) någonstans. Du behöver det senare.

    Skapa en nyckel

Se till att sidan är öppen så att du kan komma tillbaka till den. Det finns ytterligare ett steg i Azure-portalen, men du ska först skapa en egen koppling.

Skapa ett anpassat anslutningsprogram

Nu när AAD-appen har konfigurerats skapar du den anpassade kopplingen. Om du vill skapa en anpassad koppling måste du beskriva det API du vill ansluta så att kopplingen förstår API:ets åtgärder och datastrukturer. När du skapar Azure Functions för anpassade anslutningsprogram kommer du ofta att skapa ditt anslutningsprogram upprepade gånger genom att upprepa följande steg:

  1. Skapa, testa och felsöka Azure-funktionen lokalt med Visual Studio Code.
  2. Distribuera funktionsappen till Azure.
  3. Uppdatera konfigurationen för anpassade anslutningsprogram så att den återspeglar ändringar i din funktionsapp.

Postman är ett populärt verktyg för att testa webb-API:er. Det används ofta för att testa Azure Functions. I det här avsnittet skapar du ett anpassat anslutningsprogram från en Postman-samling. Postman-samlingen kommer att tillhandahållas åt dig.

Anteckning

Se avsnittet Skapa en Postman-samling för en anpassad anslutningsapp för att lära dig hur du skapar egna. Att använda Postman för att skapa ett anpassat anslutningsprogram är bara ett alternativ. Se avsnittet Beskriv API och definiera anpassad anslutningsapp för att lära dig om andra alternativ.

  1. I en ny webbläsare, logga in på Power Apps eller Power Automate.

  2. Kopiera koden nedan. Använd din textredigerare för att skapa en ny fil och klistra in koden som filens innehåll. Spara filen. Du kan ge det namnet som du föredrar, men kom ihåg namnet (t. ex. tutorial-custom-connector.json). Du måste använda den här filen i nästa steg.

    {
        "id": "c4b5deba-f97b-47d0-82a5-a2b32561fb01",
        "name": "Custom Connector",
        "description": null,
        "auth": null,
        "events": null,
        "variables": [],
        "order": [
            "374365a1-ede5-4ead-8068-d878085dad26"
        ],
        "folders_order": [],
        "protocolProfileBehavior": {},
        "folders": [],
        "requests": [
            {
                "id": "374365a1-ede5-4ead-8068-d878085dad26",
                "name": "Hello",
                "url": "http://localhost:7071/api/Hello",
                "description": "",
                "data": [],
                "dataOptions": {
                    "raw": {
                        "language": "json"
                    }
                },
                "dataMode": "raw",
                "headerData": [
                    {
                        "key": "Content-Type",
                        "name": "Content-Type",
                        "value": "application/json",
                        "description": "",
                        "type": "text"
                    }
                ],
                "method": "POST",
                "pathVariableData": [],
                "queryParams": [],
                "auth": null,
                "events": null,
                "folder": null,
                "responses": [
                    {
                        "id": "46baba58-7b85-4a2e-8c7d-303080e08ba9",
                        "name": "Hello",
                        "status": null,
                        "mime": null,
                        "language": "plain",
                        "text": "Hello, Marc. This HTTP triggered function executed successfully.",
                        "responseCode": {
                            "code": 200,
                            "name": "OK"
                        },
                        "requestObject": {
                            "data": [],
                            "dataMode": "raw",
                            "dataOptions": {
                                "raw": {
                                    "language": "json"
                                }
                            },
                            "headerData": [
                                {
                                    "key": "Content-Type",
                                    "name": "Content-Type",
                                    "value": "application/json",
                                    "description": "",
                                    "type": "text"
                                }
                            ],
                            "method": "POST",
                            "pathVariableData": [],
                            "queryParams": [],
                            "url": "http://localhost:7071/api/Hello",
                            "rawModeData": "{\n\t\"name\": \"Marc\"\n}"
                        },
                        "headers": [
                            {
                                "key": "Date",
                                "value": "Wed, 04 Mar 2020 22:32:06 GMT"
                            },
                            {
                                "key": "Content-Type",
                                "value": "text/plain; charset=utf-8"
                            },
                            {
                                "key": "Server",
                                "value": "Kestrel"
                            },
                            {
                                "key": "Transfer-Encoding",
                                "value": "chunked"
                            }
                        ],
                        "cookies": null,
                        "request": "374365a1-ede5-4ead-8068-d878085dad26",
                        "collection": "c4b5deba-f97b-47d0-82a5-a2b32561fb01"
                    }
                ],
                "rawModeData": "{\n\t\"name\": \"Marc\"\n}",
                "headers": "Content-Type: application/json\n",
                "pathVariables": {}
            }
        ]
    }
    
  3. I navigeringsfönstret väljer du Data för att anpassa den, och sedan väljer du Anpassat anslutningsprogram.

    Anpassade anslutningsprogram i navigeringsfönstret

  4. I det övre högra hörnet väljer du Ny anpassad anslutning och därefter Importera en Postman-samling.

    Importera en Postman-samling

  5. Ange ett namn för anslutningen, välj knappen Importera, bläddra till filen som du skapade i steg 2och välj Fortsätt.

    Namn och filplats

  6. Sidan Allmänt öppnas. Ändra Schema till HTTPS, ersätt Värd-värdet med domänen för din funktionsapp och gå sedan till sidan Säkerhet.

    Inställningar för allmän information

  7. På sidan Säkerhet anger du AAD-information för appen.

    OAuth-inställningar

    När du har angett säkerhetsinformationen väljer du knappen Uppdatera anslutningsprogrammet för att skapa det anpassade anslutningsprogrammet.

  8. På sidan säkerhet fylls fältet omdirigerings-URL nu i. Kopiera URL:en så att du kan använda den i nästa avsnitt i självstudien.

    Anteckning

    Du kan behöva rulla ned för att se omdirigeringswebbadressen.

    Resurs-URL

  9. Gå tillbaka till den appregistrering som du skapade i Skapa en app-registrering för ditt anpassade anslutningsprogram i AAD i en annan webbläsarflik. Kontrollera att du befinner dig i avsnittet Översikt och välj Lägg till en omdirigerings-URI.

    Resurs-URL

  10. Välj knappen Lägg till en plattform.

    Knappen Lägg till en plattform

  11. I fönstret Konfigurera plattformar väljer du Webb.

    Konfigurera plattformar

  12. I fönstret Konfigurera webbben klistrar du in värdet för omdirigerings-URL:en från steg 7 och väljer sedan knappen Konfigurera.

    Konfigurera plattformar

  13. Gå tillbaka till den webbläsarflik som innehåller konfigurationen för anpassat anslutningsprogram. Du bör fortfarande vara på sidan Säkerhet i guiden.

  14. Gå vidare till sidan Definition i guiden genom att välja ordet Definition och granska.

    Konfigurera plattformar

    Anteckning

    Definitionen kommer från Postman-samlingen som du har importerat. Om du har ändrat någon av koden i Snabbstart: Skapa ett Azure Functions-projekt med självstudier Visual Studio Code med hjälp av importfil kanske inte matchar formen på ditt API. Du måste antingen skapa en ny Postman-samling eller manuellt justera åtgärden i det anpassade anslutningsprogrammet. Om du vill skapa en ny Postman-samling använder du länkarna som delades tidigare i den här självstudien här. Om du vill justera åtgärden manuellt kan du läsa avsnittet Skapa definitionen för anslutningsappen i självstudiekursen Skapa en anslutningsapp från grunden.

Testa anslutningsprogrammet

Nu när du har skapat kopplingen kan du testa den och kontrollera att den fungerar. Testning är för närvarande endast tillgänglig i Power Automate och Power Apps.

  1. Gå vidare till testsidan i guiden genom att välja ordet Test.

    Testsida

  2. Välj Ny anslutning på sidan Test.

    Ny anslutning

  3. Välj knappen Skapa och logga sedan in med din AAD-användare.

    Ny anslutning

  4. Gå tillbaka till testsidan.

    • I Power Automate återgår du till sidan Test. Välj uppdateringsikonen för att kontrollera att anslutningsinformationen är uppdaterad.

      Uppdatera anslutning

    • I Power Apps kommer du till listan över anslutningar som är tillgängliga i den aktuella miljön. I navigeringsfönstret väljer du Anpassat anslutningsprogram. Hitta ditt anpassade anslutningsprogram genom att välja ikonen Redigera.

      Anpassade anslutningsprogram i navigeringsfönstret

  5. Gå tillbaka till testsidan, ange ett värde för fältet namn och välj Teståtgärd.

    Teståtgärd

  6. Ta en titt på förfrågan och svaret.

    Förfrågan om anslutningsprogram

    Förfrågan om anslutningsprogram

Nästa steg

Nu när du skapat en anpassad koppling och definierat dess beteenden kan använda du anslutningen.