Azure AD B2C özel ilkeleri ve kullanıcı akışlarıyla ilgili sorunları giderme

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.

Uygulamanızın Azure B2C hizmetinden gelen bazı hataları işlemesi gerekiyor. Bu makalede bazı yaygın hatalar ve bunların nasıl işleneceğini vurgulanır.

Parola sıfırlama hatası

Bu hata, kullanıcı akışında self servis parola sıfırlama deneyimi etkinleştirilmediğinde oluşur. Bu nedenle Parolanızı mı unuttunuz? bağlantısı seçildiğinde parola sıfırlama kullanıcı akışı tetiklemez. Bunun yerine hata kodu AADB2C90118 uygulamanıza döndürülür.

Bu sorunun 2 çözümü vardır:

Kullanıcı işlemi iptal etti

Azure AD B2C hizmeti, kullanıcı işlemi iptal ettiğinde uygulamanıza bir hata da döndürebilir. Aşağıda, kullanıcının iptal işlemi gerçekleştirdiği senaryo örnekleri verilmiştir:

  • Kullanıcı ilkesi, tüketici yerel hesabıyla önerilen self servis parola sıfırlama (SSPR) deneyimini kullanır. Kullanıcı, Parolanızı mı unuttunuz? bağlantısını seçer ve ardından kullanıcı akışı deneyimi tamamlanmadan önce İptal düğmesini seçer. Bu durumda Azure AD B2C hizmeti uygulamanıza hata kodu AADB2C90091 döndürür.
  • Kullanıcı LinkedIn gibi bir dış kimlik sağlayıcısıyla kimlik doğrulaması yapmayı seçer. Kullanıcı, kimlik sağlayıcısının kimliğini doğrulamadan önce İptal düğmesini seçer. Bu durumda Azure AD B2C hizmeti uygulamanıza hata kodu AADB2C90273 döndürür. Azure Active Directory B2C hizmeti dönüş hata kodları hakkında daha fazla bilgi edinin.

Bu hatayı işlemek için, kullanıcının hata açıklamasını getirin ve aynı kullanıcı akışını kullanarak yeni bir kimlik doğrulama isteğiyle yanıt verin.

Azure Active Directory B2C (Azure AD B2C) özel ilkelerini kullanıyorsanız, ilke dili XML biçimi veya çalışma zamanı sorunlarıyla karşılaşabilirsiniz. Bu makalede, sorunları keşfetmenize ve çözmenize yardımcı olabilecek bazı araçlar ve ipuçları açıklanmaktadır.

Bu makale, Azure AD B2C özel ilke yapılandırmanızın sorunlarını gidermeye odaklanır. Bağlı olan taraf uygulamasını veya kimlik kitaplığını ele almaz.

Azure AD B2C bağıntı kimliğine genel bakış

Azure AD B2C bağıntı kimliği, yetkilendirme isteklerine eklenmiş benzersiz bir tanımlayıcı değeridir. Kullanıcının geçtiği tüm düzenleme adımlarından geçer. Bağıntı kimliği ile şunları yapabilirsiniz:

  • Uygulamanızda oturum açma etkinliğini belirleyin ve ilkenizin performansını izleyin.
  • Oturum açma isteğinin Azure Uygulaması Analizler günlüklerini bulun.
  • Bağıntı kimliğini REST API'nize geçirin ve oturum açma akışını tanımlamak için kullanın.

Her yeni oturum oluşturulduğunda bağıntı kimliği değiştirilir. İlkelerinizde hata ayıklarken, var olan tarayıcı sekmelerini kapattığınızdan veya yeni bir özel modda tarayıcı açtığınızdan emin olun.

Önkoşullar

  • Active Directory B2C'de özel ilkeleri kullanmaya başlama bölümündeki adımları tamamlayın.

Azure AD B2C bağıntı kimliğini alma

Bağıntı kimliğini Azure AD B2C'ye kaydolma veya oturum açma sayfasında bulabilirsiniz. Tarayıcınızda kaynağı görüntüle'yi seçin. Bağıntı, sayfanın en üstünde açıklama olarak görünür.

Screenshot of Azure AD B2C sign-in page view source.

Bağıntı kimliğini kopyalayın ve oturum açma akışına devam edin. Oturum açma davranışını gözlemlemek için bağıntı kimliğini kullanın. Daha fazla bilgi için bkz. Uygulama Analizler sorunlarını giderme.

Azure AD B2C bağıntı kimliğini yansıtma

Bağıntı kimliğini Azure AD B2C belirteçlerinize ekleyebilirsiniz. Bağıntı kimliğini eklemek için:

  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 bağıntı kimliği talebi ekleyin.

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="correlationId">
          <DisplayName>correlation ID</DisplayName>
          <DataType>string</DataType>
        </ClaimType>
      <!-- 
      </ClaimsSchema>
    </BuildingBlocks>-->
    
  5. İlkenizin bağlı olan taraf dosyasını açın. Örneğin, SocialAndLocalAccounts/SignUpOrSignIn.xml dosya. Çıkış talebi, başarılı bir kullanıcı yolculuğundan sonra belirteçe eklenir ve uygulamaya gönderilir. Çıkış talebi olarak eklemek correlationId 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="correlationId" DefaultValue="{Context:CorrelationId}" />
        </OutputClaims>
        <SubjectNamingInfo ClaimType="sub" />
      </TechnicalProfile>
    </RelyingParty>
    

Uygulama Analizler ile ilgili sorunları giderme

Özel ilkelerinizle ilgili sorunları tanılamak için Uygulama Analizler kullanın. Uygulama Analizler özel ilke kullanıcı yolculuğunuzun etkinliğini izler. Özel durumları tanılamak ve Azure AD B2C ile çeşitli talep sağlayıcıları arasındaki taleplerin değişimini gözlemlemek için bir yol sağlar. Talep sağlayıcıları kimlik sağlayıcıları, API tabanlı hizmetler, Azure AD B2C kullanıcı dizini ve diğer hizmetler gibi teknik profiller tarafından tanımlanır.

VS Code için Azure AD B2C uzantısını yüklemenizi öneririz. Azure AD B2C uzantısıyla günlükler sizin için ilke adına, bağıntı kimliğine (Uygulama Analizler bağıntı kimliğinin ilk bassamını sunar) ve günlük zaman damgasına göre düzenlenir. Bu özellik, yerel zaman damgasını temel alarak ilgili günlüğü bulmanıza ve Azure AD B2C tarafından yürütülen kullanıcı yolculuğunu görmenize yardımcı olur.

Dekont

  • Application Analizler'da yeni günlükleri görebilmeniz için genellikle beş dakikadan kısa bir gecikme süresi vardır.
  • Topluluk, kimlik geliştiricilerine yardımcı olmak için Azure AD B2C için Visual Studio Code uzantısını geliştirmiştir. Uzantı Microsoft tarafından desteklenmez ve kesinlikle olduğu gibi kullanılabilir hale getirilir.

Tek bir oturum açma akışı birden fazla Azure Uygulaması Analizler izlemesi verebilir. Aşağıdaki ekran görüntüsünde , B2C_1A_signup_signin ilkesi üç günlük içerir. Her günlük, oturum açma akışının bir bölümünü temsil eder.

Aşağıdaki ekran görüntüsünde, Azure Uygulaması Analizler izleme gezgini ile VS Code için Azure AD B2C uzantısı gösterilmektedir.

Screenshot of Azure AD B2C extension for VS Code with Azure Application Insights trace.

İzleme günlüğünü filtreleme

Azure AD B2C izleme gezginine odaklandığınızda, bağıntı kimliğinin ilk rakamını veya bulmak istediğiniz zamanı yazmaya başlayın. Azure AD B2C izleme gezgininin sağ üst kısmında şu ana kadar yazdıklarınız ve eşleşen izleme günlüklerinin vurgulandığı bir filtre kutusu görürsünüz.

Screenshot of Azure AD B2C extension Azure AD B2C trace explorer filter highlighting.

Filtre kutusunun üzerine gelindiğinde ve Tür üzerinde Filtreyi Etkinleştir'i seçtiğinizde yalnızca eşleşen izleme günlükleri gösterilir. Filtreyi temizlemek için 'X' Temizle düğmesini kullanın.

Screenshot of Azure AD B2C extension Azure AD B2C trace explorer filter.

Uygulama Analizler izleme günlüğü ayrıntıları

bir Azure Uygulaması Analizler izleme seçtiğinizde, uzantı aşağıdaki bilgileri içeren Uygulama Analizler ayrıntıları penceresini açar:

  • Uygulama Analizler - İlke adı, bağıntı kimliği, Azure Uygulaması lication Analizler izleme kimliği ve izleme zaman damgası dahil olmak üzere izleme günlüğü hakkındaki genel bilgiler.
  • Teknik profiller - İzleme günlüğünde görünen teknik profillerin listesi.
  • Talepler - İzleme günlüğünde ve bunların değerlerinde görünen taleplerin alfabetik listesi. İzleme günlüğünde farklı değerlerle birden çok kez bir talep görünüyorsa, => en yeni değeri işaret eder. Beklenen talep değerlerinin doğru ayarlandığını belirlemek için bu talepleri gözden geçirebilirsiniz. Örneğin, talep değerini denetleyen bir önkoşula sahipseniz, talepler bölümü beklenen akışın neden farklı davrandığını belirlemenize yardımcı olabilir.
  • Talep dönüştürme - İzleme günlüğünde görünen talep dönüştürmelerinin listesi. Her talep dönüştürmesi giriş taleplerini, giriş parametrelerini ve çıkış taleplerini içerir. Talep dönüştürme bölümü, gönderilen veriler ve talep dönüştürme işleminin sonucu hakkında içgörü sağlar.
  • Belirteçler - İzleme günlüğünde görünen belirteçlerin listesi. Belirteçler, temel alınan federasyon OAuth ve OpenId Bağlan kimlik sağlayıcısının belirteçlerini içerir. Federasyon kimlik sağlayıcısının belirteci, kimlik sağlayıcısı teknik profil çıkış taleplerini eşlemeniz için kimlik sağlayıcısının talepleri Azure AD B2C'ye nasıl döndürdüğü hakkında ayrıntılı bilgi verir.
  • Özel durumlar - İzleme günlüğünde görünen özel durumların veya önemli hataların listesi.
  • Uygulama Analizler JSON - Uygulama Analizler döndürdüğü ham veriler.

Aşağıdaki ekran görüntüsünde Uygulama Analizler izleme günlüğü ayrıntıları penceresinin bir örneği gösterilmektedir.

Screenshot of Azure AD B2C extension Azure AD B2C trace report.

JWT belirteçleriyle ilgili sorunları giderme

JWT belirteci doğrulama ve hata ayıklama amacıyla JWT'lerin kodunu çözmek için gibi https://jwt.msbir site kullanabilirsiniz. Belirteç denetimi için adresine https://jwt.ms yönlendirebilen bir test uygulaması oluşturun. Henüz yapmadıysanız bir web uygulaması kaydedin ve kimlik belirteci örtük verme özelliğini etkinleştirin.

Screenshot of JWT token preview.

İlkelerinizi web veya mobil uygulamanızdan bağımsız olarak test etmek için Şimdi çalıştır ve https://jwt.ms seçeneğini kullanın. Bu web sitesi bağlı olan taraf uygulaması gibi davranır. Azure AD B2C ilkenizin oluşturduğu JSON web belirtecinin (JWT) içeriğini görüntüler.

SAML protokolü sorunlarını giderme

Hizmet sağlayıcınızla tümleştirmeyi yapılandırmaya ve hatalarını ayıklamaya yardımcı olmak için SAML protokolü için tarayıcı uzantısını kullanabilirsiniz; örneğin, Chrome için SAML DevTools uzantısı, FireFox için SAML izleyicisi veya Edge veya IE Geliştirici araçları.

Aşağıdaki ekran görüntüsünde SAML DevTools uzantısının Azure AD B2C'nin kimlik sağlayıcısına gönderdiği SAML isteğini ve SAML yanıtını nasıl sunduğu gösterilmektedir.

Screenshot of SAML protocol trace log.

Bu araçları kullanarak uygulamanızla Azure AD B2C arasındaki tümleştirmeyi de kontrol edebilirsiniz. Örneğin:

  • SAML isteğinin imza içerip içermediğini denetleyin ve yetkilendirme isteğinde oturum açmak için hangi algoritmanın kullanıldığını belirleyin.
  • Azure AD B2C'nin bir hata iletisi döndürip döndürmediğini denetleyin.
  • Onay bölümünün şifrelenip şifrelenmediğini denetleyin.
  • Kimlik sağlayıcısını döndüren taleplerin adını alın.

Fiddler ile istemci tarayıcınız ile Azure AD B2C arasında ileti alışverişini de izleyebilirsiniz. Düzenleme adımlarınızda kullanıcı yolculuğunuzun nerede başarısız olduğunu gösteren bir gösterge almanıza yardımcı olabilir.

İlke geçerlilik sorunlarını giderme

İlkenizi geliştirmeyi tamamladıktan sonra, ilkeyi Azure AD B2C'ye yüklersiniz. İlkenizle ilgili bazı sorunlar olabilir, ancak karşıya yüklemeden önce ilkenizin geçerliliğini sağlayabilirsiniz.

Özel ilkeleri ayarlamada en yaygın hata, yanlış biçimlendirilmiş XML'dir. İyi bir XML düzenleyicisi neredeyse gereklidir. XML'yi yerel olarak görüntüler, renk kodları içeriği görüntüler, ortak terimleri önceden doldurur, XML öğelerini dizine alır ve bir XML şemasında doğrulayabilir.

Visual Studio Code kullanmanızı öneririz. Ardından Red Hat'in XML Dil Desteği gibi bir XML uzantısı yükleyin. XML uzantısı, XML dosyanızı karşıya yüklemeden önce özel ilke XSD şema tanımını kullanarak XML şemasını doğrulamanızı sağlar.

AŞAĞıDAKI ayarları VS Code settings.json dosyanıza ekleyerek XML dosyasını XSD'ye bağlamak için XML dosya ilişkilendirme stratejisini kullanabilirsiniz. Yapmak için:

  1. VS Code'da Dosya>Tercihleri> Ayarlar'i seçin. Daha fazla bilgi için bkz. Kullanıcı ve Çalışma Alanı Ayarlar.

  2. fileAssociations için arama yapın, ardından Uzantı'nın altında XML'yi seçin.

  3. settings.json dosyasında Düzenle'yi seçin.

    Screenshot of VS Code XML schema validation.

  4. settings.json dosyasına aşağıdaki JSON kodunu ekleyin:

    "xml.fileAssociations": [
      {
        "pattern": "**.xml",
        "systemId": "https://raw.githubusercontent.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/master/TrustFrameworkPolicy_0.3.0.0.xsd"
      }
    ]
    
  5. Değişiklikleri kaydedin.

Aşağıdaki örnekte xml doğrulama hatası gösterilmektedir. Farenizi öğe adının üzerine taşıdığınızda, uzantı beklenen öğeleri listeler.

Screenshot of VS Code XML schema validation error indicator.

Aşağıdaki örnekte öğesi DisplayName doğrudur. Ama yanlış sırada. DisplayName öğesinden Protocol önce olmalıdır. Sorunu düzeltmek için farenizi öğenin üzerinde DisplayName öğelerin doğru sırasına getirin.

Screenshot of VS Code XML schema validation order error.

İlkeleri ve ilke doğrulamayı karşıya yükleme

XML ilke dosyasının doğrulaması karşıya yüklemede otomatik olarak gerçekleştirilir. Hataların çoğu karşıya yüklemenin başarısız olmasına neden olur. Doğrulama, karşıya yüklemek istediğiniz ilke dosyasını içerir. Ayrıca, karşıya yükleme dosyasının başvurduğu dosya zincirini de içerir (bağlı olan taraf ilke dosyası, uzantılar dosyası ve temel dosya).

Bahşiş

Azure AD B2C, bağlı olan taraf ilkesi için ek doğrulama çalıştırır. İlkenizle ilgili bir sorun olduğunda, yalnızca uzantı ilkesini düzenleseniz bile, bağlı olan taraf ilkesini de karşıya yüklemek iyi bir uygulamadır.

Bu bölüm yaygın doğrulama hatalarını ve olası çözümleri içerir.

Şema doğrulama hatası bulundu... geçersiz '{name}' alt öğesi var

İlkeniz geçersiz bir XML öğesi içeriyor veya XML öğesi geçerli, ancak yanlış sırada görünüyor. Bu tür bir hatayı düzeltmek için İlke geçerlilik sorunlarını giderme bölümüne göz atın.

'{number}' yinelenen anahtar dizisi var

Kullanıcı yolculuğu veya alt yolculuk , sırayla yürütülen düzenleme adımlarının sıralı bir listesinden oluşur. Yolculuğunuzu değiştirdikten sonra, 1'den N'ye kadar olan tamsayıları atlamadan adımları sıralı olarak yeniden numaralandırın.

... "{number}" siparişini içeren bir adım olması bekleniyordu, ancak bulunamadı...

Önceki hatayı denetleyin.

"{name}" kullanıcı yolculuğunda düzenleme adımı sırası "{number}" ... bir talep sağlayıcısı seçim adımı tarafından takip edilir ve bir talep değişimi olmalıdır, ancak...

düzenleme adımları türü ClaimsProviderSelectionve CombinedSignInAndSignUp kullanıcının seçebileceği seçeneklerin listesini içerir. Bir veya daha fazla talep değişimi ile türüne ClaimsExchange göre izlenmelidir.

Aşağıdaki düzenleme adımları bu türe veya hataya neden olur. İkinci düzenleme adımı , ClaimsExchangedeğil ClaimsProviderSelectiontüründe olmalıdır.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
        <ClaimsProviderSelections>
          <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange"/>
          <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange"/>
        </ClaimsProviderSelections>
        <ClaimsExchanges>
          <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email"/>
        </ClaimsExchanges>
      </OrchestrationStep> 

      <OrchestrationStep Order="2" Type="ClaimsProviderSelection">
        ...
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

... 2 talep değişimi içeren {number} adımı. Hangi talep değişiminin kullanılabileceğini belirlemek için bu seçimden önce bir talep sağlayıcı seçimi bulunmalıdır

Bir düzenleme adımı türüClaimsExchange, bir önceki adım türü ClaimsProviderSelectionveya CombinedSignInAndSignUpdeğilse tek ClaimsExchangebir olmalıdır. Aşağıdaki düzenleme adımları bu tür bir hataya neden olur. Altıncı adım iki talep değişimi içerir.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="5" Type="ClaimsExchange">
        ...
        <ClaimsExchanges>
          <ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="6" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-First-API" TechnicalProfileReferenceId="Call-REST-First-API"/>
          <ClaimsExchange Id="Call-REST-Second-API" TechnicalProfileReferenceId="Call-REST-Second-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

Bu tür bir hatayı düzeltmek için iki düzenleme adımı kullanın. Tek bir talep değişimiyle her düzenleme adımı.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="5" Type="ClaimsExchange">
        ...
        <ClaimsExchanges>
          <ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="6" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-First-API" TechnicalProfileReferenceId="Call-REST-First-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="7" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-Second-API" TechnicalProfileReferenceId="Call-REST-Second-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

'{name}' yinelenen anahtar dizisi var

Bir yolculukta aynı Idile birden çok ClaimsExchange vardır. Aşağıdaki adımlar bu tür bir hataya neden olur. Kimlik AADUserWrite , kullanıcı yolculuğunda iki kez görünür.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="7" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="8" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="Call-REST-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

Bu tür bir hatayı düzeltmek için sekizinci düzenleme adımlarının talep değişimini Call-REST-API gibi benzersiz bir adla değiştirin.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="7" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="8" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-API" TechnicalProfileReferenceId="Call-REST-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

... "{claim name}" kimliğine sahip ClaimType'a başvuruda bulunur, ancak ilke veya temel ilkelerinden herhangi biri böyle bir öğe içermez

bu tür bir hata, ilkeniz talep şemasında bildirlenmemiş bir talep için başvuru yaptığında oluşur. Talepler, ilkedeki dosyalardan en az birinde tanımlanmalıdır.

Örneğin, schoolId çıkış talebine sahip bir teknik profil. Ancak schoolId çıkış talebi hiçbir zaman ilkede veya bir ata ilkesinde bildirilir.

<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="schoolId" />
  ...
</OutputClaims>

Bu tür bir hatayı düzeltmek için değerin ClaimTypeReferenceId yanlış yazılıp yazılmadığını veya şemada mevcut olup olmadığını denetleyin. Talep uzantılar ilkesinde tanımlanıyorsa ancak temel ilkede de kullanılıyorsa. Talebin, içinde kullanıldığı ilkede veya üst düzey bir ilkede tanımlandığından emin olun.

Talebi talep şemasına eklemek bu tür bir hatayı çözer.

<!--
<BuildingBlocks>
  <ClaimsSchema> -->
    <ClaimType Id="schoolId">
      <DisplayName>School name</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>Enter your school name</UserHelpText>
      <UserInputType>TextBox</UserInputType>
    </ClaimType>
  <!-- 
  </ClaimsSchema>
</BuildingBlocks> -->

... Id ile ClaimsTransformation başvurusu yapar...

Bu hatanın nedeni, talep hatasının nedeni ile benzerdir. Önceki hatayı denetleyin.

Kullanıcı şu anda 'yourtenant.onmicrosoft.com' kiracısının kullanıcısı olarak günlüğe kaydedilir...

Karşıya yüklemeye çalıştığınız ilkeden farklı bir kiracının hesabıyla oturum açarsınız. Örneğin, ilkeniz TenantId olarak ayarlanırken fabrikam.onmicrosoft.comile admin@contoso.onmicrosoft.comoturum açın.

<TrustFrameworkPolicy ...
  TenantId="fabrikam.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://fabrikam.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>fabrikam.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>
  ...
</TrustFrameworkPolicy>
  • ve <BasePolicy\> öğelerindeki <TrustFrameworkPolicy\> değerin TenantId hedef Azure AD B2C kiracınızla eşleşip eşleşmediğini denetleyin.

"{name}" talep türü, bağlı olan tarafın teknik profilinin çıkış talebidir, ancak kullanıcı yolculuğu adımlarının hiçbirinde çıkış talebi değildir...

Bağlı olan taraf ilkesinde bir çıkış talebi eklediniz, ancak çıkış talebi kullanıcı yolculuğu adımlarının hiçbirinde çıkış talebi değil. Azure AD B2C, talep paketinden talep değerini okuyamaz.

Aşağıdaki örnekte schoolId talebi, bağlı olan tarafın teknik profilinin çıkış talebidir, ancak SignUpOrSignIn kullanıcı yolculuğu adımlarının hiçbirinde çıkış talebi değildir.

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="schoolId" />
      ...
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Bu tür bir hatayı düzeltmek için, çıktı taleplerinin en az bir düzenleme adımının teknik profil çıkış talepleri koleksiyonunda göründüğünden emin olun. Kullanıcı yolculuğunuz talebin çıktısını alamıyorsa bağlı olan taraf teknik profilinde boş dize gibi bir varsayılan değer ayarlayın.

<OutputClaim ClaimTypeReferenceId="schoolId" DefaultValue="" />

Giriş dizesi doğru biçimde değildi

Başka bir türden bir talep için yanlış değer türü ayarlarsınız. Örneğin, bir tamsayı talebi tanımlarsınız.

<!--
<BuildingBlocks>
  <ClaimsSchema> -->
    <ClaimType Id="age">
      <DisplayName>Age</DisplayName>
      <DataType>int</DataType>
    </ClaimType>
  <!--
  </ClaimsSchema>
</BuildingBlocks> -->

Ardından bir dize değeri ayarlamaya çalışırsınız:

<OutputClaim ClaimTypeReferenceId="age" DefaultValue="ABCD" />

Bu tür bir hatayı düzeltmek için gibi DefaultValue="0"doğru değeri ayarladığınızdan emin olun.

"{name}" kiracısı zaten "{name}" kimliğine sahip bir ilkeye sahip. Aynı kimlikle başka bir ilke depolanamaz

Kiracınıza bir ilke yüklemeye çalışırsınız, ancak kiracınıza aynı ada sahip bir ilke zaten yüklenmiştir.

Bu tür bir hatayı düzeltmek için, ilkeyi karşıya yüklediğinizde Özel ilke zaten varsa üzerine yaz onay kutusunu seçin.

Screenshot that demonstrates how to overwrite the custom policy if it already exists.

Sonraki adımlar