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 , , Application Tenant lub 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 true usł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 true wartość . |
ClientEnabled | Tak | Możliwe wartości: true lub false . Jeśli true program 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 true element , 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=00001111-aaaa-2222-bbbb-3333cccc4444&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 , , Sha512 Sha384 lub 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 , Sha512 lub 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: true lub 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 SubjectNamingInfo 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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
...
}
W poniższym przykładzie pokazano, jak zdefiniować jednostkę uzależnioną SAML. Informacje o nazwie podmiotu są skonfigurowane jako , objectId
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>