Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.
V článku Vytvoření a čtení uživatelského účtu pomocí vlastní zásady Azure Active Directory B2C vytvoří uživatel nový uživatelský účet, ale nepřihlásí se k němu.
V tomto článku se dozvíte, jak napsat vlastní zásadu Azure Active Directory B2C (Azure AD B2C), která uživateli umožňuje vytvořit místní účet Azure AD B2C nebo se k jednomu účtu přihlásit. Místní účet odkazuje na účet vytvořený ve vašem tenantovi Azure AD B2C, když se uživatel zaregistruje do vaší aplikace.
Přehled
Azure AD B2C používá ověřovací protokol OpenID Connect k ověření přihlašovacích údajů uživatele. V Azure AD B2C odešlete přihlašovací údaje uživatele spolu s dalšími informacemi do zabezpečeného koncového bodu, který pak určí, jestli jsou přihlašovací údaje platné nebo ne. Když použijete implementaci OpenID Connect služby Azure AD B2C, můžete outsourcovat registraci, přihlášení a další funkce pro správu identit ve vašich webových aplikacích službě Microsoft Entra ID.
Vlastní zásady Azure AD B2C poskytují technický profil OpenID Connect, který používáte k volání zabezpečeného koncového bodu Microsoftu. Přečtěte si další informace o technickém profilu OpenID Connect.
Požadavky
Pokud ho ještě nemáte, vytvořte klienta Azure AD B2C, který je propojený s vaším předplatným Azure.
Musíte mít Visual Studio Code (VS Code) nainstalovaný na svém počítači.
Dokončete kroky v tématu Vytvoření a čtení uživatelského účtu pomocí vlastních zásad Azure Active Directory B2C. Tento článek je součástí seriálu průvodců o vytváření a provádění vlastních zásad.
Poznámka:
Tento článek je součástí série návodů "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 technického profilu OpenID Connect
Pokud chcete nakonfigurovat technický profil OpenID Connect, musíte provést tři kroky:
- Prohlašte více nároků.
- Zaregistrujte aplikace na webu Azure Portal.
- Nakonec nakonfigurujte samotný technický profil OpenID Connect.
Krok 1.1 – Prohlášení dalších nároků
ContosoCustomPolicy.XML
V souboru vyhledejte oddíl ClaimsSchema a pak přidejte další deklarace identity pomocí následujícího kódu:
<!--<ClaimsSchema>-->
...
<ClaimType Id="grant_type">
<DisplayName>grant_type</DisplayName>
<DataType>string</DataType>
<UserHelpText>Special parameter passed for local account authentication to login.microsoftonline.com.</UserHelpText>
</ClaimType>
<ClaimType Id="scope">
<DisplayName>scope</DisplayName>
<DataType>string</DataType>
<UserHelpText>Special parameter passed for local account authentication to login.microsoftonline.com.</UserHelpText>
</ClaimType>
<ClaimType Id="nca">
<DisplayName>nca</DisplayName>
<DataType>string</DataType>
<UserHelpText>Special parameter passed for local account authentication to login.microsoftonline.com.</UserHelpText>
</ClaimType>
<ClaimType Id="client_id">
<DisplayName>client_id</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Special parameter passed to EvoSTS.</AdminHelpText>
<UserHelpText>Special parameter passed to EvoSTS.</UserHelpText>
</ClaimType>
<ClaimType Id="resource_id">
<DisplayName>resource_id</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Special parameter passed to EvoSTS.</AdminHelpText>
<UserHelpText>Special parameter passed to EvoSTS.</UserHelpText>
</ClaimType>
<!--</ClaimsSchema>-->
Krok 1.2 – Registrace aplikací rozhraní Identity Experience Framework
Azure AD B2C vyžaduje registraci dvou aplikací, které používá k registraci a přihlašování uživatelů pomocí místních účtů: IdentityExperienceFramework, webového rozhraní API a ProxyIdentityExperienceFramework, nativní aplikace s delegovaným oprávněním k aplikaci IdentityExperienceFramework.
Pokud jste to ještě neudělali, zaregistrujte následující aplikace. Chcete-li níže uvedený průvodce automatizovat, navštivte IEF Setup App a postupujte podle pokynů:
Pomocí kroků v části Registrace aplikace IdentityExperienceFramework zaregistrujte aplikaci Identity Experience Framework. Zkopírujte ID aplikace (klienta),appID pro registraci aplikace Identity Experience Framework pro použití v dalším kroku.
Pomocí kroků v registraci aplikace ProxyIdentityExperienceFramework zaregistrujte aplikaci Proxy Identity Experience Framework. Zkopírujte ID aplikace (klienta),proxyAppID pro registraci aplikace rozhraní Proxy Identity Experience Framework pro použití v dalším kroku.
Krok 1.3 – Konfigurace technického profilu OpenID Connect
ContosoCustomPolicy.XML
V souboru vyhledejte oddíl ClaimsProviders a pak přidejte element zprostředkovatele deklarací, který obsahuje váš technický profil OpenID Connect pomocí následujícího kódu:
<!--<ClaimsProviders>-->
...
<ClaimsProvider>
<DisplayName>OpenID Connect Technical Profiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="SignInUser">
<DisplayName>Sign in with Local Account</DisplayName>
<Protocol Name="OpenIdConnect" />
<Metadata>
<Item Key="UserMessageIfClaimsPrincipalDoesNotExist">We didn't find this account</Item>
<Item Key="UserMessageIfInvalidPassword">Your password or username is incorrect</Item>
<Item Key="UserMessageIfOldPasswordUsed">You've used an old password.</Item>
<Item Key="ProviderName">https://sts.windows.net/</Item>
<Item Key="METADATA">https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration</Item>
<Item Key="authorization_endpoint">https://login.microsoftonline.com/{tenant}/oauth2/token</Item>
<Item Key="response_types">id_token</Item>
<Item Key="response_mode">query</Item>
<Item Key="scope">email openid</Item>
<!-- Policy Engine Clients -->
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="client_id">proxyAppID</Item>
<Item Key="IdTokenAudience">appID</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="username" Required="true" />
<InputClaim ClaimTypeReferenceId="password" PartnerClaimType="password" Required="true" />
<InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="password" />
<InputClaim ClaimTypeReferenceId="scope" DefaultValue="openid" />
<InputClaim ClaimTypeReferenceId="nca" PartnerClaimType="nca" DefaultValue="1" />
<InputClaim ClaimTypeReferenceId="client_id" DefaultValue="proxyAppID" />
<InputClaim ClaimTypeReferenceId="resource_id" PartnerClaimType="resource" DefaultValue="appID" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<!--</ClaimsProviders>-->
Nahraďte oba výskyty:
appID s ID aplikace (klienta) aplikace Identity Experience Framework, kterou jste zkopírovali v kroku 1.2.
proxyAppID s ID aplikace (klienta) aplikace Proxy Identity Experience Framework, kterou jste zkopírovali v kroku 1.2.
Krok 2 – Konfigurace uživatelského rozhraní pro přihlášení
Když se zásady spustí, musí se uživateli zobrazit uživatelské rozhraní, které mu umožní přihlásit se. Uživatelské rozhraní má také možnost se zaregistrovat, pokud ještě nemá účet. K tomu je potřeba provést dva kroky:
- Nakonfigurujte technický profil s vlastním potvrzením, který uživateli zobrazí přihlašovací formulář.
- Nakonfigurujte definici obsahu pro uživatelské rozhraní přihlašování.
Krok 2.1 – Konfigurace technického profilu uživatelského rozhraní přihlašování
ContosoCustomPolicy.XML
V souboru vyhledejte SignInUser
technický profil a přidejte za něj technický profil SelfAsserted pomocí následujícího kódu:
<TechnicalProfile Id="UserSignInCollector">
<DisplayName>Local Account Signin</DisplayName>
<Protocol Name="Proprietary"
Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="setting.operatingMode">Email</Item>
<Item Key="SignUpTarget">AccountTypeInputCollectorClaimsExchange</Item>
</Metadata>
<DisplayClaims>
<DisplayClaim ClaimTypeReferenceId="email" Required="true" />
<DisplayClaim ClaimTypeReferenceId="password" Required="true" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="password" />
<OutputClaim ClaimTypeReferenceId="objectId" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="SignInUser" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
Přidali jsme technický profil SelfAsserted UserSignInCollector, který uživateli zobrazí přihlašovací formulář. Nakonfigurovali jsme technický profil tak, aby shromažďoval e-mailovou adresu uživatele jako přihlašovací jméno, jak je uvedeno v setting.operatingMode
metadatech. Přihlašovací formulář obsahuje odkaz pro registraci, který vede uživatele k registračnímu formuláři, jak je uvedeno v SignUpTarget
metadatech. V krocích orchestrace uvidíte, jak jsme nastavili SignUpWithLogonEmailExchangeClaimsExchange
.
Přidali jsme také technický profil SignInUser OpenID Connect jako soubor ValidationTechnicalProfile. Technický profil SignInUser se tedy spustí, když uživatel vybere tlačítko Přihlásit se (viz snímek obrazovky v kroku 5).
V dalším kroku (krok 2.2) nakonfigurujeme definici obsahu, kterou použijeme v tomto technickém profilu SelfAsserted.
Krok 2.2 – Konfigurace definice obsahu rozhraní přihlašování
ContosoCustomPolicy.XML
V souboru vyhledejte oddíl ContentDefinitions a pak pomocí následujícího kódu přihlaste definici obsahu:
<!--<ContentDefinitions>-->
...
<ContentDefinition Id="SignupOrSigninContentDefinition">
<LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>
<RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.7</DataUri>
<Metadata>
<Item Key="DisplayName">Signin and Signup</Item>
</Metadata>
</ContentDefinition>
<!--</ContentDefinitions>-->
Nakonfigurovali jsme obsahovou definici pro náš samostatně ověřený technický profil SignupOrSigninContentDefinition
. Můžeme ho zadat v technickém profilu pomocí prvku metadat nebo ho určit, když v krocích orchestrace odkazujeme na technický profil. Dříve jsme se dozvěděli, jak určit definici obsahu přímo v technickém profilu s vlastní deklarací, proto v tomto článku se dozvíme, jak ji určit, když v krocích orkestrace, konkrétně v kroku 3, odkazujeme na technický profil.
Krok 3 – aktualizace kroků orchestrace cesty uživatele
ContosoCustomPolicy.XML
V souboru vyhledejte cestu uživatele HelloWorldJourney a nahraďte celou kolekci kroků orchestrace následujícím kódem:
<!--<OrchestrationSteps>-->
...
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="SignupOrSigninContentDefinition">
<ClaimsProviderSelections>
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="UserSignInCollector" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="AccountTypeInputCollectorClaimsExchange" TechnicalProfileReferenceId="AccountTypeInputCollector"/>
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>accountType</Value>
<Value>company</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="GetAccessCodeClaimsExchange" TechnicalProfileReferenceId="AccessCodeInputCollector" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="4" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="UserInformationCollector" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="5" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReaderExchange" TechnicalProfileReferenceId="AAD-UserRead"/>
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="6" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="GetMessageClaimsExchange" TechnicalProfileReferenceId="UserInputMessageClaimGenerator"/>
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
<!--</OrchestrationSteps>-->
Ve druhém až pátém kroku orchestrace jsme použili předběžné podmínky k určení, zda má být krok orchestrace spuštěn. Musíme určit, jestli se uživatel přihlašuje nebo zaregistruje.
Když se spustí vlastní zásada:
Orchestrace – krok 1 – zobrazí přihlašovací stránku, aby se uživatel mohl přihlásit nebo vybrat odkaz Pro registraci . Všimněte si, že zadáváme definici obsahu, kterou technický profil UserSignInCollector využívá k zobrazení přihlašovacího formuláře.
Orchestrace Krok 2 – Tento krok se spustí, pokud se uživatel zaregistruje (
objectId
neexistuje), takže zobrazíme formulář pro výběr typu účtu vyvoláním technického profilu AccountTypeInputCollector .Orchestrace Krok 3 – Tento krok se spustí, pokud se uživatel zaregistruje (
objectId
neexistuje) a nevybere společnostaccountType
. Proto musíme uživatele požádat, aby zadalaccessCode
vyvoláním technického profilu s vlastním prohlášením AccessCodeInputCollector.Orchestration Step 4 – Tento krok se spustí, pokud se uživatel zaregistruje (objectId neexistuje), proto zobrazíme registrační formulář vyvoláním technického profilu UserInformationCollector.
Orchestration Step 5 – Tento krok čte informace o účtu z Microsoft Entra ID (vyvoláme
AAD-UserRead
technický profil Microsoft Entra ID), takže se spustí bez ohledu na to, jestli se uživatel zaregistruje nebo přihlásí.Orchestration Step 6 – Tento krok vyvolá technický nástroj UserInputMessageClaimGenerator pro sestavení pozdravu uživatele.
Orchestrace – Krok 7 – Nakonec, krok 8 sestaví a vrátí JWT na konci provádění zásad.
Krok 4 – Nahrání zásad
Postupujte podle kroků v části Nahrání souboru vlastních zásad a nahrajte soubor zásad. Pokud nahráváte soubor se stejným názvem jako soubor, který už je na portálu, nezapomeňte vybrat Přepsat vlastní zásady, pokud už existují.
Krok 5 – Testovací zásady
Postupujte podle kroků v části Otestování vlastních zásad a otestujte vlastní zásady. Po spuštění pravidla uvidíte rozhraní podobné snímku obrazovky níže.
Můžete se přihlásit zadáním e-mailové adresy a hesla existujícího účtu. Pokud ještě účet nemáte, musíte vybrat odkaz Pro registraci a vytvořit nový uživatelský účet.
Související obsah
Zjistěte, jak nastavit tok registrace a přihlášení pomocí účtu sociální sítě pomocí vlastních zásad Azure Active Directory B2C.
Přečtěte si, jak odebrat odkaz pro registraci, aby se uživatelé mohli jednoduše přihlásit.
Přečtěte si další informace o technickém profilu OpenID Connect.