Profile techniczne

Uwaga

W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy używanie wbudowanych przepływów użytkownika. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.

Profil techniczny zapewnia platformę z wbudowanym mechanizmem komunikowania się z różnymi typami stron. Profile techniczne służą do komunikowania się z dzierżawą usługi Azure Active Directory B2C (Azure AD B2C) w celu utworzenia użytkownika lub odczytania profilu użytkownika. Profil techniczny można samodzielnie potwierdzić, aby umożliwić interakcję z użytkownikiem. Na przykład profil techniczny może zbierać poświadczenia użytkownika w celu zalogowania się, a następnie renderować stronę rejestracji lub stronę resetowania hasła.

Typy profilów technicznych

Profil techniczny umożliwia korzystanie z następujących typów scenariuszy:

  • Szczegółowe informacje aplikacji: wysyła dane zdarzenia do Szczegółowe informacje aplikacji.
  • Microsoft Entra ID: zapewnia obsługę zarządzania użytkownikami usługi Azure AD B2C.
  • Uwierzytelnianie wieloskładnikowe firmy Microsoft: zapewnia obsługę weryfikowania numeru telefonu przy użyciu uwierzytelniania wieloskładnikowego firmy Microsoft.
  • Przekształcanie oświadczeń: wywołuje przekształcenia oświadczeń wyjściowych, aby manipulować wartościami oświadczeń, weryfikować oświadczenia lub ustawiać wartości domyślne dla zestawu oświadczeń wyjściowych.
  • Wskazówka tokenu identyfikatora: weryfikuje podpis tokenu id_token_hint JWT, nazwę wystawcy i odbiorców tokenu oraz wyodrębnia oświadczenie z tokenu przychodzącego.
  • Wystawca tokenu JWT: emituje token JWT zwrócony z powrotem do aplikacji jednostki uzależnionej.
  • OAuth1: federacja z dowolnym dostawcą tożsamości protokołu OAuth 1.0.
  • OAuth2: federacja z dowolnym dostawcą tożsamości protokołu OAuth 2.0.
  • Jednorazowe hasło: zapewnia obsługę zarządzania generowaniem i weryfikacją jednorazowego hasła.
  • OpenID Połączenie: Federacja z dowolnym dostawcą tożsamości protokołu OpenID Połączenie.
  • Telefon factor: obsługuje rejestrowanie i weryfikowanie numerów telefonów.
  • Dostawca RESTful: wywołuje usługi interfejsu API REST, takie jak weryfikowanie danych wejściowych użytkownika, wzbogacanie danych użytkownika lub integrowanie z aplikacjami biznesowymi.
  • Dostawca tożsamości SAML: federacja z dowolnym dostawcą tożsamości protokołu SAML.
  • Wystawca tokenu SAML: emituje token SAML zwrócony z powrotem do aplikacji jednostki uzależnionej.
  • Self-asserted: Wchodzi w interakcję z użytkownikiem. Na przykład zbiera poświadczenia użytkownika w celu zalogowania się, renderowania strony rejestracji lub resetowania hasła.
  • Zarządzanie sesjami: obsługuje różne typy sesji.

Przepływ profilu technicznego

Wszystkie typy profilów technicznych mają taką samą koncepcję. Zaczynają się od odczytania oświadczeń wejściowych i uruchomienia przekształceń oświadczeń. Następnie komunikują się ze skonfigurowaną stroną, taką jak dostawca tożsamości, interfejs API REST lub usługi katalogowe Firmy Microsoft Entra. Po zakończeniu procesu profil techniczny zwraca oświadczenia wyjściowe i może uruchamiać przekształcenia oświadczeń wyjściowych. Na poniższym diagramie przedstawiono sposób przetwarzania przekształceń i mapowań, do których odwołuje się profil techniczny. Po wykonaniu przekształcenia oświadczeń oświadczenia oświadczenia są natychmiast przechowywane w torbie oświadczeń, niezależnie od strony, z którymi współpracuje profil techniczny.

Diagram that illustrates the technical profile flow.

  1. Zarządzanie sesjami logowania jednokrotnego: przywraca stan sesji profilu technicznego przy użyciu zarządzania sesjami logowania jednokrotnego.
  2. Przekształcanie oświadczeń wejściowych: przed rozpoczęciem profilu technicznego usługa Azure AD B2C uruchamia transformację oświadczeń wejściowych.
  3. Oświadczenia wejściowe: oświadczenia są pobierane z torby oświadczeń, które są używane dla profilu technicznego.
  4. Wykonanie profilu technicznego: profil techniczny wymienia oświadczenia ze skonfigurowaną stroną. Na przykład: .
    • Przekierowuje użytkownika do dostawcy tożsamości, aby ukończyć logowanie. Po pomyślnym zalogowaniu użytkownik wróci, a wykonanie profilu technicznego będzie kontynuowane.
    • Wywołuje interfejs API REST podczas wysyłania parametrów jako InputClaims i pobierania informacji z powrotem jako OutputClaims.
    • Tworzy lub aktualizuje konto użytkownika.
    • Wysyła i weryfikuje komunikat tekstowy uwierzytelniania wieloskładnikowego.
  5. Profile techniczne weryfikacji: profil techniczny z własnym potwierdzeniem może wywołać profile techniczne weryfikacji w celu zweryfikowania profilowanych danych przez użytkownika. Tylko własne profile techniczne mogą używać profilów technicznych weryfikacji.
  6. Oświadczenia wyjściowe: Oświadczenia są zwracane z powrotem do torby oświadczeń. Te oświadczenia można użyć w następnym kroku aranżacji lub przekształcenia oświadczeń wyjściowych.
  7. Przekształcenia oświadczeń wyjściowych: po zakończeniu profilu technicznego usługa Azure AD B2C uruchamia przekształcenia oświadczeń wyjściowych.
  8. Zarządzanie sesjami logowania jednokrotnego: utrwala dane profilu technicznego w sesji przy użyciu zarządzania sesjami logowania jednokrotnego.

Element TechnicalProfiles zawiera zestaw profilów technicznych obsługiwanych przez dostawcę oświadczeń. Każdy dostawca oświadczeń musi mieć co najmniej jeden profil techniczny. Profil techniczny określa punkty końcowe i protokoły wymagane do komunikowania się z dostawcą oświadczeń. Dostawca oświadczeń może mieć wiele profilów technicznych.

<ClaimsProvider>
  <DisplayName>Display name</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Technical profile identifier">
      <DisplayName>Display name of technical profile</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        ...
      </Metadata>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Element TechnicalProfile zawiera następujący atrybut:

Atrybut Wymagania Opis
Id Tak Unikatowy identyfikator profilu technicznego. Do profilu technicznego można odwoływać się przy użyciu tego identyfikatora z innych elementów w pliku zasad. Przykłady to OrchestrationSteps i ValidationTechnicalProfile.

Element TechnicalProfile zawiera następujące elementy:

Element Wystąpień opis
Domain 0:1 Nazwa domeny profilu technicznego. Jeśli na przykład profil techniczny określa dostawcę tożsamości serwisu Facebook, nazwa domeny jest Facebook.com.
DisplayName 1:1 Nazwa wyświetlana profilu technicznego.
opis 0:1 Opis profilu technicznego.
Protokół 1:1 Protokół używany do komunikacji z drugą stroną.
Metadane 0:1 Zestaw kluczy i wartości, które steruje zachowaniem profilu technicznego.
InputTokenFormat 0:1 Format tokenu wejściowego. Możliwe wartości to JSON, JWT, SAML11lub SAML2. Wartość JWT reprezentuje token internetowy JSON zgodnie ze specyfikacją IETF. Wartość SAML11 reprezentuje token zabezpieczający SAML 1.1 na specyfikację OASIS. Wartość SAML2 reprezentuje token zabezpieczający SAML 2.0 na specyfikację OASIS.
OutputTokenFormat 0:1 Format tokenu wyjściowego. Możliwe wartości to JSON, JWT, SAML11lub SAML2.
Kryptograficzneklucze 0:1 Lista kluczy kryptograficznych używanych w profilu technicznym.
InputClaimsTransformations 0:1 Lista wcześniej zdefiniowanych odwołań do przekształceń oświadczeń, które należy wykonać przed wysłaniem oświadczeń do dostawcy oświadczeń lub jednostki uzależnionej.
InputClaims 0:1 Lista wcześniej zdefiniowanych odwołań do typów oświadczeń, które są traktowane jako dane wejściowe w profilu technicznym.
Utrwalone odzyskiwanie 0:1 Lista wcześniej zdefiniowanych odwołań do typów oświadczeń, które będą utrwalane przez profil techniczny.
DisplayClaims 0:1 Lista wcześniej zdefiniowanych odwołań do typów oświadczeń prezentowanych przez własny profil techniczny. Funkcja DisplayClaims jest obecnie dostępna w wersji zapoznawczej.
OutputClaims 0:1 Lista wcześniej zdefiniowanych odwołań do typów oświadczeń, które są pobierane jako dane wyjściowe w profilu technicznym.
OutputClaimsTransformations 0:1 Lista wcześniej zdefiniowanych odwołań do przekształceń oświadczeń, które powinny być wykonywane po odebraniu oświadczeń od dostawcy oświadczeń.
ValidationTechnicalProfiles 0:n Lista odwołań do innych profilów technicznych używanych przez profil techniczny do celów walidacji. Aby uzyskać więcej informacji, zobacz Profil techniczny weryfikacji.
SubjectNamingInfo 0:1 Kontroluje produkcję nazwy podmiotu w tokenach, w których nazwa podmiotu jest określona oddzielnie od oświadczeń. Przykłady to OAuth lub SAML.
IncludeInSso 0:1 Czy użycie tego profilu technicznego powinno stosować zachowanie logowania jednokrotnego dla sesji, czy zamiast tego wymaga jawnej interakcji. Ten element jest prawidłowy tylko w profilach selfAsserted używanych w profilu technicznym weryfikacji. Możliwe wartości to true (wartość domyślna) lub false.
IncludeClaimsFromTechnicalProfile 0:1 Identyfikator profilu technicznego, z którego mają zostać dodane wszystkie oświadczenia wejściowe i wyjściowe do tego profilu technicznego. Odwołany profil techniczny musi być zdefiniowany w tym samym pliku zasad.
IncludeTechnicalProfile 0:1 Identyfikator profilu technicznego, z którego chcesz dodać wszystkie dane do tego profilu technicznego.
UseTechnicalProfileForSessionManagement 0:1 Inny profil techniczny, który ma być używany do zarządzania sesjami.
EnabledForUserJourneys 0:1 Określa, czy profil techniczny jest wykonywany w podróży użytkownika.

Protokół

Element Protocol określa protokół, który ma być używany do komunikacji z drugą stroną. Element Protocol zawiera następujące atrybuty:

Atrybut Wymagania opis
Nazwa/nazwisko Tak Nazwa prawidłowego protokołu obsługiwanego przez usługę Azure AD B2C, która jest używana jako część profilu technicznego. Możliwe wartości to OAuth1, , SAML2OAuth2, OpenIdConnect, , Proprietarylub None.
Program obsługi Nie. Gdy nazwa protokołu jest ustawiona na Proprietary, określa nazwę zestawu używanego przez usługę Azure AD B2C do określenia procedury obsługi protokołu. Jeśli ustawisz atrybut Nazwa protokołu na , nie uwzględnij atrybutu programu obsługi.None

Metadane

Element Metadata zawiera odpowiednie opcje konfiguracji dla określonego protokołu. Lista obsługiwanych metadanych jest udokumentowana w odpowiedniej specyfikacji profilu technicznego. Element Metadata zawiera następujący element:

Element Wystąpień opis
Element 0:n Metadane odnoszące się do profilu technicznego. Każdy typ profilu technicznego ma inny zestaw elementów metadanych. Aby uzyskać więcej informacji, zobacz sekcję typy profilów technicznych.

Produkt

Element Item elementu Metadata zawiera następujący atrybut:

Atrybut Wymagania Opis
Klawisz Tak Klucz metadanych. Zobacz każdy typ profilu technicznego, aby uzyskać listę elementów metadanych.

Poniższy przykład ilustruje użycie metadanych istotnych dla profilu technicznego OAuth2.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <Metadata>
    <Item Key="ProviderName">facebook</Item>
    <Item Key="authorization_endpoint">https://www.facebook.com/dialog/oauth</Item>
    <Item Key="AccessTokenEndpoint">https://graph.facebook.com/oauth/access_token</Item>
    <Item Key="HttpBinding">GET</Item>
    <Item Key="UsePolicyInRedirectUri">0</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

Poniższy przykład ilustruje użycie metadanych istotnych dla profilu technicznego interfejsu API REST.

<TechnicalProfile Id="REST-Validate-Email">
  ...
  <Metadata>
    <Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item>
    <Item Key="AuthenticationType">Bearer</Item>
    <Item Key="SendClaimsIn">Body</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

Klucze kryptograficzne

Aby ustanowić zaufanie z usługami, z których się integruje, usługa Azure AD B2C przechowuje wpisy tajne i certyfikaty w postaci kluczy zasad. Podczas wykonywania profilu technicznego usługa Azure AD B2C pobiera klucze kryptograficzne z kluczy zasad usługi Azure AD B2C. Następnie usługa Azure AD B2C używa kluczy do ustanowienia zaufania lub zaszyfrowania lub podpisania tokenu. Te relacje zaufania składają się z następujących elementów:

Element CryptographicKeys zawiera następujący element:

Element Wystąpień opis
Klawisz 1:n Klucz kryptograficzny używany w tym profilu technicznym.

Key

Element Klucz zawiera następujący atrybut:

Atrybut Wymagania Opis
Id Nie. Unikatowy identyfikator określonej pary kluczy, do których odwołuje się inny element w pliku zasad.
StorageReferenceId Tak Identyfikator kontenera kluczy magazynu, do których odwołuje się inny element w pliku zasad.

Przekształcenia oświadczeń wejściowych

Element InputClaimsTransformations może zawierać kolekcję elementów przekształcania oświadczeń wejściowych, które są używane do modyfikowania oświadczeń wejściowych lub generowania nowych.

Oświadczenia wyjściowe poprzedniej transformacji oświadczeń w kolekcji przekształcania oświadczeń mogą być oświadczeniami wejściowymi kolejnej transformacji oświadczeń wejściowych. W ten sposób można mieć sekwencję przekształceń oświadczeń, które zależą od siebie nawzajem.

Element InputClaimsTransformations zawiera następujący element:

Element Wystąpień opis
InputClaimsTransformation 1:n Identyfikator przekształcenia oświadczeń, który należy wykonać przed wysłaniem oświadczeń do dostawcy oświadczeń lub jednostki uzależnionej. Przekształcanie oświadczeń może służyć do modyfikowania istniejących oświadczeńSchema lub generowania nowych.

InputClaimsTransformation

Element InputClaimsTransformation zawiera następujący atrybut:

Atrybut Wymagania opis
Identyfikator odwołania Tak Identyfikator przekształcenia oświadczeń zdefiniowany już w pliku zasad lub pliku zasad nadrzędnych.

Poniższe profile techniczne odwołują się do przekształcenia oświadczeń CreateOtherMailsFromEmail . Przekształcenie oświadczeń dodaje wartość email oświadczenia do otherMails kolekcji przed utrwalaniem danych w katalogu.

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  ...
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  ...
</TechnicalProfile>

Oświadczenia wejściowe

Element InputClaims pobiera oświadczenia z torby oświadczeń, które są używane dla profilu technicznego. Na przykład własny profil techniczny używa oświadczeń wejściowych do wstępnego wypełniania oświadczeń wyjściowych, które udostępnia użytkownik. Profil techniczny interfejsu API REST używa oświadczeń wejściowych do wysyłania parametrów wejściowych do punktu końcowego interfejsu API REST. Usługa Azure AD B2C używa oświadczenia wejściowego jako unikatowego identyfikatora do odczytywania, aktualizowania lub usuwania konta.

Element InputClaims zawiera następujący element:

Element Wystąpień opis
InputClaim 1:n Oczekiwany typ oświadczenia wejściowego.

InputClaim

Element InputClaim zawiera następujące atrybuty:

Atrybut Wymagania opis
ClaimTypeReferenceId Tak Identyfikator typu oświadczenia. Oświadczenie jest już zdefiniowane w sekcji schematu oświadczeń w pliku zasad lub pliku zasad nadrzędnych.
Defaultvalue Nie. Wartość domyślna używana do utworzenia oświadczenia, jeśli oświadczenie wskazane przez ClaimTypeReferenceId nie istnieje, aby wynikowe oświadczenie może być używane jako element InputClaim przez profil techniczny.
AlwaysUseDefaultValue Tak Wymusza użycie wartości domyślnej.
PartnerClaimType Nie. Identyfikator typu oświadczenia partnera zewnętrznego, do którego mapuje określony typ oświadczenia zasad. Jeśli atrybut PartnerClaimType nie jest określony, określony typ oświadczenia zasad jest mapowany na typ oświadczenia partnera o tej samej nazwie. Użyj tej właściwości, gdy nazwa typu oświadczenia różni się od innej strony. Przykładem jest to, że pierwsza nazwa oświadczenia to givenName, podczas gdy partner używa oświadczenia o nazwie first_name.

Wyświetlanie oświadczeń

Element DisplayClaims zawiera listę oświadczeń, które mają być prezentowane na ekranie w celu zbierania danych od użytkownika. W kolekcji oświadczeń wyświetlania można dołączyć odwołanie do typu oświadczenia lub utworzonej kontrolki wyświetlania.

  • Typ oświadczenia to odwołanie do oświadczenia, które ma być wyświetlane na ekranie.
    • Aby wymusić na użytkowniku podanie wartości dla określonego oświadczenia, ustaw wymagany atrybut elementu DisplayClaim na truewartość .
    • Aby wstępnie wypełniać wartości oświadczeń wyświetlania, użyj oświadczeń wejściowych, które zostały wcześniej opisane. Element może również zawierać wartość domyślną.
    • Element ClaimType w kolekcji DisplayClaims musi ustawić element UserInputType na dowolny typ danych wejściowych użytkownika obsługiwany przez usługę Azure AD B2C. Przykłady to TextBox lub DropdownSingleSelect.
  • Kontrolka wyświetlania to element interfejsu użytkownika, który ma specjalne funkcje i współdziała z usługą zaplecza usługi Azure AD B2C. Umożliwia on użytkownikowi wykonywanie akcji na stronie, które wywołują profil techniczny weryfikacji na zapleczu. Przykładem jest weryfikacja adresu e-mail, numeru telefonu lub numeru lojalności klienta.

Kolejność elementów w funkcji DisplayClaims określa kolejność renderowania oświadczeń na ekranie przez usługę Azure AD B2C.

Element DisplayClaims zawiera następujący element:

Element Wystąpień opis
Displayclaim 1:n Oczekiwany typ oświadczenia wejściowego.

Displayclaim

Element DisplayClaim zawiera następujące atrybuty:

Atrybut Wymagania opis
ClaimTypeReferenceId Nie. Identyfikator typu oświadczenia już zdefiniowany w sekcji ClaimsSchema w pliku zasad lub pliku zasad nadrzędnych.
DisplayControlReferenceId Nie. Identyfikator kontrolki wyświetlania zdefiniowanej już w sekcji ClaimsSchema w pliku zasad lub pliku zasad nadrzędnych.
Wymagania Nie. Wskazuje, czy oświadczenie wyświetlania jest wymagane.

W poniższym przykładzie pokazano użycie oświadczeń wyświetlania i wyświetlania kontrolek w profilu technicznym z własnym potwierdzeniem.

Screenshot that shows a self-asserted technical profile with display claims.

W następującym profilu technicznym:

  • Pierwsze oświadczenie wyświetlania odwołuje się do kontrolki wyświetlania emailVerificationControl , która zbiera i weryfikuje adres e-mail.
  • Piąte oświadczenie wyświetlania odwołuje się do kontrolki wyświetlania phoneVerificationControl , która zbiera i weryfikuje numer telefonu.
  • Inne oświadczenia wyświetlane to elementy ClaimType, które mają być zbierane od użytkownika.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Utrwalone oświadczenia

Element PersistedClaims zawiera wszystkie wartości, które powinny być utrwalane przez profil techniczny Identyfikator Entra firmy Microsoft z możliwymi informacjami o mapowaniu między typem oświadczenia zdefiniowanym już w sekcji ClaimsSchema w zasadach i nazwie atrybutu Microsoft Entra.

Nazwa oświadczenia jest nazwą atrybutu Microsoft Entra, chyba że określono atrybut PartnerClaimType, który zawiera nazwę atrybutu Entra firmy Microsoft.

Element PersistedClaims zawiera następujący element:

Element Wystąpień opis
Utrwalone odzyskiwanie 1:n Typ oświadczenia do utrwalania.

Utrwalone odzyskiwanie

Element PersistedClaim zawiera następujące atrybuty:

Atrybut Wymagania opis
ClaimTypeReferenceId Tak Identyfikator typu oświadczenia już zdefiniowany w sekcji ClaimsSchema w pliku zasad lub pliku zasad nadrzędnych.
Defaultvalue Nie. Wartość domyślna używana do utworzenia oświadczenia, jeśli oświadczenie nie istnieje.
PartnerClaimType Nie. Identyfikator typu oświadczenia partnera zewnętrznego, do którego mapuje określony typ oświadczenia zasad. Jeśli atrybut PartnerClaimType nie jest określony, określony typ oświadczenia zasad jest mapowany na typ oświadczenia partnera o tej samej nazwie. Użyj tej właściwości, gdy nazwa typu oświadczenia różni się od innej strony. Przykładem jest to, że pierwsza nazwa oświadczenia to givenName, podczas gdy partner używa oświadczenia o nazwie first_name.

W poniższym przykładzie profil techniczny AAD-UserWriteUsingLogonEmail lub pakiet startowy, który tworzy nowe konto lokalne, utrwala następujące oświadczenia:

<PersistedClaims>
  <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
  <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
  <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
  <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />
  <PersistedClaim ClaimTypeReferenceId="givenName" />
  <PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>

Oświadczenia wyjściowe

Element OutputClaims jest kolekcją oświadczeń, które są zwracane z powrotem do torby oświadczeń po zakończeniu profilu technicznego. Te oświadczenia można użyć w następnym kroku aranżacji lub przekształcenia oświadczeń wyjściowych. Element OutputClaims zawiera następujący element:

Element Wystąpień opis
OutputClaim 1:n Oczekiwany typ oświadczenia wyjściowego.

OutputClaim

Element OutputClaim zawiera następujące atrybuty:

Atrybut Wymagania opis
ClaimTypeReferenceId Tak Identyfikator typu oświadczenia już zdefiniowany w sekcji ClaimsSchema w pliku zasad lub pliku zasad nadrzędnych.
Defaultvalue Nie. Wartość domyślna używana do utworzenia oświadczenia, jeśli oświadczenie nie istnieje.
AlwaysUseDefaultValue Nie. Wymusza użycie wartości domyślnej.
PartnerClaimType Nie. Identyfikator typu oświadczenia partnera zewnętrznego, do którego mapuje określony typ oświadczenia zasad. Jeśli atrybut typu oświadczenia partnera nie jest określony, określony typ oświadczenia zasad jest mapowany na typ oświadczenia partnera o tej samej nazwie. Użyj tej właściwości, gdy nazwa typu oświadczenia różni się od innej strony. Przykładem jest to, że pierwsza nazwa oświadczenia to givenName, podczas gdy partner używa oświadczenia o nazwie first_name.

Przekształcenia oświadczeń wyjściowych

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation . Przekształcenia oświadczeń wyjściowych są używane do modyfikowania oświadczeń wyjściowych lub generowania nowych. Po wykonaniu oświadczenia wyjściowe są umieszczane z powrotem w torbie oświadczeń. Te oświadczenia można użyć w następnym kroku aranżacji.

Oświadczenia wyjściowe poprzedniej transformacji oświadczeń w kolekcji przekształcania oświadczeń mogą być oświadczeniami wejściowymi kolejnej transformacji oświadczeń wejściowych. W ten sposób można mieć sekwencję przekształceń oświadczeń, które zależą od siebie nawzajem.

Element OutputClaimsTransformations zawiera następujący element:

Element Wystąpień opis
OutputClaimsTransformation 1:n Identyfikatory przekształceń oświadczeń, które należy wykonać przed wysłaniem jakichkolwiek oświadczeń do dostawcy oświadczeń lub jednostki uzależnionej. Przekształcanie oświadczeń może służyć do modyfikowania istniejących oświadczeńSchema lub generowania nowych.

OutputClaimsTransformation

Element OutputClaimsTransformation zawiera następujący atrybut:

Atrybut Wymagania opis
Identyfikator odwołania Tak Identyfikator przekształcenia oświadczeń zdefiniowany już w pliku zasad lub pliku zasad nadrzędnych.

Poniższy profil techniczny odwołuje się do przekształcenia claims AssertAccountEnabledIsTrue w celu oceny, czy konto jest włączone, czy nie po odczytaniu accountEnabled oświadczenia z katalogu.

<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
  ...
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="accountEnabled" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
  </OutputClaimsTransformations>
  ...
</TechnicalProfile>

Profile techniczne weryfikacji

Profil techniczny weryfikacji jest używany do weryfikowania oświadczeń wyjściowych w profilu technicznym samozwańczego. Profil techniczny weryfikacji to zwykły profil techniczny z dowolnego protokołu, takiego jak Microsoft Entra ID lub interfejs API REST. Profil techniczny weryfikacji zwraca oświadczenia wyjściowe lub zwraca kod błędu. Komunikat o błędzie jest renderowany dla użytkownika na ekranie, co umożliwia użytkownikowi ponowienie próby.

Na poniższym diagramie pokazano, jak usługa Azure AD B2C używa profilu technicznego weryfikacji do weryfikowania poświadczeń użytkownika.

Diagram that shows a validation technical profile flow.

Element ValidationTechnicalProfiles zawiera następujący element:

Element Wystąpień opis
ValidationTechnicalProfile 1:n Identyfikatory profilów technicznych, które są używane, weryfikują niektóre lub wszystkie oświadczenia wyjściowe odnoszące się do profilu technicznego. Wszystkie oświadczenia wejściowe przywołytowanego profilu technicznego muszą być wyświetlane w oświadczeniach wyjściowych odwołującego się do profilu technicznego.

ValidationTechnicalProfile

Element ValidationTechnicalProfile zawiera następujący atrybut:

Atrybut Wymagania opis
Identyfikator odwołania Tak Identyfikator profilu technicznego już zdefiniowany w pliku zasad lub pliku zasad nadrzędnych.

SubjectNamingInfo

Element SubjectNamingInfo definiuje nazwę podmiotu używaną w tokenach w zasadach jednostki uzależnionej. Element SubjectNamingInfo zawiera następujący atrybut:

Atrybut Wymagania opis
Claimtype Tak Identyfikator typu oświadczenia już zdefiniowany w sekcji ClaimsSchema w pliku zasad.

Uwzględnij profil techniczny

Profil techniczny może zawierać inny profil techniczny, aby zmienić ustawienia lub dodać nowe funkcje. Element IncludeTechnicalProfile jest odwołaniem do wspólnego profilu technicznego, z którego pochodzi profil techniczny. Aby zmniejszyć nadmiarowość i złożoność elementów zasad, należy użyć dołączania w przypadku wielu profilów technicznych, które współużytkują podstawowe elementy. Użyj wspólnego profilu technicznego z typowym zestawem konfiguracji wraz z określonymi profilami technicznymi zadań, które obejmują wspólny profil techniczny.

Załóżmy, że masz profil techniczny interfejsu API REST z jednym punktem końcowym, w którym musisz wysyłać różne zestawy oświadczeń dla różnych scenariuszy. Utwórz wspólny profil techniczny z funkcją udostępnioną, taką jak identyfikator URI punktu końcowego interfejsu API REST, metadane, typ uwierzytelniania i klucze kryptograficzne. Utwórz określone profile techniczne zadań, które obejmują wspólny profil techniczny. Następnie dodaj oświadczenia wejściowe i wyjściowe lub zastąp identyfikator URI punktu końcowego interfejsu API REST odpowiedni dla tego profilu technicznego.

Element IncludeTechnicalProfile zawiera następujący atrybut:

Atrybut Wymagania opis
Identyfikator odwołania Tak Identyfikator profilu technicznego już zdefiniowany w pliku zasad lub pliku zasad nadrzędnych.

Poniższy przykład ilustruje użycie dołączania:

  • Rest-API-Common: wspólny profil techniczny z podstawową konfiguracją.
  • REST-ValidateProfile: zawiera profil techniczny REST-API-Common i określa oświadczenia wejściowe i wyjściowe.
  • REST-UpdateProfile: zawiera profil techniczny REST-API-Common , określa oświadczenia wejściowe i zastępuje ServiceUrl metadane.
<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-API-Common">
      <DisplayName>Base REST API configuration</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="SendClaimsIn">Body</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_B2cRestClientId" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_B2cRestClientSecret" />
      </CryptographicKeys>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-ValidateProfile">
      <DisplayName>Validate the account and return promo code</DisplayName>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
        <InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="promoCode" />
      </OutputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-UpdateProfile">
      <DisplayName>Update the user profile</DisplayName>  
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/update</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Dołączanie do wielu poziomów

Profil techniczny może zawierać jeden profil techniczny. Nie ma limitu liczby poziomów dołączania. Na przykład profil techniczny AAD-UserReadUsingAlternativeSecurityId-NoError obejmuje element AAD-UserReadUsingAlternativeSecurityId. Ten profil techniczny ustawia RaiseErrorIfClaimsPrincipalDoesNotExist element metadanych na true i zgłasza błąd, jeśli konto społecznościowe nie istnieje w katalogu. AAD-UserReadUsingAlternativeSecurityId-NoError zastępuje to zachowanie i wyłącza ten komunikat o błędzie.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId-NoError">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
  </Metadata>
  <IncludeTechnicalProfile ReferenceId="AAD-UserReadUsingAlternativeSecurityId" />
</TechnicalProfile>

Element AAD-UserReadUsingAlternativeSecurityId zawiera AAD-Common profil techniczny.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">User does not exist. Please sign up before you can sign in.</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Oba elementy AAD-UserReadUsingAlternativeSecurityId-NoError i AAD-UserReadUsingAlternativeSecurityId nie określają wymaganego elementu Protocol, ponieważ został określony w profilu technicznym AAD-Common.

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...
</TechnicalProfile>

Używanie profilu technicznego do zarządzania sesjami

Element UseTechnicalProfileForSessionManagement odwołuje się do profilu technicznego sesji logowania jednokrotnego. Element UseTechnicalProfileForSessionManagement zawiera następujący atrybut:

Atrybut Wymagania opis
Identyfikator odwołania Tak Identyfikator profilu technicznego już zdefiniowany w pliku zasad lub pliku zasad nadrzędnych.

Włączone na potrzeby podróży użytkowników

Wybory ClaimsProviderS w podróży użytkownika definiują listę opcji wyboru dostawcy oświadczeń i ich kolejności. Za pomocą elementu EnabledForUserJourneys filtrujesz, który dostawca oświadczeń jest dostępny dla użytkownika. Element EnabledForUserJourneys zawiera jedną z następujących wartości:

  • Zawsze: wykonuje profil techniczny.
  • Nigdy: pomija profil techniczny.
  • OnClaimsExistence: wykonuje tylko wtedy, gdy istnieje określone oświadczenie określone w profilu technicznym.
  • OnItemExistenceInStringCollectionClaim: wykonuje tylko wtedy, gdy element istnieje w oświadczeniu kolekcji ciągów.
  • OnItemAbsenceInStringCollectionClaim: wykonuje tylko wtedy, gdy element nie istnieje w oświadczeniu kolekcji ciągów.

Użycie metody OnClaimsExistence, OnItemExistenceInStringCollectionClaim lub OnItemAbsenceInStringCollectionClaim wymaga podania następujących metadanych:

  • ClaimTypeOnWhichToEnable: określa typ oświadczenia, który ma zostać oceniony.
  • ClaimValueOnWhichToEnable: określa wartość, która ma być porównywana.

Następujący profil techniczny jest wykonywany tylko wtedy, gdy kolekcja ciągów identityProviders zawiera wartość facebook.com:

<TechnicalProfile Id="UnLink-Facebook-OAUTH">
  <DisplayName>Unlink Facebook</DisplayName>
...
    <Metadata>
      <Item Key="ClaimTypeOnWhichToEnable">identityProviders</Item>
      <Item Key="ClaimValueOnWhichToEnable">facebook.com</Item>
    </Metadata>
...
  <EnabledForUserJourneys>OnItemExistenceInStringCollectionClaim</EnabledForUserJourneys>
</TechnicalProfile>