Oprette en brugerdefineret connector til Azure Functions, der er beskyttet af Azure AD
Et nøgleprincip i forbindelse med Power Apps-connectorer, der bruger Azure Active Directory (AAD) til godkendelse, er, at de ikke giver brugerne adgang til de data, som brugeren ikke allerede har adgang til. Det skyldes, at API-kaldet til den AAD-beskyttede tjeneste udføres under den brugeridentitet, der bruges til at logge på connectoren. Derfor har destinationstjenesten ansvaret for at håndhæve det, der tillades for den godkendte bruger.
I dette selvstudium kan du se, hvordan du bruger Azure Functions til at oprette en REST-API, aktivere AAD-godkendelse og derefter gøre den tilgængelig for Power Apps som en brugerdefineret connector.
Oprette Azure Functions ved hjælp af Visual Studio Code
Der er mange muligheder, der skal overvejes, i forbindelse med Azure Functions, herunder værtsmuligheder, sprogvalg og godkendelsesmuligheder, f.eks. brug af Azure-portal, Visual Studio Code, Visual Studio osv. I dette selvstudium bruger vi C# og Visual Studio Code. Hvis du vil fuldføre dette selvstudium, skal du først fuldføre selvstudiet Hurtig start: Opret et Azure Functions-projekt ved hjælp af Visual Studio Code. Notér det navn, du angav til funktionsappen i trinnet Publicer projektet til Azure.
Vigtigt
Spring over afsnittet Ryd op i ressourcer. Du skal sørge for, at alle dine ressourcer er på plads, så du kan bygge oven på det, du allerede har udført.
Beskyt opkald til Azure Functions ved hjælp af AAD
Find din funktionsapp i Azure-portalen. Vælg navnet på din funktionsapp på listen.

Skift til fanen Platformsfunktioner i den øverste sektion.

Vælg derefter linket Godkendelse/autorisation i gruppen Netværk.

Aktivér App Service-godkendelse på bladet Godkendelse/autorisation ved at indstille til/fra-knappen App Service-godkendelse til Til.

Vælg Log på med Azure Active Directory på rullelisten Handling, der skal tages, når anmodningen ikke er godkendt. Denne indstilling sikrer, at anonyme anmodninger til API'en ikke er tilladt.

Vælg derefter Azure Active Directory på listen over godkendelsesudbydere.

Angiv indstillingen Administrationstilstand til Express på bladet Azure Active Directory-indstillinger. Angiv den anden indstilling for Administrationstilstand til Opret ny AD-app.

Vigtigt
Notér værdien i feltet Opret app, før du fortsætter, og kopiér og indsæt den et andet sted til senere brug. Denne værdi repræsenterer navnet på det AAD-program, som du skal bruge til at sikre API'en. Du skal bruge denne værdi senere, når du konfigurerer din brugerdefinerede connector.
Vælg knappen OK for at bekræfte valget.
Vælg Gem på bladet Godkendelse/autorisation for at opdatere funktionsappens godkendelses- og autorisationsindstillinger.

Når du har gemt, skal du vælge Azure Active Directory i sektionen Godkendelsesudbydere.

Vælg Azure AD-appen, og kopiér derefter værdien af Klient-id, og indsæt den et sted til senere brug.

Kontrollér, at API'en er sikret korrekt, ved at åbne et nyt browservindue i privat tilstand og navigere til API'en. Du finder URL-adressen til din funktionsapp i afsnittet Oversigt på bladet Funktionsapp. Hvis godkendelsesindstillingerne er anvendt korrekt, omdirigeres du til siden Azure AD-logon.

Opret en brugerdefineret connector til din Azure-funktion
Hvis du vil oprette en brugerdefineret connector, der bruger AAD-godkendelse, skal du oprette en AAD-appregistrering for at sikre den brugerdefinerede connector og få delegeret adgang til Azure Functions, der er beskyttet af den AAD-appregistrering, som blev oprettet i afsnittet Beskyt opkald til Azure Functions ved hjælp af AAD.
Opret en appregistrering for din brugerdefinerede connector i AAD
Først skal du oprette et AAD-program til din brugerdefinerede connector. Dette er påkrævet for at tildele tilladelsen Brugerdefineret connector, så Azure Functions kan kaldes.
Gå til siden Appregistreringer i Azure-portalen.

Vælg Ny registrering på listen over registrerede programmer.

Indtast et navn til programmet, vælg de indstillinger, der vises i skærmbilledet nedenfor, og vælg derefter knappen Registrer.

Bemærk
Du kan få mere at vide om indstillinger for registrering af apps under Hurtig start: Registrer et program med Microsoft-identitetsplatform.
Når du har valgt knappen Registrer, får du vist API-tilladelser for din Appregistrering.

Vælg knappen Tilføj en tilladelse.

Vælg fanen API'er, min organisation bruger, og søg derefter efter appnavnet fra trin 7 i afsnittet Beskyt opkald til Azure Functions ved hjælp af AAD. Når du finder appen, skal du klikke på dens navn.
Vigtigt
Appnavnet er forskelligt fra det, der vises i skærmbilledet.

Markér afkrydsningsfeltet user_impersonation, og klik på knappen Tilføj tilladelser.

Bemærk
Hvis du vil vide mere om tilladelser, skal du se Tilladelser og samtykke i slutpunktet for Microsoft-identitetsplatform.
Vælg Certifikater og hemmeligheder, og vælg derefter knappen Ny klienthemmelighed.

Angiv en beskrivelse af hemmeligheden, vælg en udløbsperiode, og vælg derefter Tilføj.

Den nye hemmelighed vises. Kopiér og indsæt værdien et andet sted. Du skal bruge den senere.

Vælg Oversigt, og kopiér og indsæt derefter værdien af Program-id (klient) et andet sted. Du skal bruge den senere.

Hold denne side åben, så du kan vende tilbage til den. Der er ét trin mere i Azure-portalen, men du skal først oprette en brugerdefineret connector.
Oprette en brugerdefineret connector
Nu hvor AAD-programmet er konfigureret, skal du oprette den brugerdefinerede connector. Når du skal oprette en brugerdefineret connector, skal du beskrive den API, du vil oprette forbindelse til, så connectoren forstår API'ens handlinger og datastrukturer. Når du opretter Azure Functions til brugerdefinerede connectorer, kan du ofte oprette din connector igen ved at gentage følgende trin:
- Opret, test og foretag fejlfinding af Azure-funktionen lokalt med Visual Studio Code.
- Udrul din funktionsapp til Azure.
- Opdater konfigurationen af den brugerdefinerede connector, så den afspejler ændringer i funktionsappen.
Postman er et populært værktøj til test af web-API'er. Det bruges ofte til test af Azure Functions. I dette emne skal du oprette en brugerdefineret connector fra en Postman-samling. Du får adgang til en Postman-samling.
Bemærk
Se emnet Opret en Postman-samling for en brugerdefineret connector for at få mere at vide om, hvordan du opretter din egen. Oprettelse af en brugerdefineret connector ved hjælp af Postman er kun én af flere muligheder. Se emnet Beskriv API'en, og definer brugerdefineret connector for at få mere at vide om andre muligheder.
Log under en ny browserfane på Power Apps eller Power Automate.
Kopiér koden nedenfor. Brug din foretrukne teksteditor til at oprette en ny fil, og indsæt koden som filens indhold. Gem filen. Du kan kalde den det, du foretrækker, men husk navnet (f.eks.: selvstudium-brugerdefineret-connector.json). Du skal bruge denne fil i de næste trin.
{ "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": {} } ] }Vælg Data i navigationsruden for at udvide den, og vælg derefter Brugerdefinerede connectorer.

Vælg Ny brugerdefineret connector øverst til højre og derefter Importér en Postman-samling.

Angiv et navn til connectoren, Vælg knappen Importér, gå til den fil, du oprettede i trin 2, og vælg derefter Fortsæt.

Siden Generelt åbnes. Rediger angivelsen i Skema til HTTPS, erstat værdien af Vært med domænet for din funktionsapp, og fortsæt derefter til siden Sikkerhed i guiden.

Angiv AAD-oplysninger for programmet på siden Sikkerhed.
Angiv den værdi for Program-id (klient) i Klient-id, du kopierede i trin 11 i Opret en appregistrering for din brugerdefinerede connector i AAD.
Angiv den hemmelige værdi i Klienthemmelighed, du kopierede i trin 11, i Opret en appregistrering for din brugerdefinerede connector i AAD.
Indtast URL-adressen til din funktionsapp i Ressourcens URL-adresse. Den har formatet
https://[function-app-name].azurewebsites.net.

Når du har indtastet sikkerhedsoplysninger, skal du vælge knappen Opdater connector for at oprette den brugerdefinerede connector.
Feltet Omdiriger URL-adresse på siden Sikkerhed er nu udfyldt. Kopiér denne URL-adresse, så du kan bruge den i det næste afsnit i dette selvstudium.
Bemærk
Du skal muligvis rulle ned for at få vist URL-adressen til omdirigering.

Vend tilbage til den appregistrering, du oprettede i afsnittet Opret en appregistrering for din brugerdefinerede connector i AAD, under en anden browserfane. Kontrollér, at du befinder dig i sektionen Oversigt, og vælg derefter Tilføj en URI til omdirigering.

Vælg knappen Tilføj en platform.

Vælg Web i ruden Konfigurer platforme.

Indsæt værdien for URL-adresse til omdirigering fra trin 7 i ruden Konfigurer web, og vælg derefter knappen Konfigurer.

Vend tilbage til den browserfane, der indeholder konfigurationen af den brugerdefinerede connector. Du skal stadig være på siden Sikkerhed i guiden.
Gå videre til siden Definition i guiden ved at vælge ordet Definitionen, og gennemse den.

Bemærk
Definitionen kommer fra den Postman-samling, du importerede. Hvis du har ændret en af koderne i selvstudiet Hurtig start: Opret et Azure Functions-projekt ved hjælp af Visual Studio Code, matcher importfilen muligvis ikke din API-form. Du skal enten oprette en ny Postman-samling eller manuelt justere handlingen i den brugerdefinerede connector. Hvis du vil oprette en ny Postman-samling, skal du bruge de links, der blev delt tidligere i dette selvstudium her. Hvis du vil justere handlingen manuelt, kan du gennemse afsnittet Opret connectordefinitionen i selvstudiet Opret en brugerdefineret connector fra bunden.
Test connectoren
Nu, hvor du har oprettet connectoren, kan du teste den for at sikre dig, at den fungerer korrekt. Test er i øjeblikket kun tilgængelig i Power Automate og Power Apps.
Gå videre til siden Test i guiden ved at vælge ordet Test.

Vælg Ny forbindelse på siden Test.

Vælg knappen Opret, og log derefter på med din AAD-bruger.

Gå tilbage til siden Test.
I Power Automate bliver du ført tilbage til siden Test. Vælg opdateringsikonet for at sikre, at forbindelsesoplysningerne er opdateret.

I Power Apps bliver du ført til listen over tilgængelige forbindelser i det aktuelle miljø. Vælg Brugerdefinerede connectorer i navigationsruden. Find din brugerdefinerede connector, og vælg redigeringsikonet.

Gå tilbage til siden Test, angiv en værdi for feltet Navn, og vælg derefter Test handling.

Gennemse Anmodning og Svar.


Næste trin
Nu, hvor du har oprettet en brugerdefineret connector og defineret dens funktionsmåde, kan du bruge connectoren.