Dodawanie łącznika interfejsu API do przepływu użytkownika
Dotyczy: Dzierżawcy siły roboczej — dzierżawcy zewnętrzni (dowiedz się więcej)
Aby użyć łącznika interfejsu API, należy najpierw utworzyć łącznik interfejsu API, a następnie włączyć go w przepływie użytkownika.
Ważne
- Od 12 lipca 2021 r., jeśli klienci firmy Microsoft Entra B2B skonfigurowali nowe integracje Google do użycia z rejestracją samoobsługową dla swoich niestandardowych lub biznesowych aplikacji, uwierzytelnianie przy użyciu tożsamości Google nie będzie działać, dopóki uwierzytelnianie nie zostanie przeniesione do systemowych widoków internetowych. Dowiedz się więcej.
- Od 30 września 2021 r. firma Google wycofa obsługę logowania osadzonego widoku internetowego. Jeśli aplikacje uwierzytelniają użytkowników za pomocą osadzonego widoku internetowego i korzystasz z federacji Google z usługą Azure AD B2C lub Microsoft Entra B2B w przypadku zaproszeń użytkowników zewnętrznych lub rejestracji samoobsługowej, użytkownicy usługi Google Gmail nie będą mogli się uwierzytelniać. Dowiedz się więcej.
Tworzenie łącznika interfejsu API
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator użytkowników.
Przejdź do sekcji Identity External Identities>Overview (Przegląd tożsamości>zewnętrznych).
Wybierz pozycję Wszystkie łączniki interfejsu API, a następnie wybierz pozycję Nowy łącznik interfejsu API.
Podaj nazwę wyświetlaną wywołania. Na przykład Sprawdź stan zatwierdzenia.
Podaj adres URL punktu końcowego dla wywołania interfejsu API.
Wybierz typ uwierzytelniania i skonfiguruj informacje uwierzytelniania na potrzeby wywoływania interfejsu API. Dowiedz się, jak zabezpieczyć łącznik interfejsu API.
Wybierz pozycję Zapisz.
Żądanie wysłane do interfejsu API
Łącznik interfejsu API materializuje się jako żądanie HTTP POST , wysyłając atrybuty użytkownika ('claims') jako pary klucz-wartość w treści JSON. Atrybuty są serializowane podobnie jak właściwości użytkownika programu Microsoft Graph .
Przykładowe żądanie
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [ // Sent for Google, Facebook, and Email One Time Passcode identity providers
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"surname":"Smith",
"jobTitle":"Supplier",
"streetAddress":"1000 Microsoft Way",
"city":"Seattle",
"postalCode": "12345",
"state":"Washington",
"country":"United States",
"extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
"extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
"ui_locales":"en-US"
}
W żądaniu dostępne są tylko właściwości użytkownika i atrybuty niestandardowe wymienione w środowisku Niestandardowe atrybuty użytkownika przeglądu>tożsamości>>zewnętrznych.
Atrybuty niestandardowe istnieją w formacie extension_<extensions-app-id>_AttributeName w katalogu. Interfejs API powinien oczekiwać otrzymania oświadczeń w tym samym formacie serializowanym. Aby uzyskać więcej informacji na temat atrybutów niestandardowych, zobacz Definiowanie atrybutów niestandardowych dla przepływów rejestracji samoobsługowej.
Ponadto oświadczenia są zwykle wysyłane we wszystkich żądaniach:
- Ustawienia regionalne interfejsu użytkownika ('ui_locales') — ustawienia regionalne użytkownika końcowego skonfigurowane na urządzeniu. Może to być używane przez interfejs API do zwracania międzynarodowych odpowiedzi.
- Adres e-mail ("adres e-mail") lub tożsamości ("tożsamości") — te oświadczenia mogą być używane przez interfejs API do identyfikowania użytkownika końcowego, który uwierzytelnia aplikację.
Ważne
Jeśli oświadczenie nie ma wartości w momencie wywołania punktu końcowego interfejsu API, oświadczenie nie zostanie wysłane do interfejsu API. Interfejs API powinien być zaprojektowany tak, aby jawnie sprawdzać i obsługiwać przypadek, w którym oświadczenie nie znajduje się w żądaniu.
Włączanie łącznika interfejsu API w przepływie użytkownika
Wykonaj następujące kroki, aby dodać łącznik interfejsu API do przepływu użytkownika rejestracji samoobsługowej.
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator użytkowników.
Przejdź do sekcji Identity External Identities>Overview (Przegląd tożsamości>zewnętrznych).
Wybierz pozycję Przepływy użytkownika, a następnie wybierz przepływ użytkownika, do którego chcesz dodać łącznik interfejsu API.
Wybierz pozycję Łączniki interfejsu API, a następnie wybierz punkty końcowe interfejsu API, które chcesz wywołać, wykonując następujące kroki w przepływie użytkownika:
- Po sfederowaniu z dostawcą tożsamości podczas rejestracji
- Przed utworzeniem użytkownika
Wybierz pozycję Zapisz.
Po sfederowaniu z dostawcą tożsamości podczas rejestracji
Łącznik interfejsu API w tym kroku w procesie rejestracji jest wywoływany natychmiast po uwierzytelnieniu użytkownika za pomocą dostawcy tożsamości (takiego jak Google, Facebook lub Microsoft Entra ID). Ten krok poprzedza stronę kolekcji atrybutów, która jest formularzem przedstawionym użytkownikowi w celu zbierania atrybutów użytkownika.
Przykładowe żądanie wysłane do interfejsu API w tym kroku
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [ // Sent for Google, Facebook, and Email One Time Passcode identity providers
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"lastName":"Smith",
"ui_locales":"en-US"
}
Dokładne oświadczenia wysyłane do interfejsu API zależą od tego, które informacje są dostarczane przez dostawcę tożsamości. Wiadomość e-mail jest zawsze wysyłana.
W tym kroku oczekiwano typów odpowiedzi z internetowego interfejsu API
Gdy internetowy interfejs API odbiera żądanie HTTP z identyfikatora Entra firmy Microsoft podczas przepływu użytkownika, może zwrócić następujące odpowiedzi:
- Odpowiedź kontynuacji
- Odpowiedź blokująca
Odpowiedź kontynuacji
Odpowiedź kontynuacji wskazuje, że przepływ użytkownika powinien przejść do następnego kroku: strony kolekcji atrybutów.
W odpowiedzi kontynuacji interfejs API może zwracać oświadczenia. Jeśli oświadczenie jest zwracane przez interfejs API, oświadczenie wykonuje następujące czynności:
- Wstępnie wypełnia pole wejściowe na stronie kolekcji atrybutów.
Zobacz przykład odpowiedzi kontynuacji.
Odpowiedź blokująca
Blokująca odpowiedź kończy przepływ użytkownika. Interfejs API może celowo wydać go, aby zatrzymać kontynuację przepływu użytkownika, wyświetlając użytkownikowi stronę bloku. Na stronie bloku zostanie wyświetlona userMessage
wartość podana przez interfejs API.
Zobacz przykład odpowiedzi blokującej.
Przed utworzeniem użytkownika
Łącznik interfejsu API w tym kroku w procesie rejestracji jest wywoływany po stronie kolekcji atrybutów, jeśli został uwzględniony. Ten krok jest zawsze wywoływany przed utworzeniem konta użytkownika w identyfikatorze Entra firmy Microsoft.
Przykładowe żądanie wysłane do interfejsu API w tym kroku
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [ // Sent for Google, Facebook, and Email One Time Passcode identity providers
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"surname":"Smith",
"jobTitle":"Supplier",
"streetAddress":"1000 Microsoft Way",
"city":"Seattle",
"postalCode": "12345",
"state":"Washington",
"country":"United States",
"extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
"extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
"ui_locales":"en-US"
}
Dokładne oświadczenia wysyłane do interfejsu API zależą od tego, które informacje są zbierane od użytkownika lub są dostarczane przez dostawcę tożsamości.
W tym kroku oczekiwano typów odpowiedzi z internetowego interfejsu API
Gdy internetowy interfejs API odbiera żądanie HTTP z identyfikatora Entra firmy Microsoft podczas przepływu użytkownika, może zwrócić następujące odpowiedzi:
- Odpowiedź kontynuacji
- Odpowiedź blokująca
- Odpowiedź na walidację
Odpowiedź kontynuacji
Odpowiedź kontynuacji wskazuje, że przepływ użytkownika powinien przejść do następnego kroku: utworzyć użytkownika w katalogu.
W odpowiedzi kontynuacji interfejs API może zwracać oświadczenia. Jeśli oświadczenie jest zwracane przez interfejs API, oświadczenie wykonuje następujące czynności:
- Zastępuje wszystkie wartości, które zostały już przypisane do oświadczenia ze strony kolekcji atrybutów.
Zobacz przykład odpowiedzi kontynuacji.
Odpowiedź blokująca
Blokująca odpowiedź kończy przepływ użytkownika. Interfejs API może celowo wydać go, aby zatrzymać kontynuację przepływu użytkownika, wyświetlając użytkownikowi stronę bloku. Na stronie bloku zostanie wyświetlona userMessage
wartość podana przez interfejs API.
Zobacz przykład odpowiedzi blokującej.
Odpowiedź na błąd walidacji
Gdy interfejs API odpowie z odpowiedzią na błąd weryfikacji, przepływ użytkownika pozostaje na stronie kolekcji atrybutów i userMessage
jest wyświetlany użytkownikowi. Użytkownik może następnie edytować i ponownie przesłać formularz. Tego typu odpowiedzi można użyć do weryfikacji danych wejściowych.
Zobacz przykład odpowiedzi na błąd weryfikacji.
Przykładowe odpowiedzi
Przykład odpowiedzi kontynuacji
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "Continue",
"postalCode": "12349", // return claim
"extension_<extensions-app-id>_CustomAttribute": "value" // return claim
}
Parametr | Type | Wymagania | Opis |
---|---|---|---|
version | Ciąg | Tak | Wersja interfejsu API. |
action | String | Tak | Wartość musi mieć wartość Continue . |
<builtInUserAttribute> | <typ-atrybutu> | Nie. | Wartości mogą być przechowywane w katalogu, jeśli zostały wybrane jako oświadczenie do odbierania w konfiguracji łącznika interfejsu API i atrybuty użytkownika dla przepływu użytkownika. Wartości mogą być zwracane w tokenie, jeśli wybrano je jako oświadczenie aplikacji. |
<extension_{extensions-app-id}_CustomAttribute> | <typ-atrybutu> | Nie. | Oświadczenie nie musi zawierać _<extensions-app-id>_ elementu , jest opcjonalne. Zwrócone wartości mogą zastępować wartości zebrane od użytkownika. |
Przykład odpowiedzi blokującej
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "ShowBlockPage",
"userMessage": "There was an error with your request. Please try again or contact support.",
}
Parametr | Type | Wymagania | Opis |
---|---|---|---|
version | Ciąg | Tak | Wersja interfejsu API. |
action | String | Tak | Wartość musi być ShowBlockPage |
userMessage | String | Tak | Komunikat wyświetlany użytkownikowi. |
Środowisko użytkownika końcowego z blokowaniem odpowiedzi
Przykład odpowiedzi na błąd weryfikacji
HTTP/1.1 400 Bad Request
Content-type: application/json
{
"version": "1.0.0",
"status": 400,
"action": "ValidationError",
"userMessage": "Please enter a valid Postal Code.",
}
Parametr | Type | Wymagania | Opis |
---|---|---|---|
version | Ciąg | Tak | Wersja interfejsu API. |
action | String | Tak | Wartość musi mieć wartość ValidationError . |
status | Liczba całkowita/ ciąg | Tak | Musi być wartością 400 lub "400" w przypadku odpowiedzi ValidationError. |
userMessage | String | Tak | Komunikat wyświetlany użytkownikowi. |
Uwaga
Kod stanu HTTP musi być "400" oprócz wartości "status" w treści odpowiedzi.
Środowisko użytkownika końcowego z odpowiedzią na błąd weryfikacji
Najlepsze rozwiązania i sposoby rozwiązywania problemów
Korzystanie z funkcji chmury bezserwerowej
Funkcje bezserwerowe, takie jak wyzwalacze HTTP w usłudze Azure Functions, umożliwiają tworzenie punktów końcowych interfejsu API do użycia z łącznikiem interfejsu API. Możesz użyć funkcji chmury bezserwerowej, aby na przykład wykonać logikę walidacji i ograniczyć rejestrację do określonych domen poczty e-mail. Funkcja chmury bezserwerowej może również wywoływać i wywoływać inne internetowe interfejsy API, magazyny danych i inne usługi w chmurze w przypadku złożonych scenariuszy.
Najlepsze rozwiązania
Upewnij się, że:
- Twój interfejs API śledzi kontrakty żądań interfejsu API i odpowiedzi zgodnie z powyższym opisem.
- Adres URL punktu końcowego łącznika interfejsu API wskazuje prawidłowy punkt końcowy interfejsu API.
- Interfejs API jawnie sprawdza wartości null odebranych oświadczeń, od których zależy.
- Interfejs API implementuje metodę uwierzytelniania opisaną w temacie Zabezpieczanie łącznika interfejsu API.
- Interfejs API reaguje tak szybko, jak to możliwe, aby zapewnić płynne środowisko użytkownika.
- Identyfikator Entra firmy Microsoft czeka maksymalnie 20 sekund na odebranie odpowiedzi. Jeśli żadna z nich nie zostanie odebrana, spowoduje to jeszcze jedną próbę (ponów próbę) podczas wywoływania interfejsu API.
- Jeśli korzystasz z funkcji bezserwerowej lub skalowalnej usługi internetowej, użyj planu hostingu, który utrzymuje interfejs API "obudzić" lub "ciepły" w środowisku produkcyjnym. W przypadku usługi Azure Functions zalecamy użycie co najmniej planu Premium.
- Zapewnij wysoką dostępność interfejsu API.
- Monitorowanie i optymalizowanie wydajności podrzędnych interfejsów API, baz danych lub innych zależności interfejsu API.
- Punkty końcowe muszą być zgodne z wymaganiami firmy Microsoft dotyczącymi protokołu TLS i zabezpieczeń szyfrowania. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące protokołu TLS i pakietu szyfrowania.
Korzystanie z rejestrowania
Ogólnie rzecz biorąc, warto używać narzędzi rejestrowania włączonych przez usługę internetowego interfejsu API, takich jak application insights, do monitorowania interfejsu API pod kątem nieoczekiwanych kodów błędów, wyjątków i niskiej wydajności.
- Monitoruj kody stanu HTTP, które nie są http 200 lub 400.
- Kod stanu HTTP 401 lub 403 zwykle wskazuje, że występuje problem z uwierzytelnianiem. Dokładnie sprawdź warstwę uwierzytelniania interfejsu API i odpowiednią konfigurację w łączniku interfejsu API.
- W razie potrzeby użyj bardziej agresywnych poziomów rejestrowania (na przykład "ślad" lub "debuguj").
- Monitoruj interfejs API pod kątem długich czasów odpowiedzi.
Następne kroki
- Dowiedz się, jak dodać niestandardowy przepływ pracy zatwierdzania do samoobsługowej rejestracji
- Rozpocznij pracę z naszymi przykładami z przewodnika Szybki start.