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.

Ö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 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

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 oturum açın.

  2. Azure hizmetleri'nin altında Azure AD B2C'yi seçin.

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

    Screenshot of basic configuration for an API connector

  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ğlan güvenliğini sağlamayı öğrenin.

    Screenshot of authentication configuration for an API connector

  7. 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 gelir
    • PostAttributeCollection - "Kullanıcıyı oluşturmadan önce" ifadesine karşılık gelir
    • PreTokenIssuance - "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ın appId 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.

  1. Azure Portal oturum açın.

  2. Azure hizmetleri'nin altında Azure AD B2C'yi 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)

    Selecting an API connector for a step in the user flow

  5. 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 emailKullanı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

Example of a blocking response

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 400olmalı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

Example of a validation-error response

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.

  1. İlkenizin uzantılar dosyasını 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, 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.

  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. Çı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

  1. Azure Portal oturum açın.
  2. 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.
  3. Azure portalının sol üst köşesindeki Tüm hizmetler'i seçin ve ardından Uygulama kayıtları arayıp 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.xml ve 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ç, 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:

  1. Azure AD B2C'ye gidin.
  2. Etkinlikler'in altında Denetim günlükleri'ne tıklayın.
  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 veya 2olabilir1. API çağrısıyla ilgili diğer bilgiler günlüklerde ayrıntılı olarak verilmiştir.

Example of an API connector transaction during user authentication

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