RelyingParty

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żytkowników. 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.

Element RelyingParty określa podróż użytkownika w celu wymuszenia bieżącego żądania do usługi Azure Active Directory B2C (Azure AD B2C). Określa także listę oświadczeń, które są wymagane przez aplikację jednostki zależnej (RP) jako część wystawionego tokenu. Aplikacja rp, taka jak aplikacja internetowa, mobilna lub klasyczna, wywołuje plik zasad rp. Plik zasad rp wykonuje określone zadanie, takie jak logowanie, resetowanie hasła lub edytowanie profilu. Wiele aplikacji może używać tych samych zasad rp, a jedna aplikacja może używać wielu zasad. Wszystkie aplikacje rp otrzymują ten sam token z oświadczeniami, a użytkownik przechodzi przez tę samą podróż użytkownika.

Poniższy przykład przedstawia element RelyingParty w pliku zasad B2C_1A_signup_signin :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="https://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="your-tenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://your-tenant.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>your-tenant.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="7"/>
      <SessionExpiryType>Rolling</SessionExpiryType>
      <SessionExpiryInSeconds>900</SessionExpiryInSeconds>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="your-application-insights-key" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <ContentDefinitionParameters>
        <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
      </ContentDefinitionParameters>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Description>The policy profile</Description>
      <Protocol Name="OpenIdConnect" />
      <Metadata>collection of key/value pairs of data</Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="loyaltyNumber" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
  ...

Opcjonalny element RelyingParty zawiera następujące elementy:

Element Wystąpień Opis
DefaultUserJourney 1:1 Domyślna podróż użytkownika dla aplikacji RP.
Punkty końcowe 0:1 Lista punktów końcowych. Aby uzyskać więcej informacji, zobacz Punkt końcowy UserInfo.
UserJourneyBehaviors 0:1 Zakres zachowań podróży użytkownika.
TechnicalProfile 1:1 Profil techniczny obsługiwany przez aplikację RP. Profil techniczny zawiera umowę dla aplikacji RP, aby skontaktować się z Azure AD B2C.

Należy utworzyć elementy podrzędne RelyingParty w kolejności przedstawionej w poprzedniej tabeli.

Punkty końcowe

Element Endpoints zawiera następujący element:

Element Wystąpień Opis
Punkt końcowy 1:1 Odwołanie do punktu końcowego.

Element Punkt końcowy zawiera następujące atrybuty:

Atrybut Wymagane Opis
Id Tak Unikatowy identyfikator punktu końcowego.
UserJourneyReferenceId Tak Identyfikator podróży użytkownika w zasadach. Aby uzyskać więcej informacji, zobacz podróże użytkowników

Poniższy przykład przedstawia jednostkę uzależnioną z punktem końcowym UserInfo:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <Endpoints>
    <Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
  </Endpoints>
  ...

DefaultUserJourney

Element DefaultUserJourney określa odwołanie do identyfikatora podróży użytkownika zdefiniowanego w zasadach Base lub Extensions. W poniższych przykładach pokazano podróż użytkownika rejestracji lub logowania określoną w elemecie RelyingParty :

zasady B2C_1A_signup_signin :

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn">
  ...

B2C_1A_TrustFrameWorkBase lub B2C_1A_TrustFrameworkExtensionPolicy:

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
  ...

Element DefaultUserJourney zawiera następujący atrybut:

Atrybut Wymagane Opis
Identyfikator odwołania Tak Identyfikator podróży użytkownika w zasadach. Aby uzyskać więcej informacji, zobacz podróże użytkowników

UserJourneyBehaviors

Element UserJourneyBehaviors zawiera następujące elementy:

Element Wystąpień Opis
SingleSignOn 0:1 Zakres zachowania sesji logowania jednokrotnego w podróży użytkownika.
SessionExpiryType 0:1 Zachowanie uwierzytelniania sesji. Możliwe wartości: Rolling lub Absolute. Wartość (wartość domyślna Rolling ) wskazuje, że użytkownik pozostaje zalogowany, o ile użytkownik jest stale aktywny w aplikacji. Wartość Absolute wskazuje, że użytkownik jest zmuszony do ponownego uwierzytelnienia po okresie określonym przez okres istnienia sesji aplikacji.
SessionExpiryInSeconds 0:1 Okres istnienia pliku cookie sesji usługi Azure AD B2C określony jako liczba całkowita przechowywana w przeglądarce użytkownika po pomyślnym uwierzytelnieniu. Wartość domyślna to 86 400 sekund (24 godziny). Minimum to 900 sekund (15 minut). Wartość maksymalna to 86 400 sekund (24 godziny).
JourneyInsights 0:1 Klucz instrumentacji usługi aplikacja systemu Azure Insights do użycia.
ContentDefinitionParameters 0:1 Lista par klucz-wartość do dołączenia do identyfikatora URI ładowania definicji zawartości.
PodróżFraming 0:1 Umożliwia załadowanie interfejsu użytkownika tych zasad do elementu iframe.
ScriptExecution 0:1 Obsługiwane tryby wykonywania języka JavaScript . Możliwe wartości: Allow lub Disallow (wartość domyślna).

W przypadku używania powyższych elementów należy dodać je do elementu UserJourneyBehaviors w kolejności określonej w tabeli. Na przykład element JourneyInsights musi zostać dodany przed (powyżej) elementem ScriptExecution .

SingleSignOn

Element SingleSignOn zawiera następujące atrybuty:

Atrybut Wymagane Opis
Zakres Tak Zakres zachowania logowania jednokrotnego. Możliwe wartości: Suppressed, , ApplicationTenantlub Policy. Wartość Suppressed wskazuje, że zachowanie jest pomijane, a użytkownik jest zawsze monitowany o wybór dostawcy tożsamości. Wartość Tenant wskazuje, że zachowanie jest stosowane do wszystkich zasad w dzierżawie. Na przykład użytkownik przechodzący przez dwie podróże zasad dla dzierżawy nie jest monitowany o wybór dostawcy tożsamości. Wartość Application wskazuje, że zachowanie jest stosowane do wszystkich zasad dla aplikacji wysyłającej żądanie. Na przykład użytkownik przechodzący przez dwie podróże zasad dla aplikacji nie jest monitowany o wybór dostawcy tożsamości. Wartość Policy wskazuje, że zachowanie dotyczy tylko zasad. Na przykład użytkownik przechodzący przez dwie podróże po zasadach dla platformy zaufania jest monitowany o wybór dostawcy tożsamości podczas przełączania się między zasadami.
KeepAliveInDays Nie Określa, jak długo użytkownik pozostaje zalogowany. Ustawienie wartości na 0 powoduje wyłączenie funkcji KMSI. Wartość domyślna to 0 (wyłączone). Minimum to 1 dzień. Wartość maksymalna to 90 dni. Aby uzyskać więcej informacji, zobacz Nie wylogowuj mnie.
EnforceIdTokenHintOnLogout Nie Wymuś przekazanie wcześniej wystawionego tokenu identyfikatora do punktu końcowego wylogowania jako wskazówkę dotyczącą bieżącej uwierzytelnionej sesji użytkownika końcowego z klientem. Możliwe wartości: false (wartość domyślna) lub true. Aby uzyskać więcej informacji, zobacz Logowanie internetowe za pomocą protokołu OpenID Connect.

JourneyInsights

Element JourneyInsights zawiera następujące atrybuty:

Atrybut Wymagane Opis
TelemetryEngine Tak Wartość musi mieć wartość ApplicationInsights.
InstrumentationKey Tak Ciąg zawierający klucz instrumentacji dla elementu usługi Application Insights.
Tryb dewelopera Tak Możliwe wartości: true lub false. Jeśli trueusługa Application Insights przyspieszy telemetrię za pośrednictwem potoku przetwarzania. To ustawienie jest dobre dla programowania, ale ograniczone na dużych woluminach. Szczegółowe dzienniki aktywności są przeznaczone tylko do pomocy w tworzeniu zasad niestandardowych. Nie używaj trybu programowania w środowisku produkcyjnym. Dzienniki zbierają wszystkie oświadczenia wysyłane do i od dostawców tożsamości podczas opracowywania. Jeśli jest używany w środowisku produkcyjnym, deweloper przejmuje odpowiedzialność za dane osobowe zebrane w dzienniku usługi App Insights, którego jest właścicielem. Te szczegółowe dzienniki są zbierane tylko wtedy, gdy ta wartość jest ustawiona na truewartość .
ClientEnabled Tak Możliwe wartości: true lub false. Jeśli true, wysyła skrypt po stronie klienta usługi Application Insights na potrzeby śledzenia widoku strony i błędów po stronie klienta.
ServerEnabled Tak Możliwe wartości: true lub false. Jeśli trueelement , wysyła istniejący kod JSON UserJourneyRecorder jako zdarzenie niestandardowe do usługi Application Insights.
TelemetriaVersion Tak Wartość musi mieć wartość 1.0.0.

Aby uzyskać więcej informacji, zobacz Zbieranie dzienników

ContentDefinitionParameters

Korzystając z zasad niestandardowych w usłudze Azure AD B2C, można wysłać parametr w ciągu zapytania. Przekazanie parametru do punktu końcowego HTML pozwala na dynamiczną zmianę zawartość strony. Na podstawie parametru przekazywanego z aplikacji internetowej lub aplikacji mobilnej można na przykład zmienić obraz tła na stronie rejestracji lub logowania usługi Azure AD B2C. Azure AD B2C przekazuje parametry ciągu zapytania do dynamicznego pliku HTML, takiego jak plik aspx.

Poniższy przykład przekazuje parametr o nazwie z campaignId wartością hawaii w ciągu zapytania:

https://login.microsoft.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?pB2C_1A_signup_signin&client_id=a415078a-0402-4ce3-a9c6-ec1947fcfb3f&nonce=defaultNonce&redirect_uri=http%3A%2F%2Fjwt.io%2F&scope=openid&response_type=id_token&prompt=login&campaignId=hawaii

Element ContentDefinitionParameters zawiera następujący element:

Element Wystąpień Opis
ContentDefinitionParameter 0:n Ciąg zawierający parę klucz-wartość dołączona do ciągu zapytania identyfikatora URI ładowania definicji zawartości.

Element ContentDefinitionParameter zawiera następujący atrybut:

Atrybut Wymagane Opis
Nazwa Tak Nazwa pary klucz-wartość.

Aby uzyskać więcej informacji, zobacz Konfigurowanie interfejsu użytkownika z zawartością dynamiczną przy użyciu zasad niestandardowych

PodróżFraming

Element JourneyFraming zawiera następujące atrybuty:

Atrybut Wymagane Opis
Enabled (Włączony) Tak Umożliwia załadowanie tych zasad w elemecie iframe. Możliwe wartości: false (wartość domyślna) lub true.
Źródła Tak Zawiera domeny, które będą ładować element iframe. Aby uzyskać więcej informacji, zobacz Ładowanie usługi Azure B2C w elemecie iframe.

TechnicalProfile

Element TechnicalProfile zawiera następujący atrybut:

Atrybut Wymagane Opis
Id Tak Wartość musi mieć wartość PolicyProfile.

Plik TechnicalProfile zawiera następujące elementy:

Element Wystąpień Opis
Nazwa wyświetlana 1:1 Ciąg zawierający nazwę profilu technicznego.
Opis 0:1 Ciąg zawierający opis profilu technicznego.
Protokół 1:1 Protokół używany do federacji.
Metadane 0:1 Kolekcja par Item of key/value używanych przez protokół do komunikowania się z punktem końcowym w trakcie transakcji w celu skonfigurowania interakcji między jednostki uzależnionej a innymi uczestnikami społeczności.
InputClaims 1:1 Lista typów oświadczeń, które są traktowane jako dane wejściowe w profilu technicznym. Każdy z tych elementów zawiera odwołanie do obiektu ClaimType zdefiniowanego już w sekcji ClaimsSchema lub w zasadach, z których ten plik zasad dziedziczy.
OutputClaims 1:1 Lista typów oświadczeń, które są traktowane jako dane wyjściowe w profilu technicznym. Każdy z tych elementów zawiera odwołanie do obiektu ClaimType zdefiniowanego już w sekcji ClaimsSchema lub w zasadach, z których ten plik zasad dziedziczy.
SubjectNamingInfo 1:1 Nazwa podmiotu używana w tokenach.

Element Protocol zawiera następujący atrybut:

Atrybut Wymagane Opis
Nazwa Tak Nazwa prawidłowego protokołu obsługiwanego przez Azure AD B2C, który jest używany jako część profilu technicznego. Możliwe wartości: OpenIdConnect lub SAML2. Wartość OpenIdConnect reprezentuje standard protokołu OpenID Connect 1.0 zgodnie ze specyfikacją podstawy OpenID. Reprezentuje SAML2 standard protokołu SAML 2.0 zgodnie ze specyfikacją OASIS.

Metadane

Gdy protokół to SAML, element metadanych zawiera następujące elementy. Aby uzyskać więcej informacji, zobacz Opcje rejestrowania aplikacji SAML w Azure AD B2C.

Atrybut Wymagane Opis
IdpInitiatedProfileEnabled Nie Wskazuje, czy przepływ inicjowany przez dostawcę tożsamości jest obsługiwany. Możliwe wartości: true lub false (wartość domyślna).
XmlSignatureAlgorithm Nie Metoda, która Azure AD B2C używa do podpisywania odpowiedzi SAML. Możliwe wartości: Sha256, , Sha512Sha384lub Sha1. Upewnij się, że algorytm podpisu jest konfigurowany po obu stronach o tej samej wartości. Użyj tylko algorytmu obsługiwanego przez certyfikat. Aby skonfigurować asercji SAML, zobacz metadane profilu technicznego wystawcy SAML.
DataEncryptionMethod Nie Wskazuje metodę, która Azure AD B2C używa do szyfrowania danych przy użyciu algorytmu AES (Advanced Encryption Standard). Metadane steruje wartością <EncryptedData> elementu w odpowiedzi SAML. Możliwe wartości: Aes256 (wartość domyślna), Aes192, Sha512lub Aes128.
KeyEncryptionMethod Nie Wskazuje metodę, która Azure AD B2C używa do szyfrowania kopii klucza użytego do szyfrowania danych. Metadane steruje wartością <EncryptedKey> elementu w odpowiedzi SAML. Możliwe wartości: Rsa15 (wartość domyślna) — algorytm szyfrowania RSA Public Key Cryptography Standard (PKCS) w wersji 1.5, RsaOaep — algorytm szyfrowania RSA Optimal Asymetryczne dopełnienie szyfrowania (OAEP).
UseDetachedKeys Nie Możliwe wartości: true, lub false (wartość domyślna). Gdy wartość jest ustawiona na truewartość , Azure AD B2C zmienia format zaszyfrowanych asercji. Użycie kluczy odłączonych dodaje zaszyfrowaną asercję jako element podrzędny metody EncrytedAssertion w przeciwieństwie do funkcji EncryptedData.
WantsSignedResponses Nie Wskazuje, czy Azure AD B2C podpisuje sekcję Response odpowiedzi SAML. Możliwe wartości: true (wartość domyślna) lub false.
RemoveMillisecondsFromDateTime Nie Wskazuje, czy milisekundy zostaną usunięte z wartości daty/godziny w odpowiedzi SAML (są to m.in. IssueInstant, NotBefore, NotOnOrAfter i AuthnInstant). Możliwe wartości: false (wartość domyślna) lub true.
RequestContextMaximumLengthInBytes Nie Wskazuje maksymalną długość parametru aplikacji RelayStateSAML. Wartość domyślna to 1000. Wartość maksymalna to 2048.

InputClaims

Element InputClaims zawiera następujący element:

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

Element InputClaim zawiera następujące atrybuty:

Atrybut Wymagane Opis
ClaimTypeReferenceId Tak Odwołanie do właściwości ClaimType zdefiniowanej już w sekcji ClaimsSchema w pliku zasad.
Defaultvalue Nie Wartość domyślna, która może być używana, jeśli wartość oświadczenia jest pusta.
PartnerClaimType Nie Wysyła oświadczenie w innej nazwie zgodnie z konfiguracją w definicji ClaimType.

OutputClaims

Element OutputClaims zawiera następujący element:

Element Wystąpień Opis
OutputClaim 0:n Nazwa oczekiwanego typu oświadczenia na liście obsługiwanych zasad, do których subskrybuje jednostka uzależniona. To oświadczenie służy jako dane wyjściowe profilu technicznego.

Element OutputClaim zawiera następujące atrybuty:

Atrybut Wymagane Opis
ClaimTypeReferenceId Tak Odwołanie do właściwości ClaimType zdefiniowanej już w sekcji ClaimsSchema w pliku zasad.
Defaultvalue Nie Wartość domyślna, która może być używana, jeśli wartość oświadczenia jest pusta.
PartnerClaimType Nie Wysyła oświadczenie w innej nazwie zgodnie z konfiguracją w definicji ClaimType.

SubjectNamingInfo

Za pomocą elementu SubjectNameingInfo można kontrolować wartość podmiotu tokenu:

  • Token JWTsub oświadczenie. Jest to podmiot zabezpieczeń, o którym token potwierdza informacje, takie jak użytkownik aplikacji. Ta wartość jest niezmienna i nie można jej ponownie przypisać ani ponownie użyć. Może służyć do przeprowadzania bezpiecznych kontroli autoryzacji, takich jak użycie tokenu w celu uzyskania dostępu do zasobu. Domyślnie oświadczenie podmiotu jest wypełniane identyfikatorem obiektu użytkownika w katalogu. Aby uzyskać więcej informacji, zobacz token, sesja i konfiguracja logowania jednokrotnego.
  • Token SAML<Subject><NameID> element, który identyfikuje element podmiotu. Można zmodyfikować format NameId.

Element SubjectNamingInfo zawiera następujący atrybut:

Atrybut Wymagane Opis
Claimtype Tak Odwołanie do elementu PartnerClaimType oświadczenia wyjściowego. Oświadczenia wyjściowe muszą być zdefiniowane w kolekcji OutputClaims zasad jednostki uzależnionej za pomocą klasy PartnerClaimType. Na przykład , <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />lub <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
Format Nie Używany dla jednostek uzależnionych SAML do ustawiania formatu NameId zwróconego w asercji SAML.

W poniższym przykładzie pokazano, jak zdefiniować jednostkę uzależnioną OpenID Connect. Informacje o nazwie podmiotu objectIdsą skonfigurowane jako :

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Token JWT zawiera sub oświadczenie z identyfikatorem objectId użytkownika:

{
  ...
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  ...
}

W poniższym przykładzie pokazano, jak zdefiniować jednostkę uzależnioną SAML. Informacje o nazwie podmiotu objectIdsą skonfigurowane jako , a identyfikator NameId format został podany:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
  </TechnicalProfile>
</RelyingParty>