İlk Azure Active Directory B2C özel ilkenizi yazın - Merhaba Dünya!
Uygulamanızda, kullanıcıların kaydolmasını, oturum açmasını veya profillerini yönetmesini sağlayan kullanıcı akışlarını kullanabilirsiniz. Kullanıcı akışları tüm iş gereksinimlerinizi kapsamadığında özel ilkeler kullanabilirsiniz.
Özel ilkeler yazmak için önceden oluşturulmuş özel ilke başlangıç paketini kullanabilirsiniz ancak özel ilkenin nasıl derlenmiş olduğunu anlamanız önemlidir. Bu makalede, ilk özel ilkenizi sıfırdan oluşturmayı öğreneceksiniz.
Ön koşullar
Henüz bir kiracınız yoksa, Azure aboneliğinize bağlı bir Azure AD B2C kiracısı oluşturun.
Bir web uygulaması kaydedin ve kimlik belirteci örtük verme özelliğini etkinleştirin. Yeniden Yönlendirme URI'sinde kullanın https://jwt.ms.
Bilgisayarınızda Visual Studio Code (VS Code) yüklü olmalıdır.
Dekont
Bu makale, Azure Active Directory B2C'de kendi özel ilkelerinizi oluşturma ve çalıştırma nasıl yapılır kılavuzu serisinin bir parçasıdır. Bu seriyi ilk makaleden başlatmanızı öneririz.
1. Adım - İmzalama ve şifreleme anahtarlarını yapılandırma
Henüz yapmadıysanız aşağıdaki şifreleme anahtarlarını oluşturun. Aşağıdaki adımları otomatikleştirmek için IEF Kurulum Uygulaması'nı ziyaret edin ve yönergeleri izleyin:
İmzalama anahtarını oluşturmak için Kimlik Deneyimi Çerçevesi uygulamaları için imzalama ve şifreleme anahtarları ekleme'deki adımları kullanın.
Şifreleme anahtarını oluşturmak için Kimlik Deneyimi Çerçevesi uygulamaları için imzalama ve şifreleme anahtarları ekleme'deki adımları kullanın.
2. Adım - Özel ilke dosyasını oluşturma
VS Code'da dosyasını
ContosoCustomPolicy.XML
oluşturun ve açın.ContosoCustomPolicy.XML
Dosyasına aşağıdaki kodu ekleyin:<?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>
değerini kiracı adınızın alt etki alanı bölümüyle (örneğin
contoso
) değiştirinyourtenant
. Kiracı adınızı alma hakkında bilgi edinin.XML öğeleri, ilke dosyasının en üst düzey
TrustFrameworkPolicy
öğesini ilke kimliği ve kiracı adıyla tanımlar. TrustFrameworkPolicy öğesi, bu seride kullanacağınız diğer XML öğelerini içerir.Bir talep bildirmek için dosyanın bölümüne
ContosoCustomPolicy.XML
aşağıdaki koduBuildingBlocks
ekleyin:<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>
Talep, değişken gibidir. Talebin bildirimi, talebin veri türünü de gösterir.
ClaimsProviders
Dosyanın bölümündeContosoCustomPolicy.XML
aşağıdaki kodu ekleyin:<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>
Bir JWT Belirteci Vereni bildirdik.
CryptographicKeys
bölümünde, 1. adımda imzalama ve şifreleme anahtarlarını yapılandırmak için farklı adlar kullandıysanız, için doğru değeri kullandığınızdanStorageReferenceId
emin olun.UserJourneys
Dosyanın bölümündeContosoCustomPolicy.XML
aşağıdaki kodu ekleyin:<UserJourney Id="HelloWorldJourney"> <OrchestrationSteps> <OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" /> </OrchestrationSteps> </UserJourney>
Bir UserJourney ekledik. Kullanıcı yolculuğu, Azure AD B2C bir isteği işlerken son kullanıcının geçtiği iş mantığını belirtir. Bu kullanıcı yolculuğunda, bir sonraki adımda tanımlayabileceğiniz taleplerle JTW belirteci veren tek bir adım vardır.
RelyingParty
Dosyanın bölümündeContosoCustomPolicy.XML
aşağıdaki kodu ekleyin:<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 bölümü, ilkenizin giriş noktasıdır. Yürütülecek UserJourney'yi ve ilke çalıştırıldığında döndürülen belirtece dahil edilecek talepleri belirtir.
2. adımı tamamladıktan sonra dosya ContosoCustomPolicy.XML
aşağıdaki koda benzer görünmelidir:
<?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>
3. Adım - Özel ilke dosyasını karşıya yükleme
- Azure Portal oturum açın.
- Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden Azure AD B2C kiracınıza geçmek için üstteki menüden Ayarlar simgesini seçin.
- Azure portalında Azure AD B2C'yi arayın ve seçin.
- Soldaki menüde, İlkeler'in altında Kimlik Deneyimi Çerçevesi'ni seçin.
- Özel ilkeyi karşıya yükle'yi seçin, seç'e göz atın ve dosyayı karşıya yükleyin
ContosoCustomPolicy.XML
.
Dosyayı karşıya yükledikten sonra, Azure AD B2C ön ekini B2C_1A_
ekler, böylece adlar B2C_1A_CONTOSOCUSTOMPOLICY benzer görünür.
4. Adım - Özel ilkeyi test edin
- Özel ilkeler'in altında B2C_1A_CONTOSOCUSTOMPOLICY'ı seçin.
- Özel ilkenin genel bakış sayfasında Uygulamayı seçin için daha önce kaydettiğiniz webapp1 gibi web uygulamasını seçin. Yanıt URL'si seç değerinin olarak ayarlandığından
https://jwt.ms
emin olun. - Şimdi çalıştır düğmesini seçin.
İlke yürütmeyi tamamladıktan sonra adresine yönlendirilirsiniz https://jwt.ms
ve kodu çözülen bir JWT belirteci görürsünüz. Aşağıdaki JWT belirteci kod parçacığına benzer:
{
"typ": "JWT",
"alg": "RS256",
"kid": "pxLOMWFg...."
}.{
...
"sub": "abcd-1234-efgh-5678-ijkl-etc.",
...
"acr": "b2c_1a_contosocustompolicy",
...
"message": "Hello World!"
}.[Signature]
message
bölümünde çıkış talepleri olarak ayarladığımız ve sub
taleplerineRelyingParty
dikkat edin.
Sonraki adımlar
Bu makalede, Azure AD B2C özel ilkesine dahil edilen dört bölümü öğrendiniz ve kullandınız. Bu bölümler kök öğesi alt öğe TrustFrameworkPolicy
olarak eklenir:
- BuildingBlocks
- ClaimsProviders
- UserJourneys
- RelyingParty
Ardından şunları öğrenin:
Özel ilke kullanarak kullanıcı girişlerini toplama ve kullanma.
Özel ilke taleplerine genel bakış hakkında.
Özel ilke talebi bildirme.
Özel ilke talepleri veri türü hakkında.
Özel ilke kullanıcı giriş türleri hakkında.