Een aangepaste verificatie-extensie maken voor het starten van de kenmerkverzameling en het verzenden van gebeurtenissen (preview)
Van toepassing op: Externe tenants van werknemers (meer informatie)
In dit artikel wordt beschreven hoe u de gebruikersaanmeldingservaring in Microsoft Entra Externe ID voor klanten kunt uitbreiden. In gebruikersstromen voor aanmelding van klanten kunnen gebeurtenislisteners worden gebruikt om het proces voor het verzamelen van kenmerken uit te breiden vóór het verzamelen van kenmerken en op het moment van het indienen van kenmerken:
De gebeurtenis OnAttributeCollectionStart vindt plaats aan het begin van de stap voor het verzamelen van kenmerken, voordat de pagina voor het verzamelen van kenmerken wordt weergegeven. U kunt acties toevoegen, zoals het vooraf doorvoeren van waarden en het weergeven van een blokkeringsfout.
Tip
Als u deze functie wilt uitproberen, gaat u naar de demo Woodgrove Boodschappen en start u de use case 'Vooraf ingevulde registratiekenmerken'.
De gebeurtenis OnAttributeCollectionSubmit vindt plaats nadat de gebruiker kenmerken invoert en verzendt. U kunt acties toevoegen, zoals het valideren of wijzigen van de vermeldingen van de gebruiker.
Tip
Als u deze functie wilt uitproberen, gaat u naar de demo Woodgrove Boodschappen en start u de use-case 'Registratiekenmerken valideren' of 'Voorkomen dat een gebruiker doorgaat met het registratieproces'.
Naast het maken van een aangepaste verificatie-extensie voor het starten van de kenmerkverzameling en het verzenden van gebeurtenissen, moet u een REST API maken die de werkstroomacties definieert die voor elke gebeurtenis moeten worden uitgevoerd. U kunt elke programmeertaal, framework en hostingomgeving gebruiken om uw REST API te maken en te hosten. In dit artikel wordt een snelle manier beschreven om aan de slag te gaan met een C#-azure-functie. Met Azure Functions voert u uw code uit in een serverloze omgeving zonder dat u eerst een virtuele machine (VM) hoeft te maken of een webtoepassing hoeft te publiceren.
Vereisten
- Als u Azure-services, waaronder Azure Functions, wilt gebruiken, hebt u een Azure-abonnement nodig. Als u geen bestaand Azure-account hebt, kunt u zich registreren voor een gratis proefversie of de voordelen van uw Visual Studio-abonnement gebruiken wanneer u een account maakt.
- Een gebruikersstroom voor registreren en aanmelden.
Stap 1: Een REST API voor aangepaste verificatie-extensies maken (Azure Function-app)
Tip
Stappen in dit artikel kunnen enigszins variëren op basis van de portal waaruit u begint.
In deze stap maakt u een HTTP-triggerfunctie-API met behulp van Azure Functions. De functie-API is de bron van de bedrijfslogica voor uw gebruikersstromen. Nadat u de triggerfunctie hebt gemaakt, kunt u deze configureren voor een van de volgende gebeurtenissen:
Meld u aan bij Azure Portal met uw beheerdersaccount.
Selecteer vanuit het menu van Azure Portal of op de startpagina de optie Een resource maken.
Zoek en selecteer Functie-app en selecteer Maken.
Op de pagina Basics gebruikt u de instellingen voor de functie-app zoals in de volgende tabel wordt vermeld:
Instelling Voorgestelde waarde Beschrijving Abonnement Uw abonnement Het abonnement waarin de nieuwe functie-app wordt gemaakt. Resourcegroep myResourceGroup Selecteer en de bestaande resourcegroep of geef een naam op voor de nieuwe resourcegroep waarin u uw functie-app gaat maken. Naam van de functie-app Wereldwijd unieke naam Een naam die de nieuwe functie-app identificeert. Geldige tekens zijn a-z
(niet hoofdlettergevoelig),0-9
en-
.Publiceren Code Optie voor het publiceren van codebestanden of een Docker-container. Voor deze zelfstudie selecteert u Code. Runtimestack .NET Uw favoriete programmeertaal. Voor deze zelfstudie selecteert u .NET. Versie 6 (LTS) In-process Versie van de .NET-runtime. In-process geeft aan dat u functies in de portal kunt maken en wijzigen. Dit wordt aanbevolen voor deze handleiding Regio Voorkeursregio Selecteer een regio in de buurt of in de buurt van andere services waartoe uw functies toegang hebben. Besturingssysteem Windows Het besturingssysteem is vooraf geselecteerd op basis van uw runtimestackselectie. Plantype Verbruik (serverloos) Hostingabonnement dat definieert hoe resources worden toegewezen aan uw functie-app. Selecteer Beoordelen en maken om de app-configuratieselecties te controleren en selecteer vervolgens Maken. De implementatie duurt een paar minuten.
Nadat de resource is geïmplementeerd, selecteert u Ga naar de resource om uw nieuwe functie-app weer te geven.
1.1 HTTP-triggerfuncties maken
Nu u de Azure Function-app hebt gemaakt, maakt u HTTP-triggerfuncties voor de acties die u wilt aanroepen met een HTTP-aanvraag. HTTP-triggers worden verwezen en aangeroepen door de aangepaste verificatie-extensie van Microsoft Entra.
- Selecteer op de pagina Overzicht van uw functie-app het deelvenster Functies en selecteer Functie maken onder Maken in Azure Portal.
- Laat in het venster Functie maken de eigenschap Ontwikkelomgeving staan als Ontwikkelen in de portal. Selecteer onder Sjabloon de HTTP-trigger.
- Voer onder Sjabloondetails CustomAuthenticationExtensionsAPI in voor de eigenschap Nieuwe functie.
- Selecteer Functie voor het autorisatieniveau.
- Selecteer Maken.
1.2 Configureer de HTTP-trigger voor OnAttributeCollectionStart
- Selecteer Code + Test in het menu.
- Selecteer het onderstaande tabblad voor het scenario dat u wilt implementeren: Doorgaan, Blokkeren of SetPrefillValues. Vervang de code door de opgegeven codefragmenten.
- Nadat u de code hebt vervangen, selecteert u in het bovenste menu Functie-URL ophalen en kopieert u de URL. U gebruikt deze URL in stap 2: een aangepaste verificatie-extensie maken en registreren voor de doel-URL.
Gebruik deze HTTP-trigger om de gebruiker in staat te stellen door te gaan met de registratiestroom als er geen verdere actie nodig is.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionStart.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionStartResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
1.3 De HTTP-trigger voor OnAttributeCollectionSubmit configureren
- Selecteer Code + Test in het menu.
- Selecteer het onderstaande tabblad voor het scenario dat u wilt implementeren: Doorgaan, Blokkeren, Waarden wijzigen of Validatiefout. Vervang de code door de opgegeven codefragmenten.
- Nadat u de code hebt vervangen, selecteert u in het bovenste menu Functie-URL ophalen en kopieert u de URL. U gebruikt deze URL in stap 2: een aangepaste verificatie-extensie maken en registreren voor de doel-URL.
Gebruik deze HTTP-trigger om de gebruiker in staat te stellen door te gaan met de registratiestroom als er geen verdere actie nodig is.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionSubmit.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
Stap 2: Een aangepaste verificatie-extensie maken en registreren
In deze stap registreert u een aangepaste verificatie-extensie die wordt gebruikt door Microsoft Entra ID om uw Azure-functie aan te roepen. De aangepaste verificatie-extensie bevat informatie over uw REST API-eindpunt, het starten en verzenden van acties die worden geparseerd vanuit uw REST API en hoe u zich kunt verifiëren bij uw REST API.
Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een toepassingsbeheerder en verificatiebeheerder.
Blader naar >aangepaste verificatie-extensies voor externe identiteiten.>
Selecteer Een aangepaste extensie maken.
Selecteer in Basics de gebeurtenis AttributeCollectionStart of de gebeurtenis AttributeCollectionSubmit en selecteer vervolgens Volgende. Zorg ervoor dat dit overeenkomt met de configuratie in de vorige stap.
Vul in Endpoint Configuration de volgende eigenschappen in:
- Naam : een naam voor uw aangepaste verificatie-extensie. Bijvoorbeeld bij gebeurtenis voor kenmerkverzameling.
- Doel-URL : de
{Function_Url}
URL van uw Azure-functie. - Beschrijving : een beschrijving voor uw aangepaste verificatie-extensies.
Selecteer Volgende.
Selecteer in API-verificatie de optie Nieuwe app-registratie maken om een app-registratie te maken die uw functie-app vertegenwoordigt.
Geef de app een naam, bijvoorbeeld azure Functions-verificatie-gebeurtenissen-API.
Selecteer Volgende.
Selecteer Maken, waarmee de aangepaste verificatie-extensie en de bijbehorende toepassingsregistratie worden gemaakt.
2.2 Beheerderstoestemming verlenen
Nadat uw aangepaste verificatie-extensie is gemaakt, verleent u toepassingstoestemming aan de geregistreerde app, zodat de aangepaste verificatie-extensie kan worden geverifieerd bij uw API.
- Blader naar >extensies>voor aangepaste identiteiten voor aangepaste verificatie (preview).
- Selecteer uw aangepaste verificatie-extensie in de lijst.
- Selecteer op het tabblad Overzicht de knop Machtigingen verlenen om beheerders toestemming te geven voor de geregistreerde app. De aangepaste verificatie-extensie gebruikt
client_credentials
voor verificatie bij de Azure Function-app met behulp van deReceive custom authentication extension HTTP requests
machtiging. Selecteer Accepteren.
Stap 3: De aangepaste verificatie-extensie toevoegen aan een gebruikersstroom
U kunt nu de aangepaste verificatie-extensie koppelen aan een of meer gebruikersstromen.
Notitie
Als u een gebruikersstroom wilt maken, volgt u de stappen in Een registratie- en aanmeldingsgebruikersstroom maken voor klanten.
3.1 De aangepaste verificatie-extensie toevoegen aan een bestaande gebruikersstroom
Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een toepassingsbeheerder en verificatiebeheerder
Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw externe tenant.
Blader naar gebruikersstromen> voor externe identiteiten.>
Selecteer de gebruikersstroom uit de lijst.
Selecteer Aangepaste verificatie-extensies.
Op de pagina Aangepaste verificatie-extensies kunt u uw aangepaste verificatie-extensie koppelen aan twee verschillende stappen in uw gebruikersstroom:
- Voordat u gegevens van de gebruiker verzamelt, is gekoppeld aan de gebeurtenis OnAttributeCollectionStart . Selecteer het potlood bewerken. Alleen de aangepaste extensies die zijn geconfigureerd voor de onAttributeCollectionStart-gebeurtenis worden weergegeven. Selecteer de toepassing die u hebt geconfigureerd voor de begingebeurtenis van de kenmerkverzameling en kies vervolgens Selecteren.
- Wanneer een gebruiker zijn gegevens indient, is gekoppeld aan de gebeurtenis OnAttributeCollectionSubmit . alleen de aangepaste extensies die zijn geconfigureerd voor de gebeurtenis OnAttributeCollectionSubmit worden weergegeven. Selecteer de toepassing die u hebt geconfigureerd voor de gebeurtenis voor het verzenden van de kenmerkverzameling en kies vervolgens Selecteren.
Zorg ervoor dat de toepassingen die naast beide kenmerkverzamelingsstappen worden vermeld, juist zijn.
Selecteer het pictogram Opslaan.
Stap 4: De toepassing testen
Als u een token wilt ophalen en de aangepaste verificatie-extensie wilt testen, kunt u de https://jwt.ms app gebruiken. Het is een webtoepassing van Microsoft die de gedecodeerde inhoud van een token weergeeft (de inhoud van het token verlaat uw browser nooit).
Volg deze stappen om de jwt.ms-webtoepassing te registreren:
4.1 Registreer de jwt.ms-webtoepassing
- Meld u als toepassingsbeheerder aan bij het Microsoft Entra-beheercentrum.
- Blader naar toepassingsregistraties voor identiteitstoepassingen>>.
- Selecteer Nieuwe registratie.
- Voer een naam in voor de toepassing. Bijvoorbeeld mijn testtoepassing.
- Onder Ondersteunde accounttypen selecteert u Enkel accounts in deze organisatieadreslijst.
- Selecteer web in de vervolgkeuzelijst Een platform selecteren in de omleidings-URI en voer
https://jwt.ms
het tekstvak URL in. - Selecteer Registreren om de app-registratie te voltooien.
4.2 De toepassings-id ophalen
Kopieer in de app-registratie onder Overzicht de toepassings-id (client). De app-id wordt in latere stappen aangeduid als de <client_id>
id. In Microsoft Graph wordt ernaar verwezen door de eigenschap appId .
4.3 Impliciete stroom inschakelen
De jwt.ms testtoepassing maakt gebruik van de impliciete stroom. Schakel impliciete stroom in de registratie van mijn testtoepassing in met de volgende stappen.
Belangrijk
Microsoft raadt aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die wordt gebruikt voor het testen in deze procedure vereist een zeer hoge mate van vertrouwen in de toepassing en brengt risico's met zich mee die niet aanwezig zijn in andere stromen. Deze benadering mag niet worden gebruikt voor het verifiëren van gebruikers voor uw productie-apps (meer informatie).
- Selecteer Verificatie onder Beheren.
- Schakel onder Impliciete toekenning en hybride stromen het selectievakje ID-tokens (gebruikt voor impliciete en hybride stromen) in.
- Selecteer Opslaan.
Stap 5: Uw Azure-functie beveiligen
De aangepaste verificatie-extensie van Microsoft Entra maakt gebruik van server-naar-serverstroom om een toegangstoken te verkrijgen dat in de HTTP-header naar uw Azure-functie Authorization
wordt verzonden. Wanneer u uw functie publiceert naar Azure, met name in een productieomgeving, moet u het token valideren dat is verzonden in de autorisatieheader.
Als u uw Azure-functie wilt beveiligen, volgt u deze stappen om Microsoft Entra-verificatie te integreren, voor het valideren van binnenkomende tokens met de registratie van uw API-toepassingsregistratie voor Azure Functions-verificatie-gebeurtenissen.
Notitie
Als de Azure-functie-app wordt gehost in een andere Azure-tenant dan de tenant waarin uw aangepaste verificatie-extensie is geregistreerd, gaat u verder met de stap 5.1 Van de OpenID Connect-id-provider .
5.1 Een id-provider toevoegen aan uw Azure-functie
Meld u aan bij het Azure-portaal.
Navigeer en selecteer de functie-app die u eerder hebt gepubliceerd.
Selecteer Verificatie in het menu links.
Selecteer Id-provider toevoegen.
Selecteer Microsoft als id-provider.
Selecteer Klant als tenanttype.
Voer onder App-registratie de
client_id
API-app-registratie voor Azure Functions-verificatie-gebeurtenissen in die u eerder hebt gemaakt bij het registreren van de aangepaste claimprovider.Voer voor de verlener-URL de volgende URL
https://{domainName}.ciamlogin.com/{tenant_id}/v2.0
in, waarbij{domainName}
is de domeinnaam van uw externe tenant.{tenantId}
is de tenant-id van uw externe tenant. Uw aangepaste verificatie-extensie moet hier worden geregistreerd.
Selecteer onder Niet-geverifieerde aanvragen HTTP 401 Niet geautoriseerd als id-provider.
Hef de selectie van de tokenopslagoptie op.
Selecteer Toevoegen om verificatie toe te voegen aan uw Azure-functie.
5.2 Met behulp van openID Connect-id-provider
Als u stap 5 hebt geconfigureerd : Uw Azure-functie beveiligen, slaat u deze stap over. Als de Azure-functie wordt gehost onder een andere tenant dan de tenant waarin uw aangepaste verificatie-extensie is geregistreerd, volgt u deze stappen om uw functie te beveiligen:
Meld u aan bij Azure Portal en navigeer en selecteer de functie-app die u eerder hebt gepubliceerd.
Selecteer Verificatie in het menu links.
Selecteer Id-provider toevoegen.
Selecteer OpenID Connect als id-provider.
Geef een naam op, zoals Contoso Microsoft Entra ID.
Voer onder de vermelding Metagegevens de volgende URL in naar de document-URL. Vervang de
{tenantId}
door uw Microsoft Entra-tenant-id.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
Voer onder de app-registratie de toepassings-id (client-id) in van de API-app-registratie van Azure Functions-verificatie-gebeurtenissen die u eerder hebt gemaakt.
In het Microsoft Entra-beheercentrum:
- Selecteer de API-app-registratie voor Azure Functions-verificatie-gebeurtenissen die u eerder hebt gemaakt.
- Selecteer Certificaten en geheimen Clientgeheimen>>Nieuw clientgeheim.
- Voeg een beschrijving voor uw clientgeheim toe.
- Selecteer een vervaldatum voor het geheim of geef een aangepaste levensduur op.
- Selecteer Toevoegen.
- Noteer de waarde van het geheim voor gebruik in uw clienttoepassingscode. Deze geheimwaarde wordt nooit meer weergegeven nadat u deze pagina hebt verlaten.
Ga terug naar de Azure-functie en voer onder de app-registratie het clientgeheim in.
Hef de selectie van de tokenopslagoptie op.
Selecteer Toevoegen om de OpenID Connect-id-provider toe te voegen.
Stap 6: De toepassing testen
Voer de volgende stappen uit om uw aangepaste verificatie-extensie te testen:
Open een nieuwe privébrowser en navigeer naar de volgende URL:
https://<domainName>.ciamlogin.com/<tenant_id>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=code+id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
- Vervang door
<domainName>
de naam van uw externe tenant en vervang deze door<tenant-id>
uw externe tenant-id. - Vervang
<client_id>
door de id voor de toepassing die u hebt toegevoegd aan de gebruikersstroom.
- Vervang door
Nadat u zich hebt aangemeld, krijgt u uw gedecodeerde token te zien op
https://jwt.ms
.