Sdílet prostřednictvím


Vytvoření vlastního rozšíření ověřování pro spuštění a odeslání událostí kolekce atributů (Preview)

Platí pro: Bílý kruh se šedým symbolem X. Tenanti pracovních sil – externí tenanti Zelený kruh s bílým symbolem zaškrtnutí (další informace)

Tento článek popisuje, jak rozšířit možnosti registrace uživatelů v Microsoft Entra Externí ID pro zákazníky. V tocích uživatelů registrace zákazníka je možné použít naslouchací procesy událostí k rozšíření procesu shromažďování atributů před shromažďováním atributů a v době odeslání atributu:

  • OnAttributeCollectionStart událost nastane na začátku kroku kolekce atributů před vykreslení stránky kolekce atributů. Můžete přidat akce, jako jsou předvyplnění hodnot a zobrazení blokující chyby.

    Spropitné

    Vyzkoušet

    Pokud si chcete tuto funkci vyzkoušet, přejděte do ukázky potravin Woodgrove a spusťte případ použití "Předem vyplní atributy registrace".

  • Událost OnAttributeCollectionSubmit nastane poté, co uživatel zadá a odešle atributy. Můžete přidat akce, jako je ověření nebo úprava položek uživatele.

    Spropitné

    Vyzkoušet

    Pokud si chcete tuto funkci vyzkoušet, přejděte na ukázku potravin Woodgrove a spusťte případ použití ověření atributů registrace nebo případ použití Blokovat uživateli pokračovat v procesu registrace.

Kromě vytvoření vlastního rozšíření ověřování pro spuštění a odeslání událostí kolekce atributů musíte vytvořit rozhraní REST API, které definuje akce pracovního postupu, které se mají provést pro každou událost. K vytvoření a hostování rozhraní REST API můžete použít libovolný programovací jazyk, architekturu a hostitelské prostředí. Tento článek ukazuje rychlý způsob, jak začít používat funkci Azure Functions v jazyce C#. Se službou Azure Functions spustíte kód v bezserverovém prostředí, aniž byste museli nejprve vytvořit virtuální počítač nebo publikovat webovou aplikaci.

Požadavky

  • Pokud chcete používat služby Azure, včetně Azure Functions, potřebujete předplatné Azure. Pokud nemáte existující účet Azure, můžete si zaregistrovat bezplatnou zkušební verzi nebo využít výhody předplatného sady Visual Studio při vytváření účtu.
  • Tok uživatele pro registraci a přihlášení

Krok 1: Vytvoření vlastního rozhraní REST API rozšíření ověřování (aplikace Azure Functions)

Spropitné

Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.

V tomto kroku vytvoříte rozhraní API funkce triggeru HTTP pomocí Azure Functions. Rozhraní API funkce je zdrojem obchodní logiky pro toky uživatelů. Po vytvoření funkce triggeru ji můžete nakonfigurovat pro jednu z následujících událostí:

  1. Přihlaste se k webu Azure Portal pomocí účtu správce.

  2. V nabídce webu Azure Portal nebo na domovské stránce vyberte Vytvořit prostředek.

  3. Vyhledejte a vyberte Function App a vyberte Vytvořit.

  4. Na stránce Základy použijte nastavení aplikace funkcí, jak je uvedeno v následující tabulce:

    Nastavení Navrhovaná hodnota Popis
    Předplatné Vaše předplatné Předplatné, ve kterém se vytvoří nová aplikace funkcí.
    Skupina prostředků myResourceGroup Vyberte a existující skupinu prostředků nebo název nové skupiny prostředků, ve které vytvoříte aplikaci funkcí.
    Název aplikace funkcí Globálně jedinečný název Název, který identifikuje novou aplikaci funkcí. Platné znaky jsou a-z (nerozlišují malá a velká písmena) 0-9a -.
    Publikovat Kód Možnost publikování souborů kódu nebo kontejneru Dockeru Pro účely tohoto kurzu vyberte Kód.
    Zásobník modulu runtime .SÍŤ Preferovaný programovací jazyk. Pro účely tohoto kurzu vyberte .NET.
    Verze 6 (LTS) V procesu Verze modulu runtime .NET In-process signifies that you can create and modify functions in the portal, which is recommended for this guide
    Oblast Upřednostňovaná oblast Vyberte oblast, která je blízko vás nebo blízko jiných služeb, ke kterým mají vaše funkce přístup.
    Operační systém Windows Operační systém je předem vybraný na základě výběru zásobníku modulu runtime.
    Typ plánu Spotřeba (bez serveru) Plán hostování, který definuje, jak se prostředky přidělují vaší aplikaci funkcí.
  5. Výběrem možnosti Zkontrolovat a vytvořit zkontrolujte výběry konfigurace aplikace a pak vyberte Vytvořit. Nasazení trvá několik minut.

  6. Po nasazení vyberte Přejít k prostředku a zobrazte novou aplikaci funkcí.

1.1 Vytvoření funkcí triggeru HTTP

Teď, když jste vytvořili aplikaci Funkcí Azure, vytvoříte funkce triggeru HTTP pro akce, které chcete vyvolat pomocí požadavku HTTP. Na triggery HTTP se odkazuje a volá vaše vlastní rozšíření ověřování Microsoft Entra.

  1. Na stránce Přehled aplikace funkcí vyberte podokno Funkce a v části Vytvořit na webu Azure Portal vyberte Vytvořit funkci.
  2. V okně Vytvořit funkci ponechte vlastnost Vývojové prostředí jako Vývoj na portálu. V části Šablona vyberte trigger HTTP.
  3. V části Podrobnosti šablony zadejte CustomAuthenticationExtensionsAPI pro New Function vlastnost.
  4. Pro úroveň autorizace vyberte funkci.
  5. Vyberte Vytvořit.

1.2 Konfigurace triggeru HTTP pro OnAttributeCollectionStart

  1. V nabídce vyberte Kód + Test.
  2. Vyberte kartu níže pro scénář, který chcete implementovat: Pokračovat, Blokovat nebo SetPrefillValues. Nahraďte kód zadanými fragmenty kódu.
  3. Po nahrazení kódu v horní nabídce vyberte Získat adresu URL funkce a zkopírujte adresu URL. Tuto adresu URL použijete v kroku 2: Vytvoření a registrace vlastního rozšíření ověřování pro cílovou adresu URL.

Pomocí tohoto triggeru HTTP umožníte uživateli pokračovat v toku registrace, pokud nepotřebujete žádnou další akci.

#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 Konfigurace triggeru HTTP pro OnAttributeCollectionSubmit

  1. V nabídce vyberte Kód + Test.
  2. V případě scénáře, který chcete implementovat, vyberte kartu níže: Pokračovat, Blokovat, Upravit hodnoty nebo Chyba ověření. Nahraďte kód zadanými fragmenty kódu.
  3. Po nahrazení kódu v horní nabídce vyberte Získat adresu URL funkce a zkopírujte adresu URL. Tuto adresu URL použijete v kroku 2: Vytvoření a registrace vlastního rozšíření ověřování pro cílovou adresu URL.

Pomocí tohoto triggeru HTTP umožníte uživateli pokračovat v toku registrace, pokud nepotřebujete žádnou další akci.

#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; }
}

Krok 2: Vytvoření a registrace vlastního rozšíření ověřování

V tomto kroku zaregistrujete vlastní rozšíření ověřování, které používá ID Microsoft Entra k volání funkce Azure. Rozšíření vlastního ověřování obsahuje informace o koncovém bodu rozhraní REST API, spuštění kolekce atributů a odeslání akcí, které analyzuje z rozhraní REST API, a o tom, jak se ověřit v rozhraní REST API.

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň správce aplikací a správce ověřování.

  2. Přejděte k rozšíření vlastního ověřování Identita>externích>identit.

  3. Vyberte Vytvořit vlastní rozšíření.

  4. V basics, select the AttributeCollectionStart event or AttributeCollectionSubmit event, and then select Next. Ujistěte se, že odpovídá konfiguraci v předchozím kroku.

  5. V konfiguraci koncového bodu vyplňte následující vlastnosti:

    • Název – název vlastního rozšíření ověřování. Například u události kolekce atributů.
    • Cílová adresa URL{Function_Url} adresa URL vaší funkce Azure.
    • Popis – popis vlastních rozšíření ověřování.
  6. Vyberte Další.

  7. V části Ověřování rozhraní API vyberte možnost Vytvořit novou registraci aplikace a vytvořte registraci aplikace, která představuje vaši aplikaci funkcí.

  8. Pojmenujte aplikaci, například rozhraní API událostí ověřování azure Functions.

  9. Vyberte Další.

  10. Vyberte Vytvořit, čímž se vytvoří vlastní rozšíření ověřování a přidružená registrace aplikace.

Po vytvoření vlastního rozšíření ověřování udělte aplikaci souhlas s zaregistrovanou aplikací, která umožňuje ověření vlastního rozšíření ověřování ve vašem rozhraní API.

  1. Přejděte k >rozšíření vlastního ověřování Identita externích>identit (Preview).
  2. V seznamu vyberte vlastní rozšíření ověřování.
  3. Na kartě Přehled vyberte tlačítko Udělit oprávnění a udělte správci souhlas s zaregistrovanou aplikací. Rozšíření vlastního ověřování používá client_credentials k ověření v aplikaci Azure Function App pomocí Receive custom authentication extension HTTP requests oprávnění. Vyberte Přijmout.

Krok 3: Přidání vlastního rozšíření ověřování do toku uživatele

Teď můžete k jednomu nebo několika tokům uživatelů přidružit vlastní rozšíření ověřování.

Poznámka

Pokud potřebujete vytvořit tok uživatele, postupujte podle pokynů v tématu Vytvoření toku uživatele pro registraci a přihlášení pro zákazníky.

3.1 Přidání vlastního rozšíření ověřování do existujícího toku uživatele

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň správce aplikací a správce ověřování.

  2. Pokud máte přístup k více tenantům, přepněte na externího tenanta pomocí ikony Nastavení v horní nabídce.

  3. Přejděte k> tokům identity externích>identit uživatelů.

  4. V seznamu vyberte tok uživatele.

  5. Vyberte vlastní rozšíření ověřování.

  6. Na stránce Rozšíření vlastního ověřování můžete přidružit vlastní rozšíření ověřování ke dvěma různým krokům v toku uživatele:

    • Před shromažďováním informací od uživatele je přidružena k Události OnAttributeCollectionStart . Vyberte tužku pro úpravy. Zobrazí se pouze vlastní rozšíření nakonfigurovaná pro událost OnAttributeCollectionStart . Vyberte aplikaci, kterou jste nakonfigurovali pro událost spuštění kolekce atributů, a pak zvolte Vybrat.
    • Když uživatel odešle své informace je přidružen k OnAttributeCollectionSubmit události. Zobrazí se pouze vlastní rozšíření nakonfigurovaná pro událost OnAttributeCollectionSubmit . Vyberte aplikaci, kterou jste nakonfigurovali pro událost odeslání kolekce atributů, a pak zvolte Vybrat.
  7. Ujistěte se, že jsou aplikace uvedené vedle obou kroků kolekce atributů správné.

  8. Vyberte ikonu Uložit.

Krok 4: Testování aplikace

Pokud chcete získat token a otestovat vlastní rozšíření ověřování, můžete použít https://jwt.ms aplikaci. Jedná se o webovou aplikaci vlastněnou Microsoftem, která zobrazuje dekódovaný obsah tokenu (obsah tokenu nikdy neopustí váš prohlížeč).

Pokud chcete zaregistrovat jwt.ms webovou aplikaci, postupujte takto:

4.1 Registrace webové aplikace jwt.ms

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň správce aplikací.
  2. Přejděte k registracím> aplikací identit.>
  3. Vyberte Nová registrace.
  4. Zadejte název aplikace. Například Moje testovací aplikace.
  5. V části Podporované typy účtů vyberte Pouze účty v tomto organizačním adresáři.
  6. V rozevíracím seznamu Vybrat platformu v identifikátoru URI přesměrování vyberte Web a zadejte https://jwt.ms do textového pole adresa URL.
  7. Výběrem možnosti Zaregistrovat dokončete registraci aplikace.

4.2 Získání ID aplikace

V registraci aplikace zkopírujte v části Přehled ID aplikace (klienta). ID aplikace se označuje jako <client_id> v dalších krocích. V Microsoft Graphu se na ni odkazuje vlastnost appId .

4.3 Povolení implicitního toku

Testovací aplikace jwt.ms používá implicitní tok. Pomocí následujícího postupu povolte implicitní tok v registraci aplikace My Test.

Důležitý

Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Tok ověřování používaný k testování v tomto postupu vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento přístup by se neměl používat k ověřování uživatelů v produkčních aplikacích (další informace).

  1. V části Spravovat vyberte Ověřování.
  2. V části Implicitní udělení a hybridní toky zaškrtněte políčko Tokeny ID (používané pro implicitní a hybridní toky).
  3. Vyberte Uložit.

Krok 5: Ochrana funkce Azure

Rozšíření vlastního ověřování Microsoft Entra používá k získání přístupového tokenu odeslaného v hlavičce HTTP Authorization do vaší funkce Azure server tok serveru. Při publikování funkce do Azure, zejména v produkčním prostředí, je potřeba ověřit token odeslaný v autorizační hlavičce.

Pokud chcete chránit funkci Azure, pomocí těchto kroků integrujte ověřování Microsoft Entra, abyste mohli ověřovat příchozí tokeny s registrací aplikace rozhraní API pro události ověřování azure Functions.

Poznámka

Pokud je aplikace funkcí Azure hostovaná v jiném tenantovi Azure, než je tenant, ve kterém je zaregistrované vlastní rozšíření ověřování, přeskočte ke kroku zprostředkovatele identity OpenID Connect.

5.1 Přidání zprostředkovatele identity do funkce Azure Functions

  1. Přihlaste se k webu Azure Portal.

  2. Přejděte a vyberte aplikaci funkcí, kterou jste předtím publikovali.

  3. V nabídce vlevo vyberte Ověřování .

  4. Vyberte Přidat zprostředkovatele identity.

  5. Jako zprostředkovatele identity vyberte Microsoft .

  6. Jako typ tenanta vyberte zákazníka .

  7. V části Registrace aplikace zadejte client_id registraci aplikace API pro ověřování azure Functions, kterou jste vytvořili při registraci vlastního zprostředkovatele deklarací identity.

  8. Jako adresu URL vystavitele zadejte následující adresu URL https://{domainName}.ciamlogin.com/{tenant_id}/v2.0, kde

    • {domainName} je název domény vašeho externího tenanta.
    • {tenantId} je ID tenanta vašeho externího tenanta. Vaše vlastní rozšíření ověřování by se mělo zaregistrovat tady.
  9. V části Neověřené požadavky vyberte jako zprostředkovatele identity http 401 Neautorizováno .

  10. Zrušte výběr možnosti Úložiště tokenů.

  11. Výběrem možnosti Přidat přidáte ověřování do funkce Azure Functions.

    Snímek obrazovky, který ukazuje, jak přidat ověřování do aplikace funkcí v externím tenantovi

5.2 Použití zprostředkovatele identity OpenID Connect

Pokud jste nakonfigurovali krok 5: Chraňte funkci Azure Functions, tento krok přeskočte. Jinak platí, že pokud je funkce Azure Functions hostovaná v jiném tenantovi, než je tenant, ve kterém je vaše vlastní rozšíření ověřování zaregistrované, postupujte podle těchto kroků k ochraně vaší funkce:

  1. Přihlaste se k webu Azure Portal a pak přejděte a vyberte aplikaci funkcí, kterou jste předtím publikovali.

  2. V nabídce vlevo vyberte Ověřování .

  3. Vyberte Přidat zprostředkovatele identity.

  4. Jako zprostředkovatele identity vyberte OpenID Connect .

  5. Zadejte název, například ID Společnosti Contoso Microsoft Entra.

  6. Pod položkou Metadata zadejte následující adresu URL adresy URL dokumentu. Nahraďte ID tenanta {tenantId} Microsoft Entra.

    https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
    
  7. V rámci registrace aplikace zadejte ID aplikace (ID klienta) registrace aplikace API pro ověřování azure Functions, kterou jste vytvořili dříve.

  8. V Centru pro správu Microsoft Entra:

    1. Vyberte registraci aplikace API pro události ověřování Azure Functions, kterou jste vytvořili dříve.
    2. Vyberte Certifikáty a tajné>klíče>klienta Nové tajné klíče klienta.
    3. Přidejte popis tajného klíče klienta.
    4. Vyberte vypršení platnosti tajného kódu nebo zadejte vlastní životnost.
    5. Vyberte Přidat.
    6. Poznamenejte si hodnotu tajného kódu pro použití v kódu klientské aplikace. Tato hodnota tajného kódu se po opuštění této stránky už nikdy nezobrazí.
  9. Zpět do funkce Azure Functions v rámci registrace aplikace zadejte tajný klíč klienta.

  10. Zrušte výběr možnosti Úložiště tokenů.

  11. Vyberte Přidat a přidejte zprostředkovatele identity OpenID Connect.

Krok 6: Testování aplikace

Pokud chcete otestovat vlastní rozšíření ověřování, postupujte takto:

  1. Otevřete nový privátní prohlížeč a přejděte na následující adresu 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
    
    • Nahraďte <domainName> názvem externího tenanta a nahraďte <tenant-id> id externího tenanta.
    • Nahraďte <client_id> ID aplikace, kterou jste přidali do toku uživatele.
  2. Po přihlášení se vám zobrazí dekódovaný token na adrese https://jwt.ms.

Další kroky