Udostępnij za pośrednictwem


Definiowanie profilu technicznego firmy Microsoft Entra w zasadach niestandardowych usługi Azure Active Directory B2C

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.

Usługa Azure Active Directory B2C (Azure AD B2C) zapewnia obsługę zarządzania użytkownikami firmy Microsoft Entra. W tym artykule opisano specyfikę profilu technicznego na potrzeby interakcji z dostawcą oświadczeń, który obsługuje ten standardowy protokół.

Protokół

Atrybut Name elementu Protocol musi być ustawiony na Proprietary. Atrybut programu obsługi musi zawierać w pełni kwalifikowaną nazwę zestawu Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullprocedury obsługi protokołu .

Następujące niestandardowe profile techniczne pakietu startowego zasad firmy Microsoft obejmują profil techniczny AAD-Common . Profile techniczne firmy Microsoft Entra nie określają protokołu, ponieważ protokół jest skonfigurowany w profilu technicznym AAD-Common :

  • AAD-UserReadUsingAlternativeSecurityId i AAD-UserReadUsingAlternativeSecurityId-NoError — wyszukaj konto społecznościowe w katalogu.
  • AAD-UserWriteUsingAlternativeSecurityId — utwórz nowe konto społecznościowe.
  • AAD-UserReadUsingEmailAddress — wyszukaj konto lokalne w katalogu.
  • AAD-UserWriteUsingLogonEmail — utwórz nowe konto lokalne.
  • AAD-UserWritePasswordUsingObjectId — aktualizowanie hasła konta lokalnego.
  • AAD-UserWriteProfileUsingObjectId — aktualizowanie profilu użytkownika konta lokalnego lub społecznościowego.
  • AAD-UserReadUsingObjectId — odczyt profilu użytkownika konta lokalnego lub społecznościowego.
  • AAD-UserWrite Telefon NumberUsingObjectId — zapis numeru telefonu usługi MFA konta lokalnego lub społecznościowego

W poniższym przykładzie przedstawiono profil techniczny usługi 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" />

  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>

  <!-- We need this here to suppress the SelfAsserted provider from invoking SSO on validation profiles. -->
  <IncludeInSso>false</IncludeInSso>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

InputClaims

Element InputClaims zawiera oświadczenie, które służy do wyszukiwania konta w katalogu lub tworzenia nowego. W kolekcji oświadczeń wejściowych musi znajdować się dokładnie jeden element InputClaim dla wszystkich profilów technicznych firmy Microsoft Entra. Może być konieczne zamapowanie nazwy oświadczenia zdefiniowanego w zasadach na nazwę zdefiniowaną w identyfikatorze Entra firmy Microsoft.

Aby odczytać, zaktualizować lub usunąć istniejące konto użytkownika, oświadczenie wejściowe jest kluczem, który jednoznacznie identyfikuje konto w katalogu Microsoft Entra. Na przykład objectId, userPrincipalName, signInNames.emailAddress, signInNames.userName lub alternativeSecurityId.

Aby utworzyć nowe konto użytkownika, oświadczenie wejściowe jest kluczem, który jednoznacznie identyfikuje lokalne lub federacyjne konto. Na przykład konto lokalne: signInNames.emailAddress lub signInNames.userName. W przypadku konta federacyjnego: alternativeSecurityId.

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

OutputClaims

Element OutputClaims zawiera listę oświadczeń zwróconych przez profil techniczny firmy Microsoft Entra. Może być konieczne zamapowanie nazwy oświadczenia zdefiniowanego w zasadach na nazwę zdefiniowaną w identyfikatorze Entra firmy Microsoft. Możesz również uwzględnić oświadczenia, które nie są zwracane przez identyfikator Entra firmy Microsoft, o ile ustawisz DefaultValue atrybut.

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation , które są używane do modyfikowania oświadczeń wyjściowych lub generowania nowych.

Na przykład profil techniczny AAD-UserWriteUsingLogonEmail tworzy konto lokalne i zwraca następujące oświadczenia:

  • objectId, który jest identyfikatorem nowego konta
  • newUser, który wskazuje, czy użytkownik jest nowym użytkownikiem
  • authenticationSource, która ustawia uwierzytelnianie na localAccountAuthentication
  • userPrincipalName, czyli główna nazwa użytkownika nowego konta
  • signInNames.emailAddress, czyli nazwa logowania konta, podobna do oświadczenia wejściowego wiadomości e-mail
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="objectId" />
  <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
  <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>

Utrwalone odzyskiwanie

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

Profil techniczny AAD-UserWriteUsingLogonEmail, który tworzy nowe konto lokalne, utrzymuje następujące oświadczenia:

  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
    <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

    <!-- Optional claims. -->
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>

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

Wymagania dotyczące operacji

  • W torbie oświadczeń musi znajdować się dokładnie jeden element InputClaim dla wszystkich profilów technicznych firmy Microsoft Entra.
  • W artykule dotyczącym atrybutów profilu użytkownika opisano obsługiwane atrybuty profilu użytkownika usługi Azure AD B2C, których można używać w oświadczeniach wejściowych, oświadczeniach wyjściowych i utrwałych oświadczeniach.
  • Jeśli operacja ma wartość Write lub DeleteClaims, musi być również wyświetlana w elemecie PersistedClaims .
  • Wartość oświadczenia userPrincipalName musi być w formacie user@tenant.onmicrosoft.com.
  • Oświadczenie displayName jest wymagane i nie może być pustym ciągiem.

Operacje profilu technicznego firmy Microsoft Entra

Odczyt

Operacja Odczytu odczytuje dane dotyczące pojedynczego konta użytkownika. Następujący profil techniczny odczytuje dane dotyczące konta użytkownika przy użyciu identyfikatora objectId użytkownika:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims>

    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />

    <!-- Optional claims -->
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Zapis

Operacja zapisu tworzy lub aktualizuje pojedyncze konto użytkownika. Następujący profil techniczny tworzy nowe konto społecznościowe:

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />

    <!-- Optional claims -->
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

DeleteClaims

Operacja DeleteClaims czyści informacje z podanej listy oświadczeń. Następujący profil techniczny usuwa oświadczenia:

<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaims</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber" />
  </PersistedClaims>
  <OutputClaims />
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

DeleteClaimsPrincipal

Operacja DeleteClaimsPrincipal usuwa pojedyncze konto użytkownika z katalogu. Następujący profil techniczny usuwa konto użytkownika z katalogu przy użyciu głównej nazwy użytkownika:

<TechnicalProfile Id="AAD-DeleteUserUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Poniższy profil techniczny usuwa konto użytkownika społecznościowego przy użyciu identyfikatora alternativeSecurityId:

<TechnicalProfile Id="AAD-DeleteUserUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Metadane

Atrybut Wymagania opis
Operation Tak Operacja do wykonania. Możliwe wartości: Read, , DeleteClaimsWritelub DeleteClaimsPrincipal.
RaiseErrorIfClaimsPrincipalDoesNotExist Nie. Zgłoś błąd, jeśli obiekt użytkownika nie istnieje w katalogu. Możliwe wartości: true lub false.
RaiseErrorIfClaimsPrincipalAlreadyExists Nie. Zgłoś błąd, jeśli obiekt użytkownika już istnieje. Możliwe wartości: true lub false. Te metadane mają zastosowanie tylko do operacji zapisu.
ApplicationObjectId Nie. Identyfikator obiektu aplikacji dla atrybutów rozszerzenia. Wartość: ObjectId aplikacji. Aby uzyskać więcej informacji, zobacz Używanie atrybutów niestandardowych.
ClientId Nie. Identyfikator klienta na potrzeby uzyskiwania dostępu do dzierżawy jako innej firmy. Aby uzyskać więcej informacji, zobacz Używanie atrybutów niestandardowych w zasadach edycji profilu niestandardowego
IncludeClaimResolvingInClaimsHandling Nie. W przypadku oświadczeń wejściowych i wyjściowych określa, czy rozwiązanie oświadczeń jest zawarte w profilu technicznym. Możliwe wartości: truelub false (wartość domyślna). Jeśli chcesz użyć funkcji rozpoznawania oświadczeń w profilu technicznym, ustaw tę opcję na truewartość .

Elementy interfejsu użytkownika

Następujące ustawienia mogą służyć do konfigurowania komunikatu o błędzie wyświetlanego po awarii. Metadane należy skonfigurować w profilu technicznym asertywnego. Komunikaty o błędach mogą być zlokalizowane.

Atrybut Wymagania opis
UserMessageIfClaimsPrincipalAlreadyExists Nie. Jeśli ma zostać zgłoszony błąd (zobacz Opis atrybutu RaiseErrorIfClaimsPrincipalAlreadyExists), określ komunikat wyświetlany użytkownikowi, jeśli obiekt użytkownika już istnieje.
UserMessageIfClaimsPrincipalDoesNotExist Nie. Jeśli ma zostać zgłoszony błąd (zobacz opis atrybutu RaiseErrorIfClaimsPrincipalDoesNotExist), określ komunikat wyświetlany użytkownikowi, jeśli obiekt użytkownika nie istnieje.

Następne kroki

Zobacz następujący artykuł, na przykład użycia profilu technicznego firmy Microsoft Entra: