Napište své první vlastní zásady Azure Active Directory B2C – Hello World!
V aplikaci můžete použít toky uživatelů, které uživatelům umožňují zaregistrovat se, přihlásit se nebo spravovat svůj profil. Pokud toky uživatelů nepokrývají všechny vaše obchodní potřeby, můžete použít vlastní zásady.
I když k psaní vlastních zásad můžete použít předpřipravený balíček vlastních zásad, je důležité pochopit, jak se vytvářejí vlastní zásady. V tomto článku se dozvíte, jak vytvořit první vlastní zásady od začátku.
Předpoklady
Pokud ho ještě nemáte, vytvořte tenanta Azure AD B2C, který je propojený s vaším předplatným Azure.
Zaregistrujte webovou aplikaci a povolte implicitní udělení tokenu ID. Pro identifikátor URI přesměrování použijte https://jwt.ms.
V počítači musíte mít nainstalovaný Visual Studio Code (VS Code ).
Poznámka:
Tento článek je součástí řady s návody k vytvoření a spuštění vlastních zásad v Azure Active Directory B2C. Doporučujeme spustit tuto řadu z prvního článku.
Krok 1 : Konfigurace podpisových a šifrovacích klíčů
Pokud jste to ještě neudělali, vytvořte následující šifrovací klíče. Pokud chcete průvodce automatizovat níže, navštivte instalační aplikaci IEF a postupujte podle pokynů:
Pomocí kroků v části Přidání podpisových a šifrovacích klíčů pro aplikace Identity Experience Framework vytvořte podpisový klíč.
Pomocí kroků v tématu Přidání podpisových a šifrovacích klíčů pro aplikace Identity Experience Framework vytvořte šifrovací klíč.
Krok 2 : Sestavení souboru vlastních zásad
Ve VS Code vytvořte a otevřete soubor
ContosoCustomPolicy.XML
.ContosoCustomPolicy.XML
Do souboru přidejte následující kód:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="yourtenant.onmicrosoft.com" PolicyId="B2C_1A_ContosoCustomPolicy" PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_ContosoCustomPolicy"> <BuildingBlocks> <!-- Building Blocks Here--> </BuildingBlocks> <ClaimsProviders> <!-- Claims Providers Here--> </ClaimsProviders> <UserJourneys> <!-- User Journeys Here--> </UserJourneys> <RelyingParty> <!-- Relying Party Here that's your policy’s entry point Specify the User Journey to execute Specify the claims to include in the token that is returned when the policy runs --> </RelyingParty> </TrustFrameworkPolicy>
Nahraďte
yourtenant
subdoménou části vašeho názvu tenanta, napříkladcontoso
. Zjistěte, jak získat název tenanta.Elementy XML definují prvek nejvyšší úrovně
TrustFrameworkPolicy
souboru zásad s ID zásady a názvem tenanta. Element TrustFrameworkPolicy obsahuje další elementy XML, které použijete v této řadě.Pokud chcete deklarovat deklaraci identity, přidejte do
BuildingBlocks
částiContosoCustomPolicy.XML
souboru následující kód:<ClaimsSchema> <ClaimType Id="objectId"> <DisplayName>unique object Id for subject of the claims being returned</DisplayName> <DataType>string</DataType> </ClaimType> <ClaimType Id="message"> <DisplayName>Will hold Hello World message</DisplayName> <DataType>string</DataType> </ClaimType> </ClaimsSchema>
Deklarace identity je jako proměnná. Deklarace deklarace identity také zobrazuje datový typ deklarace identity.
ClaimsProviders
V částiContosoCustomPolicy.XML
souboru přidejte následující kód:<ClaimsProvider> <DisplayName>Token Issuer</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="JwtIssuer"> <DisplayName>JWT Issuer</DisplayName> <Protocol Name="None" /> <OutputTokenFormat>JWT</OutputTokenFormat> <Metadata> <Item Key="client_id">{service:te}</Item> <Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item> <Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item> </Metadata> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> <Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer" /> </CryptographicKeys> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <ClaimsProvider> <!-- The technical profile(s) defined in this section is required by the framework to be included in all custom policies. --> <DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="TpEngine_c3bd4fe2-1775-4013-b91d-35f16d377d13"> <DisplayName>Trustframework Policy Engine Default Technical Profile</DisplayName> <Protocol Name="None" /> <Metadata> <Item Key="url">{service:te}</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Deklarovali jsme vystavitele tokenu JWT.
CryptographicKeys
Pokud jste v části použili různé názvy ke konfiguraci podpisových a šifrovacích klíčů v kroku 1, ujistěte se, že používáte správnou hodnotu .StorageReferenceId
UserJourneys
V částiContosoCustomPolicy.XML
souboru přidejte následující kód:<UserJourney Id="HelloWorldJourney"> <OrchestrationSteps> <OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" /> </OrchestrationSteps> </UserJourney>
Přidali jsme UserJourney. Cesta uživatele určuje obchodní logiku, kterou koncový uživatel prochází, protože Azure AD B2C zpracovává požadavek. Tato cesta uživatele má pouze jeden krok, který vydává token JTW s deklaracemi identity, které definujete v dalším kroku.
RelyingParty
V částiContosoCustomPolicy.XML
souboru přidejte následující kód:<DefaultUserJourney ReferenceId="HelloWorldJourney"/> <TechnicalProfile Id="HelloWorldPolicyProfile"> <DisplayName>Hello World Policy Profile</DisplayName> <Protocol Name="OpenIdConnect" /> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="abcd-1234-efgh-5678-ijkl-etc."/> <OutputClaim ClaimTypeReferenceId="message" DefaultValue="Hello World!"/> </OutputClaims> <SubjectNamingInfo ClaimType="sub" /> </TechnicalProfile>
Oddíl RelyingParty je vstupním bodem vaší zásady. Určuje, že má uživatelJourney provést a deklarace identity, které se mají zahrnout do tokenu, který se vrátí při spuštění zásady.
Po dokončení kroku 2ContosoCustomPolicy.XML
by měl soubor vypadat podobně jako následující kód:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="Contosob2c2233.onmicrosoft.com" PolicyId="B2C_1A_ContosoCustomPolicy" PublicPolicyUri="http://Contosob2c2233.onmicrosoft.com/B2C_1A_ContosoCustomPolicy">
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="objectId">
<DisplayName>unique object Id for subject of the claims being returned</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="message">
<DisplayName>Will hold Hello World message</DisplayName>
<DataType>string</DataType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>
<ClaimsProviders><!--Claims Providers Here-->
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="JwtIssuer">
<DisplayName>JWT Issuer</DisplayName>
<Protocol Name="None"/>
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
<Item Key="client_id">{service:te}</Item>
<Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
<Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer"/>
<Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer"/>
</CryptographicKeys>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<ClaimsProvider>
<DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="TpEngine_c3bd4fe2-1775-4013-b91d-35f16d377d13">
<DisplayName>Trustframework Policy Engine Default Technical Profile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="url">{service:te}</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>
<UserJourneys>
<UserJourney Id="HelloWorldJourney">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
<RelyingParty><!--
Relying Party Here that's your policy’s entry point
Specify the User Journey to execute
Specify the claims to include in the token that is returned when the policy runs
-->
<DefaultUserJourney ReferenceId="HelloWorldJourney"/>
<TechnicalProfile Id="HelloWorldPolicyProfile">
<DisplayName>Hello World Policy Profile</DisplayName>
<Protocol Name="OpenIdConnect"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="abcd-1234-efgh-5678-ijkl-etc."/>
<OutputClaim ClaimTypeReferenceId="message" DefaultValue="Hello World!"/>
</OutputClaims>
<SubjectNamingInfo ClaimType="sub"/>
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
Krok 3 : Nahrání souboru vlastních zásad
- Přihlaste se k portálu Azure.
- Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
- Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
- V nabídce vlevo v části Zásady vyberte Architekturu prostředí identit.
- Vyberte Nahrát vlastní zásady, vyberte a pak soubor nahrajte
ContosoCustomPolicy.XML
.
Po nahrání souboru přidá Azure AD B2C předponu B2C_1A_
, takže názvy vypadají podobně jako B2C_1A_CONTOSOCUSTOMPOLICY.
Krok 4 – Testování vlastních zásad
- V části Vlastní zásady vyberte B2C_1A_CONTOSOCUSTOMPOLICY.
- V části Vybrat aplikaci na stránce přehledu vlastních zásad vyberte webovou aplikaci, například webovou aplikaci1 , kterou jste předtím zaregistrovali. Ujistěte se, že je nastavená
https://jwt.ms
hodnota Vybrat adresu URL odpovědi. - Vyberte tlačítko Spustit.
Po dokončení provádění zásady budete přesměrováni na https://jwt.ms
a zobrazí se dekódovaný token JWT. Vypadá podobně jako následující fragment kódu tokenu JWT:
{
"typ": "JWT",
"alg": "RS256",
"kid": "pxLOMWFg...."
}.{
...
"sub": "abcd-1234-efgh-5678-ijkl-etc.",
...
"acr": "b2c_1a_contosocustompolicy",
...
"message": "Hello World!"
}.[Signature]
message
Všimněte si deklarací identity a sub
deklarací identity, které jsme v RelyingParty
části nastavili jako výstupní deklarace identity.
Další kroky
V tomto článku jste se dozvěděli a použili čtyři části, které jsou součástí vlastních zásad Azure AD B2C. Tyto oddíly se přidají jako podřízené prvky kořenového elementu TrustFrameworkPolicy
:
- BuildingBlocks
- ClaimsProviders
- UserJourneys
- RelyingParty
Dále se dozvíte:
Shromažďování a používání uživatelských vstupů pomocí vlastních zásad
Jak deklarovat vlastní deklaraci identity zásad
Informace o datovém typu deklarací identity vlastních zásad
O typech uživatelských vstupů vlastních zásad.