Kaydolma kullanıcı akışına API bağlayıcısı ekleme
Başlamadan önce, ayarladığınız ilke türünü seçmek için İlke türü seçin seçicisini kullanın. Azure Active Directory B2C, kullanıcıların uygulamalarınızla nasıl etkileşim kurduğunu tanımlamak için iki yöntem sunar: önceden tanımlanmış kullanıcı akışları veya tam olarak yapılandırılabilir özel ilkeler aracılığıyla. Bu makalede gerekli adımlar her yöntem için farklıdır.
Geliştirici veya BT yöneticisi olarak, kaydolma deneyimini özelleştirmek ve dış sistemlerle tümleştirmek üzere kaydolma kullanıcı akışlarınızı REST API'lerle tümleştirmek için API bağlayıcılarını kullanabilirsiniz. Bu kılavuzun sonunda, kaydolma deneyimlerinizi değiştirmek için REST API hizmetleriyle etkileşim kuran bir Azure AD B2C kullanıcı akışı oluşturabileceksiniz.
Bu senaryoda, kullanıcıların Azure AD B2C kayıt sayfasına bir sadakat numarası girme olanağını ekleyeceğiz. REST API, e-posta ve sadakat numarası birleşiminin promosyon koduyla eşlenip eşlenmediğini doğrular. REST API bu kullanıcı için bir promosyon kodu bulursa Azure AD B2C'ye döndürülür. Son olarak, promosyon kodu uygulamanın tüketmesi için belirteç taleplerine eklenir.
Etkileşimi düzenleme adımı olarak da tasarlayabilirsiniz. REST API ekranda verileri doğrulamayacak ve her zaman talep döndürecekse bu uygundur. Daha fazla bilgi için bkz . İzlenecek yol: Düzenleme adımı olarak Azure AD B2C kullanıcı yolculuğunuzda REST API talep değişimlerini tümleştirme.
Önkoşullar
- Active Directory B2C'de özel ilkeleri kullanmaya başlama bölümündeki adımları tamamlayın
- Bir web uygulaması kaydedin.
API bağlayıcısı oluşturma
API bağlayıcısı kullanmak için, önce API bağlayıcısını oluşturur ve ardından bir kullanıcı akışında etkinleştirirsiniz.
Azure Portal oturum açın.
Azure hizmetleri'nin altında Azure AD B2C'yi seçin.
API bağlayıcıları'nı ve ardından Yeni API bağlayıcısı'nı seçin.
Arama için bir görünen ad sağlayın. Örneğin, Kullanıcı bilgilerini doğrulayın.
API çağrısı için Uç Nokta URL'sini sağlayın.
Kimlik doğrulama türünü seçin ve API'nizi çağırmak için kimlik doğrulama bilgilerini yapılandırın. API Bağlan güvenliğini sağlamayı öğrenin.
Kaydet'i seçin.
API'nize gönderilen istek
API bağlayıcısı, kullanıcı özniteliklerini ('claims') bir JSON gövdesinde anahtar-değer çiftleri olarak göndererek HTTP POST isteği olarak gerçekleştirilmiştir. Öznitelikler, Microsoft Graph kullanıcı özelliklerine benzer şekilde serileştirilir.
Örnek istek
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"objectId": "11111111-0000-0000-0000-000000000000",
"givenName":"John",
"surname":"Smith",
"jobTitle":"Supplier",
"streetAddress":"1000 Microsoft Way",
"city":"Seattle",
"postalCode": "12345",
"state":"Washington",
"country":"United States",
"extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
"extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
"step": "<step-name>",
"client_id":"93fd07aa-333c-409d-955d-96008fd08dd9",
"ui_locales":"en-US"
}
İstekte yalnızca Azure AD B2C Kullanıcı öznitelikleri deneyiminde listelenen kullanıcı özellikleri ve özel öznitelikler gönderilebilir.>
Özel öznitelikler dizindeki extension_<extensions-app-id>_CustomAttribute biçiminde bulunur. API'niz talepleri aynı serileştirilmiş biçimde almayı beklemelidir. Özel öznitelikler hakkında daha fazla bilgi için bkz . Azure AD B2C'de özel öznitelikleri tanımlama.
Ayrıca, bu talepler genellikle tüm isteklerde gönderilir:
- Kullanıcı Arabirimi Yerel Ayarları ('ui_locales') - Son kullanıcının cihazında yapılandırıldığı gibi yerel ayarları. Bu, API'niz tarafından uluslararası yanıtları döndürmek için kullanılabilir.
- Adım ('step') - API bağlayıcısının çağrıldığı kullanıcı akışındaki adım veya nokta. Değerler şunlardır:
PostFederationSignup
- "Kayıt sırasında bir kimlik sağlayıcısıyla federasyondan sonra" ifadesine karşılık gelirPostAttributeCollection
- "Kullanıcıyı oluşturmadan önce" ifadesine karşılık gelirPreTokenIssuance
- "Belirteci göndermeden önce (önizleme)" öğesine karşılık gelir. Bu adım hakkında daha fazla bilgi edinin
- İstemci Kimliği ('client_id') - Son
appId
kullanıcının bir kullanıcı akışında kimlik doğrulaması yaptığı uygulamanın değeri. Bu, erişim belirteçlerinde kaynak uygulamasınınappId
değil. - E-posta Adresi ('e-posta') veya kimlikler ('kimlikler') - Bu talepler API'niz tarafından uygulamada kimlik doğrulayan son kullanıcıyı tanımlamak için kullanılabilir.
Önemli
Bir talebin API uç noktası çağrıldığında bir değeri yoksa, talep API'ye gönderilmez. API'niz bir talebin istekte olmadığı durumu açıkça denetleyecek ve işleyecek şekilde tasarlanmalıdır.
Kullanıcı akışında API bağlayıcısını etkinleştirme
Kaydolma kullanıcı akışına API bağlayıcısı eklemek için bu adımları izleyin.
Azure Portal oturum açın.
Azure hizmetleri'nin altında Azure AD B2C'yi seçin.
Kullanıcı akışları'nı ve ardından API bağlayıcısını eklemek istediğiniz kullanıcı akışını seçin.
API bağlayıcıları'nı seçin ve ardından kullanıcı akışında aşağıdaki adımlarda çağırmak istediğiniz API uç noktalarını seçin:
- Kaydolma sırasında bir kimlik sağlayıcısıyla federasyon kurduktan sonra
- Kullanıcıyı oluşturmadan önce
- Belirteci göndermeden önce (önizleme)
Kaydet'i seçin.
Bu adımlar yalnızca Kaydolma ve oturum açma (Önerilen) ve Kaydolma (Önerilen) için geçerlidir, ancak yalnızca deneyimin kaydolma bölümüne uygulanır.
Kaydolma sırasında bir kimlik sağlayıcısıyla federasyon kurduktan sonra
Kayıt işleminin bu adımındaki bir API bağlayıcısı, kullanıcı bir kimlik sağlayıcısıyla (Google, Facebook ve Microsoft Entra Id gibi) kimlik doğrulaması yaptıktan hemen sonra çağrılır. Bu adım, kullanıcıya kullanıcı özniteliklerini toplamak için sunulan form olan öznitelik koleksiyonu sayfasından önce geçer. Bir kullanıcı yerel bir hesaba kaydoliyorsa bu adım çağrılmıyor.
Bu adımda API'ye gönderilen örnek istek
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"surname":"Smith",
"step": "PostFederationSignup",
"client_id":"<guid>",
"ui_locales":"en-US"
}
API'ye gönderilen tam talepler, kimlik sağlayıcısı tarafından sağlanan bilgilere bağlıdır. 'e-posta' her zaman gönderilir.
Bu adımda web API'sinden beklenen yanıt türleri
Web API'si bir kullanıcı akışı sırasında Microsoft Entra Id'den bir HTTP isteği aldığında şu yanıtları döndürebilir:
- Devam yanıtı
- Engelleme yanıtı
Devam yanıtı
Devamlılık yanıtı, kullanıcı akışının sonraki adıma devam etmesi gerektiğini belirtir: öznitelik koleksiyonu sayfası.
Bir devamlılık yanıtında API talepleri döndürebilir. API tarafından bir talep döndürülürse, talep aşağıdakileri yapar:
- Öznitelik koleksiyonu sayfasındaki giriş alanını önceden doldurur.
Devam yanıtı örneğine bakın.
Engelleme Yanıtı
Engelleme yanıtı kullanıcı akışından çıkar. Kullanıcıya bir blok sayfası görüntüleyerek kullanıcı akışının devamını durdurmak için API tarafından kasıtlı olarak yayımlanabilir. Blok sayfası, API tarafından sağlanan öğesini userMessage
görüntüler.
Engelleme yanıtı örneğine bakın.
Kullanıcıyı oluşturmadan önce
Kayıt işleminin bu adımındaki bir API bağlayıcısı, varsa öznitelik koleksiyonu sayfasından sonra çağrılır. Bu adım her zaman bir kullanıcı hesabı oluşturulmadan önce çağrılır.
Bu adımda API'ye gönderilen örnek istek
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"surname":"Smith",
"jobTitle":"Supplier",
"streetAddress":"1000 Microsoft Way",
"city":"Seattle",
"postalCode": "12345",
"state":"Washington",
"country":"United States",
"extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
"extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
"step": "PostAttributeCollection",
"client_id":"93fd07aa-333c-409d-955d-96008fd08dd9",
"ui_locales":"en-US"
}
API'ye gönderilen talepler, bilgilere bağlı olarak kullanıcıdan toplanır veya kimlik sağlayıcısı tarafından sağlanır.
Bu adımda web API'sinden beklenen yanıt türleri
Web API'si bir kullanıcı akışı sırasında Microsoft Entra Id'den bir HTTP isteği aldığında şu yanıtları döndürebilir:
- Devam yanıtı
- Engelleme yanıtı
- Doğrulama yanıtı
Devam yanıtı
Devamlılık yanıtı, kullanıcı akışının bir sonraki adıma devam etmesi gerektiğini belirtir: kullanıcıyı dizinde oluşturun.
Bir devamlılık yanıtında API talepleri döndürebilir. API tarafından bir talep döndürülürse, talep aşağıdakileri yapar:
- Öznitelik koleksiyonu sayfasında bir kullanıcı tarafından önceden sağlanmış olan tüm değerleri geçersiz kılar.
Kayıt sırasında dizine kullanıcıdan toplanmaması gereken talepler yazmak için, kullanıcı akışının Kullanıcı öznitelikleri bölümünden talepleri seçmeniz gerekir. Bu, varsayılan olarak kullanıcıdan değer isteyecektir, ancak giriş alanlarını son kullanıcıdan gizlemek için özel JavaScript veya CSS kullanabilirsiniz.
Devam yanıtı örneğine bakın.
Engelleme Yanıtı
Engelleme yanıtı kullanıcı akışından çıkar. Kullanıcıya bir blok sayfası görüntüleyerek kullanıcı akışının devamını durdurmak için API tarafından kasıtlı olarak yayımlanabilir. Blok sayfası, API tarafından sağlanan öğesini userMessage
görüntüler.
Engelleme yanıtı örneğine bakın.
Doğrulama hatası yanıtı
API doğrulama hatası yanıtıyla yanıtladığında, kullanıcı akışı öznitelik koleksiyonu sayfasında kalır ve kullanıcıya bir userMessage
görüntülenir. Daha sonra kullanıcı formu düzenleyebilir ve yeniden gönderebilir. Bu tür bir yanıt, giriş doğrulaması için kullanılabilir.
Doğrulama hatası yanıtı örneğine bakın.
Belirteci göndermeden önce (önizleme)
Önemli
Bu adımda kullanılan API bağlayıcıları önizleme aşamasındadır. Önizlemeler hakkında daha fazla bilgi için bkz . Çevrimiçi Hizmetler için Ürün Koşulları.
Bu adımda bir API bağlayıcısı, oturum açma ve kaydolma işlemleri sırasında bir belirteç verilmek üzere olduğunda çağrılır. Bu adım için api bağlayıcısı, belirteci dış kaynaklardan gelen talep değerleriyle zenginleştirmek için kullanılabilir.
Bu adımda API'ye gönderilen örnek istek
POST <API-endpoint>
Content-type: application/json
{
"clientId": "231c70e8-8424-48ac-9b5d-5623b9e4ccf3",
"step": "PreTokenApplicationClaims",
"ui_locales":"en-US",
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
"extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
}
API'ye gönderilen talepler, kullanıcı için tanımlanan bilgilere bağlıdır.
Bu adımda web API'sinden beklenen yanıt türleri
Web API'si bir kullanıcı akışı sırasında Microsoft Entra Id'den bir HTTP isteği aldığında şu yanıtları döndürebilir:
- Devam yanıtı
Devam yanıtı
Devam yanıtı, kullanıcı akışının sonraki adıma devam etmesi gerektiğini belirtir: belirteci verme.
Devam yanıtında API ek talepler döndürebilir. Belirteçte döndürmek istediğiniz API tarafından döndürülen bir talep, yerleşik bir talep veya özel öznitelik olarak tanımlanmalıdır ve kullanıcı akışının Uygulama talepleri yapılandırmasında seçilmelidir.
Belirteçteki talep değeri, dizindeki değer değil API tarafından döndürülen değerdir. API yanıtı bazı talep değerlerinin üzerine yazılamaz. API tarafından döndürülebilen talepler, dışında email
Kullanıcı öznitelikleri altında bulunan kümeye karşılık gelir.
Devam yanıtı örneğine bakın.
Dekont
API yalnızca ilk kimlik doğrulaması sırasında çağrılır. Yeni erişim veya kimlik belirteçlerini sessizce almak için yenileme belirteçlerini kullanırken, belirteç ilk kimlik doğrulaması sırasında değerlendirilen değerleri içerir.
Örnek yanıtlar
Devam yanıtı örneği
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "Continue",
"postalCode": "12349", // return claim
"extension_<extensions-app-id>_CustomAttribute": "value" // return claim
}
Parametre | Türü | Zorunlu | Açıklama |
---|---|---|---|
sürüm | Dize | Evet | API'nizin sürümü. |
eylem | String | Evet | Değer olmalıdır Continue . |
<builtInUserAttribute> | <öznitelik türü> | Hayır | Döndürülen değerler bir kullanıcıdan toplanan değerlerin üzerine yazabilir. |
<extension_{extensions-app-id}_CustomAttribute> | <öznitelik türü> | Hayır | Talebin içermesi _<extensions-app-id>_ gerekmez, isteğe bağlıdır. Döndürülen değerler bir kullanıcıdan toplanan değerlerin üzerine yazabilir. |
Engelleme yanıtı örneği
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "ShowBlockPage",
"userMessage": "There was a problem with your request. You are not able to sign up at this time. Please contact your system administrator",
}
Parametre | Türü | Zorunlu | Açıklama |
---|---|---|---|
sürüm | Dize | Evet | API'nizin sürümü. |
eylem | String | Evet | Değer şu olmalıdır: ShowBlockPage |
userMessage | String | Evet | Kullanıcıya görüntülenecek ileti. |
Engelleme yanıtıyla son kullanıcı deneyimi
Doğrulama hatası yanıtı örneği
HTTP/1.1 400 Bad Request
Content-type: application/json
{
"version": "1.0.0",
"status": 400,
"action": "ValidationError",
"userMessage": "Please enter a valid Postal Code."
}
Parametre | Türü | Zorunlu | Açıklama |
---|---|---|---|
sürüm | Dize | Evet | API'nizin sürümü. |
eylem | String | Evet | Değer olmalıdır ValidationError . |
status | Tamsayı / Dize | Evet | Bir ValidationError yanıtı için veya "400" değeri 400 olmalıdır. |
userMessage | String | Evet | Kullanıcıya görüntülenecek ileti. |
Dekont
HTTP durum kodu, yanıtın gövdesindeki "status" değerine ek olarak "400" olmalıdır.
Doğrulama hatası yanıtıyla son kullanıcı deneyimi
REST API uç noktası hazırlama
Bu kılavuzda, arka uç sisteminizde bir e-posta adresinin bağlılık programı kimliğiyle kaydedilip kaydedilmediğini doğrulayan bir REST API'niz olmalıdır. Kayıtlıysa REST API, müşterinin uygulamanızdaki ürünleri satın almak için kullanabileceği bir kayıt yükseltme kodu döndürmelidir. Aksi takdirde, REST API bir HTTP 409 hata iletisi döndürmelidir: "Sadakat Kimliği '{sadakat kimliği}' '{email}' e-posta adresiyle ilişkilendirilmemiş.".
Aşağıdaki JSON kodu, Azure AD B2C'nin REST API uç noktanıza göndereceği verileri gösterir.
{
"email": "User email address",
"language": "Current UI language",
"loyaltyId": "User loyalty ID"
}
REST API'niz verileri doğruladıktan sonra aşağıdaki JSON verilerini içeren bir HTTP 200 (Tamam) döndürmelidir:
{
"promoCode": "24534"
}
Doğrulama başarısız olursa, REST API'nin JSON öğesiyle bir HTTP 409 (Çakışma) döndürmesi userMessage
gerekir. IEF, REST API'nin userMessage
döndürdüğü talebi bekler. Doğrulama başarısız olursa bu talep kullanıcıya bir dize olarak sunulur.
{
"version": "1.0.1",
"status": 409,
"userMessage": "LoyaltyId ID '1234' is not associated with 'david@contoso.com' email address."
}
REST API uç noktasının kurulumu bu makalenin kapsamı dışındadır. bir Azure İşlevleri örneği oluşturduk. Azure işlev kodunun tamamına GitHub'dan erişebilirsiniz.
Beyanları tanımlama
Talep, Azure AD B2C ilkesi yürütme sırasında verilerin geçici olarak depolanmasını sağlar. Talep şeması bölümünde talepleri bildirebilirsiniz.
- İlkenizin uzantılar dosyasını açın. Örneğin,
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
. - BuildingBlocks öğesini arayın. Öğesi yoksa ekleyin.
- ClaimsSchema öğesini bulun. Öğesi yoksa ekleyin.
- ClaimsSchema öğesine aşağıdaki talepleri ekleyin.
<ClaimType Id="loyaltyId">
<DisplayName>Your loyalty ID</DisplayName>
<DataType>string</DataType>
<UserInputType>TextBox</UserInputType>
</ClaimType>
<ClaimType Id="promoCode">
<DisplayName>Your promo code</DisplayName>
<DataType>string</DataType>
<UserInputType>Paragraph</UserInputType>
</ClaimType>
<ClaimType Id="userLanguage">
<DisplayName>User UI language (used by REST API to return localized error messages)</DisplayName>
<DataType>string</DataType>
</ClaimType>
RESTful API teknik profilini ekleme
Restful teknik profili, kendi RESTful hizmetinize geçiş için destek sağlar. Azure AD B2C, bir InputClaims
koleksiyondaki RESTful hizmetine veri gönderir ve verileri bir OutputClaims
koleksiyona geri alır. ClaimsProviders öğesini bulun ve aşağıdaki gibi yeni bir talep sağlayıcısı ekleyin:
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-ValidateProfile">
<DisplayName>Check loyaltyId Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<!-- Set the ServiceUrl with your own REST API endpoint -->
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/ValidateProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<!-- Set AuthenticationType to Basic or ClientCertificate in production environments -->
<Item Key="AuthenticationType">None</Item>
<!-- REMOVE the following line in production environments -->
<Item Key="AllowInsecureAuthInProduction">true</Item>
</Metadata>
<InputClaims>
<!-- Claims sent to your REST API -->
<InputClaim ClaimTypeReferenceId="loyaltyId" />
<InputClaim ClaimTypeReferenceId="email" />
<InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
</InputClaims>
<OutputClaims>
<!-- Claims parsed from your REST API -->
<OutputClaim ClaimTypeReferenceId="promoCode" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Bu örnekte, userLanguage
JSON yükünde olduğu gibi lang
REST hizmetine gönderilir. Talebin userLanguage
değeri geçerli kullanıcı dili kimliğini içerir. Daha fazla bilgi için bkz . talep çözümleyicisi.
RESTful API teknik profilini yapılandırma
REST API'nizi dağıttığınızda teknik profilin REST-ValidateProfile
meta verilerini aşağıdakiler dahil olmak üzere kendi REST API'nizi yansıtacak şekilde ayarlayın:
- ServiceUrl. REST API uç noktasının URL'sini ayarlayın.
- SendClaimsIn. Giriş taleplerinin RESTful talep sağlayıcısına nasıl gönderileceğini belirtin.
- AuthenticationType. RESTful talep sağlayıcısı tarafından gerçekleştirilmekte olan kimlik doğrulama türünü ayarlayın.
- AllowInsecureAuthInProduction. Üretim ortamında bu meta verileri
true
Daha fazla yapılandırma için restful teknik profil meta verilerine bakın.
Yukarıdaki AuthenticationType
açıklamalar ve AllowInsecureAuthInProduction
bir üretim ortamına geçerken yapmanız gereken değişiklikleri belirtin. RESTful API'lerinizin üretim için güvenliğini sağlamayı öğrenmek için bkz . RESTful API'sini güvenlileştirme.
Kullanıcı girişini doğrulama
Kayıt sırasında kullanıcının sadakat numarasını almak için, kullanıcının bu verileri ekrana girmesine izin vermelisiniz. Var olan kaydolma teknik profili bölümünün OutputClaims
öğesine ekleyerek, loyaltyId çıkış beyanını kaydolma sayfasına ekleyin. Taleplerin ekranda sunulma sırasını denetlemek için çıkış talepleri listesinin tamamını belirtin.
Doğrulama teknik profili başvurularını kaydolma teknik profiline ekleyin ve bu da öğesini REST-ValidateProfile
çağırır. Yeni doğrulama teknik profili, temel ilkede tanımlanan koleksiyonun <ValidationTechnicalProfiles>
en üstüne eklenir. Bu davranış, yalnızca başarılı doğrulamadan sonra Azure AD B2C'nin dizinde hesap oluşturmak üzere geçiş yaptığı anlamına gelir.
ClaimsProviders öğesini bulun. Aşağıdaki gibi yeni bir talep sağlayıcısı ekleyin:
<ClaimsProvider> <DisplayName>Local Account</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true"/> <OutputClaim ClaimTypeReferenceId="newPassword" Required="true"/> <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true"/> <OutputClaim ClaimTypeReferenceId="displayName"/> <OutputClaim ClaimTypeReferenceId="givenName"/> <OutputClaim ClaimTypeReferenceId="surName"/> <!-- Required to present the text box to collect the data from the user --> <OutputClaim ClaimTypeReferenceId="loyaltyId"/> <!-- Required to pass the promoCode returned from "REST-ValidateProfile" to subsequent orchestration steps and token issuance--> <OutputClaim ClaimTypeReferenceId="promoCode" /> </OutputClaims> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile" /> </ValidationTechnicalProfiles> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <ClaimsProvider> <DisplayName>Self Asserted</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="SelfAsserted-Social"> <InputClaims> <InputClaim ClaimTypeReferenceId="email" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="email" /> <OutputClaim ClaimTypeReferenceId="displayName"/> <OutputClaim ClaimTypeReferenceId="givenName"/> <OutputClaim ClaimTypeReferenceId="surname"/> <!-- Required to present the text box to collect the data from the user --> <OutputClaim ClaimTypeReferenceId="loyaltyId"/> <!-- Required to pass the promoCode returned from "REST-ValidateProfile" to subsequent orchestration steps and token issuance--> <OutputClaim ClaimTypeReferenceId="promoCode" /> </OutputClaims> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile"/> </ValidationTechnicalProfiles> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Belirteçte talep ekleme
Promosyon kodu beyanını bağlı olan taraf uygulamasına geri döndürmek için dosyaya SocialAndLocalAccounts/
SignUpOrSignIn.xml
bir çıkış talebi ekleyin. Çıkış talebi, talebin başarılı bir kullanıcı yolculuğundan sonra belirteci eklemesine izin verir ve uygulamaya gönderilir. Çıkış talebi olarak eklemek promoCode
için bağlı olan taraf bölümündeki teknik profil öğesini değiştirin.
<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" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<OutputClaim ClaimTypeReferenceId="promoCode" DefaultValue="" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
Özel ilkeyi test edin
- Azure Portal oturum açın.
- Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden Microsoft Entra Id kiracınıza geçmek için üstteki menüden Ayarlar simgesini seçin.
- Azure portalının sol üst köşesindeki Tüm hizmetler'i seçin ve ardından Uygulama kayıtları arayıp seçin.
- Kimlik Deneyimi Çerçevesi'ne tıklayın.
- Özel İlkeyi Karşıya Yükle'yi seçin ve değiştirdiğiniz ilke dosyalarını karşıya yükleyin: TrustFrameworkExtensions.xml ve SignUpOrSignin.xml.
- Karşıya yüklediğiniz kaydolma veya oturum açma ilkesini seçin ve Şimdi çalıştır düğmesine tıklayın.
- E-posta adresi kullanarak kaydolabilmeniz gerekir.
- Şimdi kaydol bağlantısına tıklayın.
- Sadakat kimliğiniz alanına 1234 yazın ve Devam'a tıklayın. Bu noktada bir doğrulama hata iletisi almanız gerekir.
- Başka bir değere geçin ve Devam'a tıklayın.
- Uygulamanıza geri gönderilen belirteç, talebi içerir
promoCode
.
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
"exp": 1584295703,
"nbf": 1584292103,
"ver": "1.0",
"iss": "https://contoso.b2clogin.com/f06c2fe8-709f-4030-85dc-38a4bfd9e82d/v2.0/",
"aud": "e1d2612f-c2bc-4599-8e7b-d874eaca1ee1",
"acr": "b2c_1a_signup_signin",
"nonce": "defaultNonce",
"iat": 1584292103,
"auth_time": 1584292103,
"name": "Emily Smith",
"email": "emily@outlook.com",
"given_name": "Emily",
"family_name": "Smith",
"promoCode": "84362"
...
}
En iyi yöntemler ve sorun giderme
Sunucusuz bulut işlevlerini kullanma
Azure İşlevleri'daki HTTP tetikleyicileri gibi sunucusuz işlevler, API bağlayıcısı ile kullanmak üzere API uç noktaları oluşturmanın bir yolunu sağlar. Sunucusuz bulut işlevini kullanarak doğrulama mantığı gerçekleştirebilir ve kaydolma işlemlerini belirli e-posta etki alanlarıyla sınırlandırabilirsiniz. Sunucusuz bulut işlevi ayrıca karmaşık senaryolar için diğer web API'lerini, veri depolarını ve diğer bulut hizmetlerini çağırabilir ve çağırabilir.
En iyi yöntemler
Şunlardan emin olun:
- API'niz yukarıda açıklandığı gibi API isteği ve yanıt sözleşmelerini takip ediyor.
- API bağlayıcısının Uç Nokta URL'si doğru API uç noktasını gösterir.
- API'niz, bağımlı olduğu alınan taleplerin null değerlerini açıkça denetler.
- API'niz, API Bağlan veya güvenli bir şekilde özetlenen bir kimlik doğrulama yöntemi uygular.
- Akıcı bir kullanıcı deneyimi sağlamak için API'niz mümkün olan en kısa sürede yanıt verir.
- Azure AD B2C yanıt almak için en fazla 20 saniye bekler. Hiçbiri alınmazsa, API'nizi çağırmak için bir kez daha deneme (yeniden deneme) yapar.
- Sunucusuz bir işlev veya ölçeklenebilir bir web hizmeti kullanıyorsanız, API'yi üretimde "uyanık" veya "sıcak" tutan bir barındırma planı kullanın. Azure İşlevleri için üretimde en azından Premium planı kullanmanız önerilir.
- API'nizin yüksek kullanılabilirliğini sağlayın.
- Aşağı akış API'lerinin, veritabanlarının veya API'nizin diğer bağımlılıklarının performansını izleyin ve iyileştirin.
Önemli
Uç noktalarınız Azure AD B2C güvenlik gereksinimlerine uygun olmalıdır. Eski TLS sürümleri ve şifreleri kullanım dışıdır. Daha fazla bilgi için bkz . Azure AD B2C TLS ve şifre paketi gereksinimleri.
Günlüğe kaydetmeyi kullanma
Genel olarak, api'nizi beklenmeyen hata kodları, özel durumlar ve düşük performans açısından izlemek için Application Insights gibi web API hizmetinizin etkinleştirdiği günlük araçlarını kullanmak yararlı olur.
- HTTP 200 veya 400 olmayan HTTP durum kodlarını izleyin.
- 401 veya 403 HTTP durum kodu genellikle kimlik doğrulamanızla ilgili bir sorun olduğunu gösterir. API'nizin kimlik doğrulama katmanını ve API bağlayıcısında ilgili yapılandırmayı bir kez daha denetleyin.
- Gerekirse geliştirme aşamasında daha agresif günlük düzeyleri (örneğin "izleme" veya "hata ayıklama") kullanın.
- API'nizi uzun yanıt süreleri için izleyin.
Ayrıca Azure AD B2C, kullanıcı akışı aracılığıyla kullanıcı kimlik doğrulaması sırasında gerçekleşen API işlemleriyle ilgili meta verileri günlüğe kaydeder. Bunları bulmak için:
- Azure AD B2C'ye gidin.
- Etkinlikler'in altında Denetim günlükleri'ne tıklayın.
- Liste görünümünü filtreleme: Tarih için istediğiniz zaman aralığını seçin ve Etkinlik için Kullanıcı akışının parçası olarak çağrılan bir API'yi seçin.
- Tek tek günlükleri inceleyin. Her satır, kullanıcı akışı sırasında çağrılmaya çalışan bir API bağlayıcısını temsil eder. API çağrısı başarısız olursa ve yeniden deneme gerçekleşirse, yine de tek bir satır olarak gösterilir. ,
numberOfAttempts
API'nizin kaç kez çağrıldığını gösterir. Bu değer veya2
olabilir1
. API çağrısıyla ilgili diğer bilgiler günlüklerde ayrıntılı olarak verilmiştir.
Sunucusuz bulut işlevlerini kullanma
Azure İşlevleri'daki HTTP tetikleyicileri gibi sunucusuz bulut işlevleri, API bağlayıcısı olarak kullanılacak API uç noktaları oluşturmak için basit, yüksek oranda kullanılabilir, yüksek performanslı bir yol sağlar.
En iyi yöntemler
Şunlardan emin olun:
- API'niz, bağımlı olduğu alınan taleplerin null değerlerini açıkça denetler.
- API'niz, API Bağlan veya güvenli bir şekilde özetlenen bir kimlik doğrulama yöntemi uygular.
- Akıcı bir kullanıcı deneyimi sağlamak için API'niz mümkün olan en kısa sürede yanıt verir.
- Sunucusuz bir işlev veya ölçeklenebilir bir web hizmeti kullanıyorsanız, API'yi üretimde "uyanık" veya "sıcak" tutan bir barındırma planı kullanın. Azure İşlevleri için en azından Premium planı kullanmanız önerilir
- API'nizin yüksek kullanılabilirliğini sağlayın.
- Aşağı akış API'lerinin, veritabanlarının veya API'nizin diğer bağımlılıklarının performansını izleyin ve iyileştirin.
Önemli
Uç noktalarınız Azure AD B2C güvenlik gereksinimlerine uygun olmalıdır. Eski TLS sürümleri ve şifreleri kullanım dışıdır. Daha fazla bilgi için bkz . Azure AD B2C TLS ve şifre paketi gereksinimleri.
Günlüğe kaydetmeyi kullanma
Genel olarak, api'nizi beklenmeyen hata kodları, özel durumlar ve düşük performans açısından izlemek için Application Insights gibi web API hizmetinizin etkinleştirdiği günlük araçlarını kullanmak yararlı olur.
- HTTP 200 veya 400 olmayan HTTP durum kodlarını izleyin.
- 401 veya 403 HTTP durum kodu genellikle kimlik doğrulamanızla ilgili bir sorun olduğunu gösterir. API'nizin kimlik doğrulama katmanını ve API bağlayıcısında ilgili yapılandırmayı bir kez daha denetleyin.
- Gerekirse geliştirme aşamasında daha agresif günlük düzeyleri (örneğin "izleme" veya "hata ayıklama") kullanın.
- API'nizi uzun yanıt süreleri için izleyin.
Sonraki adımlar
- Örneklerimizi kullanmaya başlayın.
- API Bağlan veyanızın güvenliğini sağlama