Kaydolma kullanıcı akışına API bağlayıcısı ekleme

Önemli

1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacaktır. SSS bölümünden daha fazla bilgi edinebilirsiniz.

Başlamadan önce, ayarlamakta olduğunuz ilke türünü seçmek için bu sayfanın üst kısmındaki İlke türü seç 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 tamamen yapılandırılabilir özel ilkeler. Bu makalede gerekli adımlar her yöntem için farklıdır.

Geliştirici veya BT yöneticisi olarak, kaydolma kullanıcı akışlarını REST API'lerle tümleştirmek için API bağlayıcılarını kullanarak kaydolma deneyimini özelleştirmeyi ve dış sistemlerle tümleştirmeyi etkinleştirebilirsiniz. Bu kılavuzun sonunda, kaydolma deneyimlerinizi değiştirmek için REST API hizmetleri ile etkileşim kuran bir Azure AD B2C kullanıcı akışı oluşturabileceksiniz.

Örneklerimizden birini kullanarak bir API uç noktası oluşturabilirsiniz.

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 kullanabilmesi için token talep bilgilerinin içine 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. Walkthrough: REST API talep değişimlerini Azure AD B2C kullanıcı yolculuğunuzda düzenleme adımı olarak tümleştirme.

Önkoşullar

  • Active Directory B2C'da özel ilkelerle çalışmaya başlama bölümündeki adımları tamamlayın. Bu öğretici, özel ilke dosyalarını Azure AD B2C kiracı yapılandırmanızı kullanacak şekilde güncelleştirme konusunda size yol gösterir.
  • 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.

  1. Azure portalında oturum açın.

  2. Azure services altında Azure AD B2C öğesini seçin.

  3. API bağlayıcıları'nı ve ardından Yeni API bağlayıcısı'nı seçin.

    API bağlayıcısı için temel yapılandırmanın ekran görüntüsü

  4. Arama için bir görünen ad sağlayın. Örneğin, Kullanıcı bilgilerini doğrulayın.

  5. API çağrısı için Uç Nokta URL'sini sağlayın.

  6. 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ğlayıcınızın güvenliğini sağlamayı öğrenin.

    API bağlayıcısı için kimlik doğrulama yapılandırmasının ekran görüntüsü

  7. Kaydetseçeneğini seçin.

API'nize gönderilen istek

API bağlayıcısı, kullanıcı özniteliklerini ('claims') JSON gövdesinde anahtar-değer çiftleri olarak göndererek bir HTTP POST isteği şeklinde oluşur. Ö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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
 "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":"00001111-aaaa-2222-bbbb-3333cccc4444",
 "ui_locales":"en-US"
}

İstekte yalnızca Azure AD B2C>User ö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 Ö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ındaki yapılandırılmış 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 federasyon gerçekleştirdikten sonra" ifadesine karşılık gelir
    • PostAttributeCollection - "Kullanıcıyı oluşturmadan önce" ifadesine karşılık gelir
    • PreTokenIssuance - "Belirteci göndermeden önce (önizleme)"ye karşılık gelir. Bu adım hakkında daha fazla bilgi edinin
  • İstemci Kimliği ('client_id') - Son appId kullanıcının kullanıcı akışında kimlik doğrulaması yaptığı uygulamanın değeri. Bu, erişim belirteçlerinde kaynak uygulamasının appId.
  • 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.

  1. Azure portalında oturum açın.

  2. Azure services altında Azure AD B2C öğesini seçin.

  3. Kullanıcı akışları'nı ve ardından API bağlayıcısını eklemek istediğiniz kullanıcı akışını seçin.

  4. 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)

    Kullanıcı akışındaki bir adım için API bağlayıcısı seçme

  5. Kaydetseçeneğini 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

Kullanıcı bir kimlik sağlayıcısıyla (Google, Facebook ve Microsoft Entra ID gibi) kimlik doğrulaması yaptıktan hemen sonra kaydolma işlemindeki bu adımda bir API bağlayıcısı ç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'dan http isteği aldığında şu yanıtları döndürebilir:

  • Devam eden yanıt
  • Engelleme yanıtı

Devam eden yanıt

Devamlılık yanıtı, kullanıcı akışının sonraki adıma devam etmesi gerektiğini belirtir: öznitelik koleksiyonu sayfası.

Bir devam yanıtında API iddiaları 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 userMessage öğesini 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":"00001111-aaaa-2222-bbbb-3333cccc4444",
 "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'dan http isteği aldığında şu yanıtları döndürebilir:

  • Devam eden yanıt
  • Engelleme yanıtı
  • Doğrulama yanıtı

Devam eden 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 devam yanıtında API iddiaları 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 userMessage öğesini 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.

Jetonu 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": "11112222-bbbb-3333-cccc-4444dddd5555",
 "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'dan http isteği aldığında şu yanıtları döndürebilir:

  • Devam eden yanıt

Devam eden yanıt

Devam yanıtı, kullanıcı akışının sonraki adıma devam etmesi gerektiğini belirtir: token oluşturulması.

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 iddialar, dışındaki email altında bulunan kümeye karşılık gelir.

Devam yanıtı örneğine bakın.

Uyarı

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 eden 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ü Gerekli Açıklama
Sürüm Dize Evet API'nizin sürümü.
hareket Dize Evet Değer olmalıdır Continue.
<yerleşikKullanıcıÖzniteliği> <öznitelik türü> Hayı Döndürülen değerler, kullanıcıdan toplanan değerlerin üzerine yazabilir.
<uzantı_{extensions-app-id}_ÖzelleştirilmişÖzellik> <öznitelik türü> Hayı Talebin içermesi _<extensions-app-id>_gerekmez, isteğe bağlıdır. Döndürülen değerler, 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ü Gerekli Açıklama
Sürüm Dize Evet API'nizin sürümü.
hareket Dize Evet Değer şu olmalıdır: ShowBlockPage
kullanıcıMesajı Dize Evet Kullanıcıya görüntülenecek ileti.

Engelleme yanıtıyla son kullanıcı deneyimi

Engelleme yanıtı örneği

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ü Gerekli Açıklama
Sürüm Dize Evet API'nizin sürümü.
hareket Dize Evet Değer olmalıdır ValidationError.
statü Tamsayı / Dize Evet Bir ValidationError yanıtı için veya 400 değeri "400"olmalıdır.
kullanıcıMesajı Dize Evet Kullanıcıya görüntülenecek ileti.

Uyarı

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

Doğrulama hatası yanıtı örneği

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, AD B2C'nin REST API uç noktanıza göndereceği Azure 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 döndürdüğü userMessage yanıtını 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. GitHub adresinden tam Azure işlev koduna 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.

  1. Politika uzantılar dosyanızı açın. Örneğin, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. BuildingBlocks öğesini arayın. Öğesi yoksa ekleyin.
  3. ClaimsSchema öğesini bulun. Öğesi yoksa ekleyin.
  4. 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, InputClaims koleksiyonundaki RESTful hizmetine veri gönderir ve verileri bir OutputClaims koleksiyonuna 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 verilerini true olarak ayarladığınızdan emin olun.

Daha fazla yapılandırma için restful teknik profil meta verilerine bakın.

Yukarıdaki AuthenticationType ve AllowInsecureAuthInProduction açıklamalar, bir üretim ortamına geçerken yapmanız gereken değişiklikleri belirtir. 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 öğesine ekleyerekOutputClaims çı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 doğrulama başarılı olduktan sonra Azure AD B2C'nin dizinde hesabı oluşturmaya geçmesi anlamına gelir.

  1. 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. Başarılı bir kullanıcı yolculuğunun ardından çıktı talebi belirtece eklenir ve uygulamaya gönderilir. Bağlı olan taraf bölümündeki teknik profil öğesini değiştirerek `promoCode` öğesini çıkış talebi olarak ekleyin.

<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

  1. Azure portalında oturum açın.
  2. Birden çok kiracıya erişiminiz varsa üstteki menüden Settings simgesini seçerek Directories + subscriptions menüsünden Microsoft Entra ID kiracınıza geçin.
  3. Azure portalın sol üst köşesinde Tüm hizmetler öğesini seçin ve ardından Uygulama kayıtları için arama yapın ve seçin.
  4. Kimlik Deneyimi Çerçevesi'ne tıklayın.
  5. Özel İlkeyi Karşıya Yükle'yi seçin ve değiştirdiğiniz ilke dosyalarını karşıya yükleyin: TrustFrameworkExtensions.xmlve SignUpOrSignin.xml.
  6. Karşıya yüklediğiniz kaydolma veya oturum açma ilkesini seçin ve Şimdi çalıştır düğmesine tıklayın.
  7. E-posta adresi kullanarak kaydolabilmeniz gerekir.
  8. Şimdi kaydol bağlantısına tıklayın.
  9. Sadakat kimliğiniz alanına 1234 yazın ve Devam'a tıklayın. Bu noktada bir doğrulama hata iletisi almanız gerekir.
  10. Başka bir değere geçin ve Devam'a tıklayın.
  11. Uygulamanıza geri gönderilen belirteç, promoCode talebini içerir.
{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "exp": 1584295703,
  "nbf": 1584292103,
  "ver": "1.0",
  "iss": "https://contoso.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/",
  "aud": "22223333-cccc-4444-dddd-5555eeee6666",
  "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 içindeki HTTP tetikleyicileri gibi sunucusuz işlevler, API bağlayıcısı ile kullanılacak 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, karmaşık senaryolar için diğer web API'lerini, veri depolarını ve diğer bulut hizmetlerini çağırabilir ve tetikleyebilir.

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ğlayıcınızın güvenliğini sağlama bölümünde ö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 10 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 Premium planı kullanılması ö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 kullan

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 kayıt seviyeleri (ö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:

  1. Azure AD B2C gidin.
  2. Etkinlikler altında, Denetim günlüklerini seçin.
  3. 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.
  4. 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 1 veya 2 olabilir. API çağrısıyla ilgili diğer bilgiler günlüklerde ayrıntılı olarak verilmiştir.

Kullanıcı kimlik doğrulaması sırasında API bağlayıcısı işlemi örneği

Sunucusuz bulut işlevlerini kullanma

Azure İşlevleri içindeki 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ğlayıcınızın güvenliğini sağlama bölümünde ö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ının
  • 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 kullan

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 kayıt seviyeleri (örneğin "izleme" veya "hata ayıklama") kullanın.
  • API'nizi uzun yanıt süreleri için izleyin.

Sonraki adımlar