Udostępnij za pośrednictwem


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ż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.

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.

W poniższym przykładzie pokazano 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 w celu skontaktowania się z usługą 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 Wymagania 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

W poniższym przykładzie pokazano 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 Wymagania 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). Minimalna wartość to 900 sekund (15 minut). Maksymalna wartość 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 wartości klucza, które mają zostać dołączone do identyfikatora URI ładowania definicji zawartości.
JourneyFraming 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 należy dodać przed (powyżej) elementem ScriptExecution .

SingleSignOn

Element SingleSignOn zawiera następujące atrybuty:

Atrybut Wymagania opis
Scope 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 zasad dla struktury 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łączona). Minimalna wartość to 1 dzień. Maksymalna wartość to 90 dni. Aby uzyskać więcej informacji, zobacz Keep me signed in (Nie wylogowuj mnie).
EnforceIdTokenHintOnLogout Nie. Wymuś przekazanie wcześniej wystawionego tokenu identyfikatora do punktu końcowego wylogowania jako wskazówkę dotyczącą bieżącej sesji uwierzytelnionej 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ą programu OpenID Connect.

JourneyInsights

Element JourneyInsights zawiera następujące atrybuty:

Atrybut Wymagania opis
TelemetriaEngine Tak Wartość musi mieć wartość ApplicationInsights.
InstrumentationKey Tak Ciąg zawierający klucz instrumentacji dla elementu usługi Application Insights.
DeveloperMode 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 opracowywaniu 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 trueprogram 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. Usługa Azure AD B2C przekazuje parametry ciągu zapytania do dynamicznego pliku HTML, takiego jak plik aspx.

Poniższy przykład przekazuje parametr o nazwie campaignId z 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ę wartości klucza, która jest dołączana do ciągu zapytania identyfikatora URI ładowania definicji zawartości.

Element ContentDefinitionParameter zawiera następujący atrybut:

Atrybut Wymagania opis
Nazwa/nazwisko Tak Nazwa pary wartości klucza.

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

JourneyFraming

Element JourneyFraming zawiera następujące atrybuty:

Atrybut Wymagania opis
Enabled (Włączony) Tak Umożliwia załadowanie tych zasad w ramce 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 Wymagania Opis
Id Tak Wartość musi mieć wartość PolicyProfile.

Plik TechnicalProfile zawiera następujące elementy:

Element Wystąpień opis
DisplayName 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 dla 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 już zdefiniowanego w sekcji ClaimsSchema lub w zasadach, z których dziedziczy ten plik zasad.
OutputClaims 1:1 Lista typów oświadczeń, które są pobierane jako dane wyjściowe w profilu technicznym. Każdy z tych elementów zawiera odwołanie do obiektu ClaimType już zdefiniowanego w sekcji ClaimsSchema lub w zasadach, z których dziedziczy ten plik zasad.
SubjectNamingInfo 1:1 Nazwa podmiotu używana w tokenach.

Element Protocol zawiera następujący atrybut:

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: OpenIdConnect lub SAML2. Wartość OpenIdConnect reprezentuje standard protokołu OpenID Connect 1.0 zgodnie ze specyfikacją openID foundation. Parametr SAML2 reprezentuje 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 usłudze Azure AD B2C.

Atrybut Wymagania 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 używana przez usługę Azure AD B2C do podpisania odpowiedzi SAML. Możliwe wartości: Sha256, , Sha512Sha384lub Sha1. Upewnij się, że algorytm podpisu został skonfigurowany po obu stronach o tej samej wartości. Użyj tylko algorytmu obsługiwanego przez certyfikat. Aby skonfigurować asercję SAML, zobacz metadane profilu technicznego wystawcy SAML.
DataEncryptionMethod Nie. Wskazuje metodę używaną przez usługę Azure AD B2C 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ę używaną przez usługę Azure AD B2C do szyfrowania kopii klucza użytego do zaszyfrowania 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 Asymetryczny (OAEP).
UseDetachedKeys Nie. Możliwe wartości: truelub false (wartość domyślna). Gdy wartość jest ustawiona na true, usługa 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 usługa 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 RelayState SAML. Wartość domyślna to 1000. Maksymalna wartość 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 Wymagania opis
ClaimTypeReferenceId Tak Odwołanie do właściwości ClaimType już zdefiniowane 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 o 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 Wymagania opis
ClaimTypeReferenceId Tak Odwołanie do właściwości ClaimType już zdefiniowane 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 o innej nazwie zgodnie z konfiguracją w definicji ClaimType.

SubjectNamingInfo

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

  • Token JWT — sub 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 gdy token jest używany do uzyskiwania 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, session and single sign-on configuration (Konfiguracja tokenu, sesji i 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 Wymagania opis
Typ oświadczenia Tak Odwołanie do elementu PartnerClaimType oświadczenia wyjściowego. Oświadczenia wyjściowe muszą być zdefiniowane w kolekcji OutputClaims zasad jednostki uzależnionej z PartnerClaimType. Na przykład , <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />lub <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
Formatuj Nie. Służy do jednostki uzależnionej SAML, aby ustawić format NameId zwrócony w asercji SAML.

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

<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 są skonfigurowane jako , objectIda 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>