Udostępnij za pośrednictwem


Tworzenie niestandardowego rozszerzenia uwierzytelniania dla kolekcji atrybutów uruchamiania i przesyłania zdarzeń (wersja zapoznawcza)

Dotyczy:Biały okrąg z szarym symbolem X. Dzierżawcy siły roboczej — dzierżawcy zewnętrzni Zielony okrąg z białym symbolem znacznika wyboru. (dowiedz się więcej)

W tym artykule opisano sposób rozszerzania środowiska rejestracji użytkownika w Tożsamość zewnętrzna Microsoft Entra dla klientów. W przepływach użytkownika rejestracji klienta odbiorniki zdarzeń mogą służyć do rozszerzania procesu zbierania atrybutów przed kolekcją atrybutów i w czasie przesyłania atrybutów:

  • Zdarzenie OnAttributeCollectionStart występuje na początku kroku kolekcji atrybutów przed renderowaniem strony kolekcji atrybutów. Możesz dodać akcje, takie jak wstępne wypełnianie wartości i wyświetlanie błędu blokowania.

    Napiwek

    Wypróbuj teraz

    Aby wypróbować tę funkcję, przejdź do pokazu Woodgrove Groceries i uruchom przypadek użycia "Atrybuty rejestracji wstępnej".

  • Zdarzenie OnAttributeCollectionSubmit występuje po wprowadzeniu i przesłaniu atrybutów przez użytkownika. Możesz dodawać akcje, takie jak weryfikowanie lub modyfikowanie wpisów użytkownika.

    Napiwek

    Wypróbuj teraz

    Aby wypróbować tę funkcję, przejdź do pokazu Woodgrove Groceries i uruchom przypadek użycia "Zweryfikuj atrybuty rejestracji" lub "Blokuj użytkownikowi kontynuowanie procesu rejestracji".

Oprócz tworzenia niestandardowego rozszerzenia uwierzytelniania dla kolekcji atrybutów start i przesyłania zdarzeń, należy utworzyć interfejs API REST, który definiuje akcje przepływu pracy do wykonania dla każdego zdarzenia. Do tworzenia i hostowania interfejsu API REST można użyć dowolnego języka programowania, platformy i środowiska hostingu. W tym artykule przedstawiono szybki sposób rozpoczynania pracy z funkcją platformy Azure w języku C#. Usługa Azure Functions uruchamia kod w środowisku bezserwerowym bez konieczności uprzedniego tworzenia maszyny wirtualnej lub publikowania aplikacji internetowej.

Wymagania wstępne

  • Do korzystania z usług platformy Azure, w tym usługi Azure Functions, potrzebna jest subskrypcja platformy Azure. Jeśli nie masz istniejącego konta platformy Azure, możesz utworzyć konto bezpłatnej wersji próbnej lub skorzystać z korzyści z subskrypcji programu Visual Studio podczas tworzenia konta.
  • Przepływ użytkownika rejestracji i logowania.

Krok 1. Tworzenie niestandardowego interfejsu API REST rozszerzeń uwierzytelniania (aplikacja funkcji platformy Azure)

Napiwek

Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.

W tym kroku utworzysz interfejs API funkcji wyzwalacza HTTP przy użyciu usługi Azure Functions. Interfejs API funkcji jest źródłem logiki biznesowej dla przepływów użytkownika. Po utworzeniu funkcji wyzwalacza można skonfigurować ją dla jednego z następujących zdarzeń:

  1. Zaloguj się do witryny Azure Portal przy użyciu konta administratora.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.

  3. Wyszukaj i wybierz pozycję Aplikacja funkcji, a następnie wybierz pozycję Utwórz.

  4. Na stronie Podstawowe użyj ustawień aplikacji funkcji, jak określono w poniższej tabeli:

    Ustawienie Sugerowana wartość opis
    Subskrypcja Twoja subskrypcja Subskrypcja, w której zostanie utworzona nowa aplikacja funkcji.
    Grupa zasobów myResourceGroup Wybierz i istniejącą grupę zasobów lub nazwę nowej, w której utworzysz aplikację funkcji.
    Nazwa aplikacji funkcji Nazwa unikatowa w skali globalnej Nazwa identyfikująca nową aplikację funkcji. Prawidłowe znaki to a-z (bez uwzględniania wielkości liter), 0-9i -.
    Publikowanie Kod Opcja publikowania plików kodu lub kontenera Docker. Na potrzeby tego samouczka wybierz pozycję Kod.
    Stos środowiska uruchomieniowego .NET Preferowany język programowania. Na potrzeby tego samouczka wybierz pozycję .NET.
    Wersja 6 (LTS) Proces Wersja środowiska uruchomieniowego platformy .NET. Oznacza, że można tworzyć i modyfikować funkcje w portalu, co jest zalecane w tym przewodniku
    Region Preferowany region Wybierz region, który znajduje się blisko Ciebie lub w pobliżu innych usług, do których mogą uzyskiwać dostęp funkcje.
    System operacyjny Windows System operacyjny jest wstępnie wybierany na podstawie wyboru stosu środowiska uruchomieniowego.
    Typ planu Zużycie (bezserwerowe) Plan hostingu określający sposób przydzielania zasobów do aplikacji funkcji.
  5. Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybrane opcje konfiguracji aplikacji, a następnie wybierz pozycję Utwórz. Wdrożenie zajmuje kilka minut.

  6. Po wdrożeniu wybierz pozycję Przejdź do zasobu , aby wyświetlić nową aplikację funkcji.

1.1 Tworzenie funkcji wyzwalacza HTTP

Po utworzeniu aplikacji funkcji platformy Azure utworzysz funkcje wyzwalacza HTTP dla akcji, które chcesz wywołać za pomocą żądania HTTP. Wyzwalacze HTTP są przywoływanych i wywoływane przez niestandardowe rozszerzenie uwierzytelniania firmy Microsoft.

  1. Na stronie Przegląd aplikacji funkcji wybierz okienko Funkcje i wybierz pozycję Utwórz funkcję w obszarze Utwórz w witrynie Azure Portal.
  2. W oknie Tworzenie funkcji pozostaw właściwość Środowisko programistyczne jako Programowanie w portalu. W obszarze Szablon wybierz pozycję Wyzwalacz HTTP.
  3. W obszarze Szczegóły szablonu wprowadź wartość CustomAuthenticationExtensionsAPI dla właściwości Nowa funkcja .
  4. W obszarze Poziom autoryzacji wybierz pozycję Funkcja.
  5. Wybierz pozycję Utwórz.

1.2. Konfigurowanie wyzwalacza HTTP dla elementu OnAttributeCollectionStart

  1. Z menu wybierz pozycję Kod i testowanie.
  2. Wybierz poniższą kartę dla scenariusza, który chcesz zaimplementować: Kontynuuj, Blokuj lub SetPrefillValues. Zastąp kod podanymi fragmentami kodu.
  3. Po zastąpieniu kodu z górnego menu wybierz pozycję Pobierz adres URL funkcji i skopiuj adres URL. Ten adres URL jest używany w kroku 2. Tworzenie i rejestrowanie niestandardowego rozszerzenia uwierzytelniania dla docelowego adresu URL.

Użyj tego wyzwalacza HTTP, aby umożliwić użytkownikowi kontynuowanie przepływu rejestracji, jeśli nie są potrzebne żadne dalsze działania.

#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. Konfigurowanie wyzwalacza HTTP dla elementu OnAttributeCollectionSubmit

  1. Z menu wybierz pozycję Kod i testowanie.
  2. Wybierz poniższą kartę dla scenariusza, który chcesz zaimplementować: Kontynuuj, Blokuj, Modyfikuj wartości lub Błąd walidacji. Zastąp kod podanymi fragmentami kodu.
  3. Po zastąpieniu kodu z górnego menu wybierz pozycję Pobierz adres URL funkcji i skopiuj adres URL. Ten adres URL jest używany w kroku 2. Tworzenie i rejestrowanie niestandardowego rozszerzenia uwierzytelniania dla docelowego adresu URL.

Użyj tego wyzwalacza HTTP, aby umożliwić użytkownikowi kontynuowanie przepływu rejestracji, jeśli nie są potrzebne żadne dalsze działania.

#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. Tworzenie i rejestrowanie niestandardowego rozszerzenia uwierzytelniania

W tym kroku zarejestrujesz niestandardowe rozszerzenie uwierzytelniania, które jest używane przez identyfikator Entra firmy Microsoft w celu wywołania funkcji platformy Azure. Rozszerzenie uwierzytelniania niestandardowego zawiera informacje o punkcie końcowym interfejsu API REST, rozpoczęciu kolekcji atrybutów i przesłaniu akcji, które analizuje z interfejsu API REST oraz sposobie uwierzytelniania w interfejsie API REST.

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej administrator aplikacji i administrator uwierzytelniania.

  2. Przejdź do sekcji Identity External Identities>Custom authentication extensions (Tożsamości>zewnętrzne tożsamości niestandardowe rozszerzenia uwierzytelniania).

  3. Wybierz pozycję Utwórz rozszerzenie niestandardowe.

  4. W obszarze Podstawy wybierz zdarzenie AttributeCollectionStart lub zdarzenie AttributeCollectionSubmit , a następnie wybierz pozycję Dalej. Upewnij się, że jest to zgodne z konfiguracją w poprzednim kroku.

  5. W obszarze Konfiguracja punktu końcowego wypełnij następujące właściwości:

    • Nazwa — nazwa niestandardowego rozszerzenia uwierzytelniania. Na przykład zdarzenie w kolekcji atrybutów.
    • Docelowy adres URL — adres {Function_Url} URL funkcji platformy Azure.
    • Opis — opis niestandardowych rozszerzeń uwierzytelniania.
  6. Wybierz Dalej.

  7. W obszarze Uwierzytelnianie interfejsu API wybierz opcję Utwórz nową rejestrację aplikacji, aby utworzyć rejestrację aplikacji reprezentującą aplikację funkcji.

  8. Nadaj aplikacji nazwę, na przykład interfejs API zdarzeń uwierzytelniania usługi Azure Functions.

  9. Wybierz Dalej.

  10. Wybierz pozycję Utwórz, co spowoduje utworzenie niestandardowego rozszerzenia uwierzytelniania i skojarzonej rejestracji aplikacji.

Po utworzeniu niestandardowego rozszerzenia uwierzytelniania przyznaj aplikacji zgodę na zarejestrowaną aplikację, która umożliwia niestandardowe rozszerzenie uwierzytelniania do uwierzytelniania w interfejsie API.

  1. Przejdź do sekcji Identity>External Identities>Custom authentication extensions (Wersja zapoznawcza).
  2. Wybierz niestandardowe rozszerzenie uwierzytelniania z listy.
  3. Na karcie Przegląd wybierz przycisk Udziel uprawnień, aby wyrazić zgodę administratora na zarejestrowaną aplikację. Rozszerzenie uwierzytelniania niestandardowego używa client_credentials polecenia do uwierzytelniania w aplikacji funkcji platformy Receive custom authentication extension HTTP requests Azure przy użyciu uprawnienia. Wybierz pozycję Zaakceptuj.

Krok 3. Dodawanie niestandardowego rozszerzenia uwierzytelniania do przepływu użytkownika

Teraz możesz skojarzyć rozszerzenie uwierzytelniania niestandardowego z co najmniej jednym przepływem użytkownika.

Uwaga

Jeśli musisz utworzyć przepływ użytkownika, wykonaj kroki opisane w artykule Tworzenie przepływu rejestracji i logowania użytkowników dla klientów.

3.1. Dodawanie niestandardowego rozszerzenia uwierzytelniania do istniejącego przepływu użytkownika

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji i administrator uwierzytelniania

  2. Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia w górnym menu, aby przełączyć się do dzierżawy zewnętrznej.

  3. Przejdź do sekcji Identity External Identities User flows (Przepływy> użytkownika tożsamości>zewnętrznych tożsamości).

  4. Wybierz przepływ użytkownika z listy.

  5. Wybierz pozycję Niestandardowe rozszerzenia uwierzytelniania.

  6. Na stronie Niestandardowe rozszerzenia uwierzytelniania można skojarzyć niestandardowe rozszerzenie uwierzytelniania z dwoma różnymi krokami przepływu użytkownika:

    • Przed zebraniem informacji od użytkownika jest skojarzone ze zdarzeniem OnAttributeCollectionStart . Wybierz ołówek edycji. Zostaną wyświetlone tylko te rozszerzenia niestandardowe skonfigurowane dla zdarzenia OnAttributeCollectionStart . Wybierz aplikację skonfigurowaną dla zdarzenia rozpoczęcia kolekcji atrybutów, a następnie wybierz pozycję Wybierz.
    • Gdy użytkownik przesyła swoje informacje , jest skojarzony ze zdarzeniem OnAttributeCollectionSubmit . zostaną wyświetlone tylko te rozszerzenia niestandardowe skonfigurowane dla zdarzenia OnAttributeCollectionSubmit . Wybierz aplikację skonfigurowaną dla zdarzenia przesyłania kolekcji atrybutów, a następnie wybierz pozycję Wybierz.
  7. Upewnij się, że aplikacje wymienione obok obu kroków kolekcji atrybutów są poprawne.

  8. Wybierz ikonę Zapisz.

Krok 4. Testowanie aplikacji

Aby uzyskać token i przetestować niestandardowe rozszerzenie uwierzytelniania, możesz użyć https://jwt.ms aplikacji. Jest to aplikacja internetowa należąca do firmy Microsoft, która wyświetla zdekodowana zawartość tokenu (zawartość tokenu nigdy nie opuszcza przeglądarki).

Wykonaj następujące kroki, aby zarejestrować aplikację internetową jwt.ms :

4.1 Rejestrowanie aplikacji internetowej jwt.ms

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji.
  2. Przejdź do sekcji Identity Applications Application registrations (Rejestracje aplikacji>tożsamości).>
  3. Wybierz opcjęNowa rejestracja.
  4. Wprowadź nazwę aplikacji. Na przykład Moja aplikacja testowa.
  5. W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
  6. Na liście rozwijanej Wybierz platformę w polu Identyfikator URI przekierowania wybierz pozycję Sieć Web , a następnie wprowadź w https://jwt.ms polu tekstowym Adres URL.
  7. Wybierz pozycję Zarejestruj, aby ukończyć rejestrację aplikacji.

4.2 Pobieranie identyfikatora aplikacji

W rejestracji aplikacji w obszarze Przegląd skopiuj identyfikator aplikacji (klienta). Identyfikator aplikacji jest określany jako w <client_id> kolejnych krokach. W programie Microsoft Graph odwołuje się do niej właściwość appId .

4.3 Włączanie przepływu niejawnego

Aplikacja testowa jwt.ms korzysta z niejawnego przepływu. Włącz niejawny przepływ w rejestracji aplikacji Mój test, wykonując następujące kroki.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania używany do testowania w tej procedurze wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Takie podejście nie powinno być używane do uwierzytelniania użytkowników w aplikacjach produkcyjnych (dowiedz się więcej).

  1. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
  2. W obszarze Niejawne udzielanie i przepływy hybrydowe zaznacz pole wyboru Tokeny identyfikatorów (używane dla przepływów niejawnych i hybrydowych).
  3. Wybierz pozycję Zapisz.

Krok 5. Ochrona funkcji platformy Azure

Rozszerzenie uwierzytelniania niestandardowego firmy Microsoft używa serwera do przepływu serwera w celu uzyskania tokenu dostępu wysyłanego w nagłówku HTTP Authorization do funkcji platformy Azure. Podczas publikowania funkcji na platformie Azure, zwłaszcza w środowisku produkcyjnym, należy zweryfikować token wysłany w nagłówku autoryzacji.

Aby chronić funkcję platformy Azure, wykonaj następujące kroki, aby zintegrować uwierzytelnianie firmy Microsoft Entra, aby weryfikować tokeny przychodzące z rejestracją aplikacji interfejsu API zdarzeń uwierzytelniania usługi Azure Functions.

Uwaga

Jeśli aplikacja funkcji platformy Azure jest hostowana w innej dzierżawie platformy Azure niż dzierżawa, w której zarejestrowano rozszerzenie uwierzytelniania niestandardowego, przejdź do kroku 5.1 Używanie dostawcy tożsamości OpenID Connect.

5.1 Dodawanie dostawcy tożsamości do funkcji platformy Azure

  1. Zaloguj się w witrynie Azure Portal.

  2. Nawiguj i wybierz wcześniej opublikowaną aplikację funkcji.

  3. Wybierz pozycję Uwierzytelnianie w menu po lewej stronie.

  4. Wybierz pozycję Dodaj dostawcę tożsamości.

  5. Wybierz pozycję Microsoft jako dostawcę tożsamości.

  6. Wybierz pozycję Klient jako typ dzierżawy.

  7. W obszarze Rejestracja aplikacji wprowadź client_id rejestrację aplikacji interfejsu API zdarzeń uwierzytelniania usługi Azure Functions utworzoną wcześniej podczas rejestrowania niestandardowego dostawcy oświadczeń.

  8. W polu Adres URL wystawcy wprowadź następujący adres URL https://{domainName}.ciamlogin.com/{tenant_id}/v2.0, gdzie

    • {domainName} to nazwa domeny dzierżawy zewnętrznej.
    • {tenantId} to identyfikator dzierżawy dzierżawy zewnętrznej. W tym miejscu należy zarejestrować niestandardowe rozszerzenie uwierzytelniania.
  9. W obszarze Żądania nieuwierzytelnione wybierz pozycję HTTP 401 Brak autoryzacji jako dostawca tożsamości.

  10. Usuń zaznaczenie opcji Magazyn tokenów.

  11. Wybierz pozycję Dodaj , aby dodać uwierzytelnianie do funkcji platformy Azure.

    Zrzut ekranu przedstawiający sposób dodawania uwierzytelniania do aplikacji funkcji w dzierżawie zewnętrznej.

5.2 Używanie dostawcy tożsamości OpenID Connect

Jeśli skonfigurowano krok 5. Ochrona funkcji platformy Azure, pomiń ten krok. W przeciwnym razie, jeśli funkcja platformy Azure jest hostowana w innej dzierżawie niż dzierżawa, w której zarejestrowano rozszerzenie uwierzytelniania niestandardowego, wykonaj następujące kroki, aby chronić funkcję:

  1. Zaloguj się do witryny Azure Portal, a następnie przejdź do aplikacji funkcji, która została wcześniej opublikowana.

  2. Wybierz pozycję Uwierzytelnianie w menu po lewej stronie.

  3. Wybierz pozycję Dodaj dostawcę tożsamości.

  4. Wybierz pozycję OpenID Connect jako dostawca tożsamości.

  5. Podaj nazwę, taką jak Contoso Microsoft Entra ID.

  6. W obszarze Wpis Metadane wprowadź następujący adres URL do adresu URL dokumentu. Zastąp element identyfikatorem {tenantId} dzierżawy firmy Microsoft Entra.

    https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
    
  7. W obszarze Rejestracja aplikacji wprowadź identyfikator aplikacji (identyfikator klienta) utworzonej wcześniej rejestracji aplikacji interfejsu API uwierzytelniania usługi Azure Functions.

  8. W centrum administracyjnym firmy Microsoft Entra:

    1. Wybierz wcześniej utworzoną rejestrację aplikacji interfejsu API uwierzytelniania usługi Azure Functions.
    2. Wybierz pozycję Certyfikaty i wpisy tajne Klienta Wpisy>tajne> Nowego klienta.
    3. Dodaj opis wpisu tajnego klienta.
    4. Wybierz datę wygaśnięcia klucza tajnego lub określ niestandardowy okres ważności.
    5. Wybierz Dodaj.
    6. Zapisz wartość wpisu tajnego do użycia w kodzie aplikacji klienckiej. Po opuszczeniu tej strony wartość klucza tajnego nie jest nigdy wyświetlana ponowna.
  9. Wróć do funkcji platformy Azure w obszarze Rejestracja aplikacji wprowadź klucz tajny klienta.

  10. Usuń zaznaczenie opcji Magazyn tokenów.

  11. Wybierz pozycję Dodaj , aby dodać dostawcę tożsamości OpenID Connect.

Krok 6. Testowanie aplikacji

Aby przetestować niestandardowe rozszerzenie uwierzytelniania, wykonaj następujące kroki:

  1. Otwórz nową prywatną przeglądarkę i przejdź do następującego 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
    
    • Zastąp <domainName> ciąg nazwą dzierżawy zewnętrznej i zastąp <tenant-id> element identyfikatorem dzierżawy zewnętrznej.
    • Zastąp <client_id> ciąg identyfikatorem aplikacji dodanej do przepływu użytkownika.
  2. Po zalogowaniu zostanie wyświetlony dekodowany token pod adresem https://jwt.ms.

Następne kroki