Tworzenie niestandardowego rozszerzenia uwierzytelniania dla kolekcji atrybutów uruchamiania i przesyłania zdarzeń (wersja zapoznawcza)
Artykuł
Dotyczy: Dzierżawcy siły roboczej — dzierżawcy zewnętrzni (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
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.
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.
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ń:
Zaloguj się do witryny Azure Portal przy użyciu konta administratora.
W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.
Wyszukaj i wybierz pozycję Aplikacja funkcji, a następnie wybierz pozycję Utwórz.
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.
Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybrane opcje konfiguracji aplikacji, a następnie wybierz pozycję Utwórz. Wdrożenie zajmuje kilka minut.
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.
Na stronie Przegląd aplikacji funkcji wybierz okienko Funkcje i wybierz pozycję Utwórz funkcję w obszarze Utwórz w witrynie Azure Portal.
W oknie Tworzenie funkcji pozostaw właściwość Środowisko programistyczne jako Programowanie w portalu. W obszarze Szablon wybierz pozycję Wyzwalacz HTTP.
W obszarze Szczegóły szablonu wprowadź wartość CustomAuthenticationExtensionsAPI dla właściwości Nowa funkcja .
W obszarze Poziom autoryzacji wybierz pozycję Funkcja.
Wybierz pozycję Utwórz.
1.2. Konfigurowanie wyzwalacza HTTP dla elementu OnAttributeCollectionStart
Z menu wybierz pozycję Kod i testowanie.
Wybierz poniższą kartę dla scenariusza, który chcesz zaimplementować: Kontynuuj, Blokuj lub SetPrefillValues. Zastąp kod podanymi fragmentami kodu.
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; }
}
Użyj tego wyzwalacza HTTP, aby zablokować użytkownikowi kontynuowanie procesu rejestracji. Na przykład możesz użyć usługi weryfikacji tożsamości lub zewnętrznego źródła danych tożsamości, aby zweryfikować adres e-mail użytkownika.
#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<BlockedActions>{
new BlockedActions {
type = "microsoft.graph.attributeCollectionStart.showBlockPage",
message = "AttributeCollectionStart Custom Extension message: Sorry, your access request has been blocked. Try reaching an admin at admin@contoso.com."
}
};
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<BlockedActions> actions { get; set; }
}
[JsonObject]
public class BlockedActions {
[JsonProperty("@odata.type")]
public string type { get; set; }
public string message { get; set; }
}
Użyj tego wyzwalacza HTTP, aby wstępnie wypełnić wartości skojarzone z przepływem użytkownika, na przykład z zewnętrznego systemu HR lub innego źródła danych. Możesz wstępnie wypełnić wartości dla wbudowanych atrybutów (na przykład adres), atrybutów użytkownika niestandardowego (na przykład numeru lojalnościowego).
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
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);
// The form fields will load with these default values
var inputs = new Dictionary<string, object>()
{
{ "postalCode", "<your-prefill-value>" },
{ "streetAddress", "<your-prefill-value>" },
{ "city", "<your-prefill-value>" },
{ "extension_appId_mailingList", false },
{ "extension_appId_memberSince", 2023 }
};
var actions = new List<SetPrefillValuesAction>{
new SetPrefillValuesAction {
type = "microsoft.graph.attributeCollectionStart.setPrefillValues",
inputs = inputs }
};
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<SetPrefillValuesAction> actions { get; set; }
}
[JsonObject]
public class SetPrefillValuesAction {
[JsonProperty("@odata.type")]
public string type { get; set; }
public Dictionary<string, object> inputs { get; set; }
}
1.3. Konfigurowanie wyzwalacza HTTP dla elementu OnAttributeCollectionSubmit
Z menu wybierz pozycję Kod i testowanie.
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.
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; }
}
Użyj tego wyzwalacza HTTP, aby zablokować użytkownikowi kontynuowanie procesu rejestracji na podstawie wprowadzonych wartości atrybutów. Możesz na przykład zablokować rejestrację na podstawie ryzykownego numeru telefonu. Możesz też zakończyć przepływ rejestracji i wysłać użytkownika do niestandardowego systemu zatwierdzania w celu utworzenia konta.
#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<BlockedActions>{
new BlockedActions {
type = "microsoft.graph.attributeCollectionSubmit.showBlockPage",
message = "AttributeCollectionSubmit Custom Extension Message: Thank you for your response. Your access request is processing. You'll be notified when your request has been approved."
}
};
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<BlockedActions> actions { get; set; }
}
[JsonObject]
public class BlockedActions {
[JsonProperty("@odata.type")]
public string type { get; set; }
public string message { get; set; }
}
Użyj tego wyzwalacza HTTP, aby zmodyfikować kolekcję atrybutów od użytkownika. Można na przykład zmienić format atrybutu dostarczonego przez użytkownika. Po zmodyfikowaniu atrybutów rejestracja będzie kontynuowana bez powiadomienia użytkownika. Jeśli wymagane jest powiadomienie, użyj akcji weryfikacji.
#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.");
// User attributes will be saved with these override values
var attributes = new Dictionary<string, object>()
{
{ "postalCode", "<your-override-value>" },
{ "streetAddress", "<your-override-value>" },
{ "city", "<your-override-value>" },
{ "extension_appId_mailingList", false }
{ "extension_appId_memberSince", 2010 }
};
var actions = new List<ModifiedAttributesAction>{
new ModifiedAttributesAction {
type = "microsoft.graph.attributeCollectionSubmit.modifyAttributeValues",
attributes = attributes
}
};
log.LogInformation("actions: " + actions);
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<ModifiedAttributesAction> actions { get; set; }
}
[JsonObject]
public class ModifiedAttributesAction {
[JsonProperty("@odata.type")]
public string type { get; set; }
public Dictionary<string, object> attributes { get; set; }
}
Użyj tego wyzwalacza HTTP, aby zweryfikować atrybuty wprowadzone przez użytkownika. Można na przykład zweryfikować atrybuty w zewnętrznym magazynie danych. Możesz zweryfikować wbudowane atrybuty (na przykład kraj), niestandardowe atrybuty użytkownika (na przykład numer lojalnościowy).
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
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);
// Parse specified attributes
string cityValue = (JsonConvert.SerializeObject(request?.data?.userSignUpInfo?.attributes?.city?.value)).ToString();
string postalCodeValue = (JsonConvert.SerializeObject(request?.data?.userSignUpInfo?.attributes?.postalCode?.value)).ToString();
string streetAddressValue = (JsonConvert.SerializeObject(request?.data?.userSignUpInfo?.attributes?.streetAddress?.value)).ToString();
// JSON convert makes the length different, so we put 7 here
if(cityValue.Length < 7 || postalCodeValue.Length < 7 || streetAddressValue.Length < 7){
var inputs = new Dictionary<string, string>();
if(cityValue.Length < 7){
inputs.Add("city", "Length of city string should be of at 5 characters at least");
}
if(postalCodeValue.Length < 7){
inputs.Add("postalCode", "Length of postalCodeValue string should be of at 5 characters at least");
}
if(streetAddressValue.Length < 7){
inputs.Add("streetAddress", "Length of streetAddress string should be of at 5 characters at least");
}
string pageMessage = "Please fix below errors to proceed";
var actions = new List<ValidationErrorActions>{
new ValidationErrorActions { type = "microsoft.graph.attributeCollectionSubmit.ShowValidationError", message = pageMessage, attributeErrors = inputs }
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
log.LogInformation($"Returning validation error");
// Send the validation error response
return response;
}else{
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionSubmit.ContinueWithDefaultBehavior"}
};
var dataObject = new DataContinue {
type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
actions= actions
};
dynamic response = new ResponseObjectContinue {
data = dataObject
};
log.LogInformation($"Returning continue");
// Send the continue 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<ValidationErrorActions> actions { get; set; }
}
[JsonObject]
public class ValidationErrorActions {
[JsonProperty("@odata.type")]
public string type { get; set; }
public string message { get; set; }
public Dictionary<string, string> attributeErrors {get; set;}
}
public class ResponseObjectContinue
{
public DataContinue data { get; set; }
}
[JsonObject]
public class DataContinue {
[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.
Przejdź do sekcji Identity External Identities>Custom authentication extensions (Tożsamości>zewnętrzne tożsamości niestandardowe rozszerzenia uwierzytelniania).
Wybierz pozycję Utwórz rozszerzenie niestandardowe.
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.
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.
Wybierz Dalej.
W obszarze Uwierzytelnianie interfejsu API wybierz opcję Utwórz nową rejestrację aplikacji, aby utworzyć rejestrację aplikacji reprezentującą aplikację funkcji.
Nadaj aplikacji nazwę, na przykład interfejs API zdarzeń uwierzytelniania usługi Azure Functions.
Wybierz Dalej.
Wybierz pozycję Utwórz, co spowoduje utworzenie niestandardowego rozszerzenia uwierzytelniania i skojarzonej rejestracji aplikacji.
2.2 Udzielanie zgody administratora
Po utworzeniu niestandardowego rozszerzenia uwierzytelniania przyznaj aplikacji zgodę na zarejestrowaną aplikację, która umożliwia niestandardowe rozszerzenie uwierzytelniania do uwierzytelniania w interfejsie API.
Przejdź do sekcji Identity>External Identities>Custom authentication extensions (Wersja zapoznawcza).
Wybierz niestandardowe rozszerzenie uwierzytelniania z listy.
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.
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.
Przejdź do sekcji Identity External Identities User flows (Przepływy> użytkownika tożsamości>zewnętrznych tożsamości).
Wybierz przepływ użytkownika z listy.
Wybierz pozycję Niestandardowe rozszerzenia uwierzytelniania.
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.
Upewnij się, że aplikacje wymienione obok obu kroków kolekcji atrybutów są poprawne.
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 :
Przejdź do sekcji Identity Applications Application registrations (Rejestracje aplikacji>tożsamości).>
Wybierz opcjęNowa rejestracja.
Wprowadź nazwę aplikacji. Na przykład Moja aplikacja testowa.
W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
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.
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).
W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
W obszarze Niejawne udzielanie i przepływy hybrydowe zaznacz pole wyboru Tokeny identyfikatorów (używane dla przepływów niejawnych i hybrydowych).
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
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.
W obszarze Żądania nieuwierzytelnione wybierz pozycję HTTP 401 Brak autoryzacji jako dostawca tożsamości.
Usuń zaznaczenie opcji Magazyn tokenów.
Wybierz pozycję Dodaj , aby dodać uwierzytelnianie do funkcji platformy Azure.
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ę:
Zaloguj się do witryny Azure Portal, a następnie przejdź do aplikacji funkcji, która została wcześniej opublikowana.
Wybierz pozycję Uwierzytelnianie w menu po lewej stronie.
Wybierz pozycję Dodaj dostawcę tożsamości.
Wybierz pozycję OpenID Connect jako dostawca tożsamości.
Podaj nazwę, taką jak Contoso Microsoft Entra ID.
W obszarze Wpis Metadane wprowadź następujący adres URL do adresu URL dokumentu. Zastąp element identyfikatorem {tenantId} dzierżawy firmy Microsoft Entra.
W obszarze Rejestracja aplikacji wprowadź identyfikator aplikacji (identyfikator klienta) utworzonej wcześniej rejestracji aplikacji interfejsu API uwierzytelniania usługi Azure Functions.
W centrum administracyjnym firmy Microsoft Entra:
Wybierz wcześniej utworzoną rejestrację aplikacji interfejsu API uwierzytelniania usługi Azure Functions.
Wybierz pozycję Certyfikaty i wpisy tajne Klienta Wpisy>tajne> Nowego klienta.
Dodaj opis wpisu tajnego klienta.
Wybierz datę wygaśnięcia klucza tajnego lub określ niestandardowy okres ważności.
Wybierz Dodaj.
Zapisz wartość wpisu tajnego do użycia w kodzie aplikacji klienckiej. Po opuszczeniu tej strony wartość klucza tajnego nie jest nigdy wyświetlana ponowna.
Wróć do funkcji platformy Azure w obszarze Rejestracja aplikacji wprowadź klucz tajny klienta.
Usuń zaznaczenie opcji Magazyn tokenów.
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:
Otwórz nową prywatną przeglądarkę i przejdź do następującego adresu URL:
Dowiedz się, jak Tożsamość zewnętrzna Microsoft Entra zapewnia bezpieczne, bezproblemowe środowiska logowania dla klientów biznesowych i konsumentów. Zapoznaj się z tworzeniem dzierżawy, rejestracją aplikacji, dostosowywaniem przepływu i zabezpieczeniami konta.
Użyj niestandardowych rozszerzeń uwierzytelniania firmy Microsoft, aby dostosować środowisko logowania użytkownika przy użyciu interfejsów API REST lub wychodzących elementów webhook.
Dowiedz się, jak używać niestandardowych rozszerzeń uwierzytelniania w Tożsamość zewnętrzna Microsoft Entra. Integracja z systemami zewnętrznymi, dodawanie logiki niestandardowej do przepływów uwierzytelniania i ulepszanie środowisk użytkownika.
Dowiedz się, jak używać wyzwalacza zdarzeń uwierzytelniania dla biblioteki usługi Azure Functions, aby utworzyć funkcję wyzwalacza, która używa zdarzenia uruchamiania wystawiania tokenu.
Dowiedz się, jak skonfigurować niestandardowego dostawcę oświadczeń dla zdarzenia rozpoczęcia wystawiania tokenu w identyfikatorze Entra firmy Microsoft. Oświadczenia niestandardowe można dodać do tokenu przed jego wystawieniem.