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 , , 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 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 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 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 true wartość . |
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 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. 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 , , Sha512 Sha384 lub 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 , Sha512 lub 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 true wartość , 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 RelayState SAML. 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 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 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 objectId
są 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 objectId
są 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>