Aracılığıyla paylaş


Azure Active Directory B2C ile SAML kimlik sağlayıcısı seçeneklerini yapılandırma

Önemli

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

Azure Active Directory B2C (Azure AD B2C), SAML 2.0 kimlik sağlayıcılarıyla federasyonu destekler. Bu makalede, güvenlik onaylarının nasıl ayrıştırıldığı ve SAML kimlik sağlayıcısıyla oturum açma etkinleştirilirken kullanılabilen yapılandırma seçenekleri açıklanmaktadır.

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 tam olarak yapılandırılabilir özel ilkeler aracılığıyla. Bu makalede gerekli adımlar her yöntem için farklıdır.

Bu özellik yalnızca özel ilkeler için kullanılabilir. Kurulum adımları için, önceki seçicide Özel ilke'yi seçin.

Talepleri eşleme

OutputClaims öğesi, SAML kimlik sağlayıcısı tarafından döndürülen taleplerin listesini içerir. İlkenizde tanımlanan talebin adını kimlik sağlayıcısında tanımlanan adla eşlemeniz gerekir. Kimlik sağlayıcınızda talep listesi (onaylar) olup olmadığını denetleyin. Kimlik sağlayıcınızın döndürdüğü SAML yanıtının içeriğini de de kontrol edebilirsiniz. Daha fazla bilgi için bkz. SAML iletilerde hata ayıklama. Talep eklemek için önce bir talep tanımlayın, ardından talebi çıkış talepleri koleksiyonuna ekleyin.

Kimlik sağlayıcısı tarafından döndürülmeyen talepleri de, özniteliğini ayarladığınız sürece ekleyebilirsiniz. Varsayılan değer, bağlam talepleri kullanılarak statik veya dinamik olabilir.

Çıkış talep öğesi aşağıdaki öznitelikleri içerir:

  • ClaimTypeReferenceId , bir talep türüne başvurudur.
  • PartnerClaimType , SAML onayını gösteren özelliğin adıdır.
  • DefaultValue önceden tanımlanmış bir varsayılan değerdir. Talep boşsa, varsayılan değer kullanılır. Ayrıca, bağıntı kimliği veya kullanıcı IP adresi gibi bağlamsal değere sahip bir talep çözümleyicileri de kullanabilirsiniz.

Konu adı

Konu'daki SAML onay NameId değerini normalleştirilmiş bir talep olarak okumak için PartnerClaimType talebi değerini özniteliğinin SPNameQualifier değerine ayarlayın. SPNameQualifierÖznitelik sunulmazsa PartnerClaimType talebi değerini özniteliğin NameQualifier değerine ayarlayın.

SAML onayı:

<saml:Subject>
  <saml:NameID SPNameQualifier="http://your-idp.com/unique-identifier" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">david@contoso.com</saml:NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData InResponseTo="_cd37c3f2-6875-4308-a9db-ce2cf187f4d1" NotOnOrAfter="2020-02-15T16:23:23.137Z" Recipient="https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" />
    </SubjectConfirmation>
  </saml:SubjectConfirmation>
</saml:Subject>

Çıkış talebi:

<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="http://your-idp.com/unique-identifier" />

SAML onayında her iki SPNameQualifier ve NameQualifier öznitelikleri mevcut değilse PartnerClaimType talep değerini assertionSubjectName olarak ayarlayın. NameId değerinin onay XML'sindeki ilk değer olduğundan emin olun. Birden fazla onay tanımladığınızda, Azure AD B2C son onaydan konu değerini seçer.

SAML protokol bağlamalarını yapılandırma

SAML istekleri kimlik sağlayıcısının meta veri SingleSignOnService öğesinde belirtildiği gibi kimlik sağlayıcısına gönderilir. Kimlik sağlayıcılarının yetkilendirme isteklerinin çoğu doğrudan bir HTTP GET isteğinin URL sorgu dizesinde taşınır (iletiler görece kısa olduğu için). Her iki SAML isteği için bağlamaları yapılandırma hakkında bilgi için kimlik sağlayıcı belgelerinize bakın.

Aşağıdaki XML, iki bağlamaya sahip bir Microsoft Entra meta verileri çoklu oturum açma hizmeti örneğidir. HTTP-Redirect, HTTP-POST'den önce SAML kimlik sağlayıcısı meta verilerinde göründüğü için önceliklidir.

<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ...
  <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2"/>
  <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2"/>
</IDPSSODescriptor>

Doğrulama tüketici hizmeti

Onay Tüketici Hizmeti (veya ACS), kimlik sağlayıcısı SAML yanıtlarının Azure AD B2C tarafından gönderildiği ve alındığı yerdir. SAML yanıtları HTTP POST bağlaması aracılığıyla Azure AD B2C'ye iletilir. ACS konumu güvenen tarafın temel politikasına işaret eder. Örneğin, bağlı ilke B2C_1A_signup_signin ise, B2C_1A_signup_signin için ACS'nin temel ilkesini B2C_1A_TrustFrameworkBase oluşturur.

Aşağıdaki XML, Azure AD B2C ilkesi meta veri onaylama tüketici hizmeti öğesine bir örnektir.

<SPSSODescriptor AuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ...
  <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://your-tenant.b2clogin.com/your-tenant/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" index="0" isDefault="true"/>
</SPSSODescriptor>

SAML istek imzasını yapılandırma

Azure AD B2C, SamlMessageSigning şifreleme anahtarını kullanarak tüm giden kimlik doğrulama isteklerini imzalar. SAML istek imzasını devre dışı bırakmak için WantsSignedRequests değerini olarak falseayarlayın. Meta veriler olarak falseayarlanırsa , SigAlg ve signature parametreleri (sorgu dizesi veya post parametresi) istekten atlanır.

Bu meta veriler, kimlik sağlayıcısıyla paylaşılan Azure AD B2C teknik profilinin meta verilerine dahil edilen AuthnRequestsSigned özniteliğini de denetler. Azure AD B2C, teknik profil meta verilerinde WantSignedRequests değeri false olarak ayarlandığında ve kimlik sağlayıcı meta verilerinde WantAuthnRequestsSigned değeri false olarak ayarlanmışsa veya belirtilmemişse isteği imzalamaz.

Aşağıdaki örnek, SAML isteğinden imzayı kaldırır.

<Metadata>
  ...
  <Item Key="WantsSignedRequests">false</Item>
</Metadata>

İmza algoritması

Azure AD B2C, SAML isteğini imzalamak için kullanır Sha1 . Kullanılacak algoritmayı yapılandırmak için XmlSignatureAlgorithm meta verilerini kullanın. Olası değerler , Sha256, Sha384veya Sha512 (varsayılan) değerleridirSha1. Bu meta veriler, SAML isteğindeki SigAlg parametresinin (sorgu dizesi veya post parametresi) değerini denetler. İmza algoritmasını her iki tarafta da aynı değerle yapılandırdığınızdan emin olun. Yalnızca sertifikanızın desteklediği algoritmayı kullanın.

Anahtar bilgilerini ekle

Kimlik sağlayıcısı Azure AD B2C bağlamasının HTTP-POST olarak ayarlandığını belirttiğinde, Azure AD B2C, SAML isteğinin gövdesine imza ve algoritmayı ekler. HTTP-POST olarak ayarlandığında, Microsoft Entra ID'yi sertifikanın ortak anahtarını içerecek şekilde yapılandırabilirsiniz. veya için truefalse meta verilerini kullanın. Aşağıdaki örnekte, Microsoft Entra Id sertifikanın ortak anahtarını içermez.

<Metadata>
  ...
  <Item Key="IncludeKeyInfo">false</Item>
</Metadata>

SAML istek adı kimliğini yapılandırma

SAML yetkilendirme isteği <NameID> öğesi SAML adı tanımlayıcı biçimini gösterir. Bu bölümde, varsayılan yapılandırma ve ad kimliği öğesinin nasıl özelleştirileceği açıklanmaktadır.

Tercih edilen kullanıcı adı

Oturum açma kullanıcı yolculuğu sırasında bağlı olan taraf uygulaması belirli bir kullanıcıyı hedef alabilir. Azure AD B2C, SAML kimlik sağlayıcısına tercih edilen bir kullanıcı adı göndermenizi sağlar. InputClaims öğesi, SAML yetkilendirme isteğinin Konusu içinde bir NameId göndermek için kullanılır.

Yetkilendirme isteğine konu adı kimliğini eklemek için aşağıdaki öğeyi <InputClaims> hemen arkasına <CryptographicKeys>ekleyin. PartnerClaimType olarak ayarlanmalıdırsubject.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="subject" />
</InputClaims>

Bu örnekte Azure AD B2C, SAML yetkilendirme isteğinin Konusu içinde NameId ile signInName talebinin değerini gönderir.

<samlp:AuthnRequest ... >
  ...
  <saml:Subject>
    <saml:NameID>sam@contoso.com</saml:NameID>
  </saml:Subject>
</samlp:AuthnRequest>

Bağlam iddialarını, {OIDC:LoginHint} gibi, iddia değerini doldurmak için kullanabilirsiniz.

<Metadata>
  ...
  <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
  ...
<InputClaims>
  <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="subject" DefaultValue="{OIDC:LoginHint}" AlwaysUseDefaultValue="true" />
</InputClaims>

Kimlik Adı Politika Formatı

Varsayılan olarak, SAML yetkilendirme isteği ilkeyi urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified belirtir. Bu ad kimliği, istenen konu için kimlik sağlayıcısı tarafından desteklenen her tür tanımlayıcının kullanılabileceğini gösterir.

Bu davranışı değiştirmek için, hangi ad kimliği ilkelerinin desteklendiğine ilişkin yönergeler için kimlik sağlayıcınızın belgelerine bakın. Ardından meta verileri ilgili ilke biçiminde ekleyin NameIdPolicyFormat . Örneğin:

<Metadata>
  ...
  <Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</Item>
</Metadata>

Aşağıdaki SAML yetkilendirme isteği, ad kimlik politikasını içerir.

<samlp:AuthnRequest ... >
  ...
  <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
</samlp:AuthnRequest>

Yeni hesap oluşturmaya izin ver

Ad Kimliği ilke biçimini belirtirseniz, kimlik sağlayıcısının oturum açma akışı sırasında yeni bir hesap oluşturmasına izin verilip verilmediğini belirtmek için AllowCreate özelliğini de belirtebilirsiniz. Rehberlik için kimlik sağlayıcınızın belgelerine bakın.

Azure AD B2C, varsayılan olarak AllowCreate özelliğini kaldırır. Meta verileri kullanarak NameIdPolicyAllowCreate bu davranışı değiştirebilirsiniz. Bu meta verinin değeri true veya false şeklindedir.

Aşağıdaki örnek, AllowCreate özelliğinin NameIDPolicy olarak true nasıl ayarlanacağını göstermektedir.

<Metadata>
  ...
  <Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</Item>
  <Item Key="NameIdPolicyAllowCreate">true</Item>
</Metadata>

Aşağıdaki örnek, yetkilendirme isteğindeki NameIDPolicy öğesinin AllowCreate ile bir yetkilendirme isteğini gösterir.

<samlp:AuthnRequest ... >
  ...
  <samlp:NameIDPolicy 
      Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" 
      AllowCreate="true" />
</samlp:AuthnRequest>

Zorunlu kimlik doğrulama

ForceAuthN özelliğini SAML kimlik doğrulama isteğine ekleyerek, dış SAML IDP'sini kullanıcıdan kimlik doğrulaması istemeye zorlayabilirsiniz. Kimlik sağlayıcınız da bu özelliği desteklemelidir.

ForceAuthN özelliği bir Boole true değeri veya false değeridir. , Varsayılan olarak, Azure AD B2C ForceAuthN değerini false olarak ayarlar. Oturum sıfırlanırsa (örneğin OIDC'de prompt=login kullanılarak), ForceAuthN değeri true olarak ayarlanır. ForceAuthN meta verilerini true olarak ayarlamak, tüm istekler için dış IDP'ye gönderilen değeri zorunlu kılar.

Aşağıdaki örnekte ForceAuthN özelliği true olarak ayarlanmış:

<Metadata>
  ...
  <Item Key="ForceAuthN">true</Item>
  ...
</Metadata>

Aşağıdaki örnek, yetkilendirme isteğindeki özelliğini gösterir ForceAuthN :

<samlp:AuthnRequest AssertionConsumerServiceURL="https://..."  ...
                    ForceAuthN="true">
  ...
</samlp:AuthnRequest>

Sağlayıcı adı

İsteğe bağlı olarak saml yetkilendirme isteğine özniteliğini ekleyebilirsiniz ProviderName . ProviderName Meta verileri, dış SAML IDP'sine yapılan tüm isteklerin sağlayıcı adını içerecek şekilde ayarlayın. Aşağıdaki örnekte ProviderName özelliği Contoso app olarak ayarlanmış:

<Metadata>
  ...
  <Item Key="ProviderName">Contoso app</Item>
  ...
</Metadata>

Aşağıdaki örnek, yetkilendirme isteğindeki özelliğini gösterir ProviderName :

<samlp:AuthnRequest AssertionConsumerServiceURL="https://..."  ...
                    ProviderName="Contoso app">
  ...
</samlp:AuthnRequest>

Kimlik doğrulama bağlam sınıfı referanslarını dahil et

SAML yetkilendirme isteği, yetkilendirme isteğinin bağlamını belirten bir AuthnContext öğesi içerebilir. öğesi, SAML kimlik sağlayıcısına kullanıcıya hangi kimlik doğrulama mekanizmasını sunabileceğini bildiren bir kimlik doğrulama bağlam sınıfı başvurusu içerebilir.

Kimlik doğrulama bağlam sınıfı başvurularını yapılandırmak için IncludeAuthnContextClassReferences meta verilerini ekleyin. değerinde, kimlik doğrulaması bağlam sınıflarını tanımlayan bir veya daha fazla URI başvurusu belirtin. Birden çok URI'sini virgülle ayrılmış liste olarak belirtin. Desteklenen AuthnContextClassRef URI'leri hakkında yönergeler için kimlik sağlayıcınızın belgelerine bakın.

Aşağıdaki örnek, kullanıcıların hem kullanıcı adı hem de parola ile oturum açmasına ve korumalı oturum (SSL/TLS) üzerinden kullanıcı adı ve parolayla oturum açmasına olanak tanır.

<Metadata>
  ...
  <Item Key="IncludeAuthnContextClassReferences">urn:oasis:names:tc:SAML:2.0:ac:classes:Password,urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</Item>
</Metadata>

Aşağıdaki SAML yetkilendirme isteği, kimlik doğrulaması bağlam sınıfı başvurularını içerir.

<samlp:AuthnRequest ... >
  ...
  <samlp:RequestedAuthnContext>
    <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>
    <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
  </samlp:RequestedAuthnContext>
</samlp:AuthnRequest>

Yetkilendirme isteğine özel veriler ekleme

İsteğe bağlı olarak hem Azure AD B2C hem de kimlik sağlayıcınız tarafından kabul edilen protokol iletisi uzantısı öğelerini ekleyebilirsiniz. Uzantı XML biçiminde sunulur. CDATA öğesinin <![CDATA[Your Custom XML]]>içine XML verileri ekleyerek uzantı öğelerini eklersiniz. Uzantılar öğesinin desteklenip desteklenmediğini görmek için kimlik sağlayıcınızın belgelerine bakın.

Aşağıdaki örnekte uzantı verilerinin kullanımı gösterilmektedir:

<Metadata>
  ...
  <Item Key="AuthenticationRequestExtensions"><![CDATA[
            <ext:MyCustom xmlns:ext="urn:ext:custom">
              <ext:AssuranceLevel>1</ext:AssuranceLevel>
              <ext:AssuranceDescription>Identity verified to level 1.</ext:AssuranceDescription>
            </ext:MyCustom>]]></Item>
</Metadata>

Uyarı

SAML belirtimine göre, uzantı verileri ad alanı nitelenmiş XML olmalı (örnekte gösterilen 'urn:ext:custom' gibi) ve SAML'ye özgü ad alanlarından biri olmamalıdır.

SAML protokolü ileti uzantısıyla, SAML yanıtı aşağıdaki örneğe benzer:

<samlp:AuthnRequest ... >
  ...
  <samlp:Extensions>
    <ext:MyCustom xmlns:ext="urn:ext:custom">
      <ext:AssuranceLevel>1</ext:AssuranceLevel>
      <ext:AssuranceDescription>Identity verified to level 1.</ext:AssuranceDescription>
    </ext:MyCustom>
  </samlp:Extensions>
</samlp:AuthnRequest>

İmzalı SAML yanıtları gerektir

Azure AD B2C, tüm gelen onayların imzalanmasını gerektirir. WantsSignedAssertions ayarını false olarak ayarlayarak bu gereksinimi kaldırabilirsiniz. Kimlik sağlayıcısı bu durumda onayları imzalamamalıdır, ancak imzalasa bile Azure AD B2C imzayı doğrulamaz.

WantSignedAssertions meta verileri, kimlik sağlayıcısıyla paylaşılan Azure AD B2C teknik profilinin meta verilerine dahil edilen WantAssertionsSigned SAML meta veri bayrağını denetler.

<SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

Onay doğrulamasını devre dışı bırakırsanız, yanıt iletisi imza doğrulamasını da devre dışı bırakmak isteyebilirsiniz. ResponsesSigned meta verilerini olarak falseayarlayın. Kimlik sağlayıcısı bu durumda SAML yanıt iletisini imzalamamalıdır, ancak imzalasa bile Azure AD B2C imzayı doğrulamaz.

Aşağıdaki örnek hem iletiyi hem de onay imzasını kaldırır:

<Metadata>
  ...
  <Item Key="WantsSignedAssertions">false</Item>
  <Item Key="ResponsesSigned">false</Item>
</Metadata>

Şifrelenmiş SAML yanıtları gerektir

Tüm gelen onayların şifrelenmesini istemek için WantsEncryptedAssertions meta verilerini ayarlayın. Şifreleme gerektiğinde, kimlik sağlayıcısı Azure AD B2C teknik profilindeki bir şifreleme sertifikasının ortak anahtarını kullanır. Azure AD B2C, şifreleme sertifikasının özel bölümünü kullanarak yanıt onaylama işleminin şifresini çözer.

Onay şifrelemesini etkinleştirirseniz, yanıt imzası doğrulamasını da devre dışı bırakmanız gerekebilir (daha fazla bilgi için bkz. İmzalı SAML yanıtları gerektirme.

WantsEncryptedAssertions meta verileri olarak trueayarlandığında, Azure AD B2C teknik profilinin meta verileri şifreleme bölümünü içerir. Kimlik sağlayıcısı meta verileri okur ve SAML yanıt onayını Azure AD B2C teknik profilinin meta verilerinde sağlanan ortak anahtarla şifreler.

Aşağıdaki örnekte, şifreleme için kullanılan SAML meta verilerinin Anahtar Tanımlayıcısı bölümü gösterilmektedir:

<SPSSODescriptor AuthnRequestsSigned="true"  protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  <KeyDescriptor use="encryption">
    <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
      <X509Data>
        <X509Certificate>valid certificate</X509Certificate>
      </X509Data>
    </KeyInfo>
  </KeyDescriptor>
  ...
</SPSSODescriptor>

SAML yanıt onayını şifrelemek için:

  1. Benzersiz tanımlayıcısı olan bir ilke anahtarı oluşturun. Örneğin, B2C_1A_SAMLEncryptionCert.

  2. SAML teknik profili CryptographicKeys koleksiyonunuzda. StorageReferenceId değerini ilk adımda oluşturduğunuz ilke anahtarının adına ayarlayın. ID, SamlAssertionDecryption SAML yanıtı beyanını şifrelemek ve şifresini çözmek için kriptografik bir anahtarın kullanımını gösterir.

    <CryptographicKeys>
            ...
      <Key Id="SamlAssertionDecryption" StorageReferenceId="B2C_1A_SAMLEncryptionCert"/>
    </CryptographicKeys>
    
  3. Teknik profil meta verilerini WantsEncryptedAssertions olarak true ayarlayın.

    <Metadata>
      ...
      <Item Key="WantsEncryptedAssertions">true</Item>
    </Metadata>
    
  4. Kimlik sağlayıcınızı yeni Azure AD B2C teknik profil meta verileriyle güncelleştirin. Sertifikanızın ortak anahtarını içerecek şekilde ayarlanan use özelliğine sahip encryption değerini görmelisiniz.

Bağlam taleplerinin kullanımını etkinleştirme

Giriş ve çıkış talepleri koleksiyonuna, DefaultValue özniteliğini ayarladığınız takdirde kimlik sağlayıcısı tarafından geri döndürülmeyen talepleri ekleyebilirsiniz. Teknik profile dahil edilecek bağlam taleplerini de kullanabilirsiniz. Bağlam talebi kullanmak için:

  1. BuildingBlocks içindeki ClaimsSchema öğesine bir talep türü ekleyin.

  2. Giriş veya çıkış koleksiyonuna bir çıkış talebi ekleyin. Aşağıdaki örnekte, ilk talep kimlik sağlayıcısının değerini ayarlar. İkinci talep, kullanıcı IP adresi bağlam taleplerini kullanır.

    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" AlwaysUseDefaultValue="true" />
      <OutputClaim ClaimTypeReferenceId="IpAddress" DefaultValue="{Context:IPAddress}" AlwaysUseDefaultValue="true" />
    </OutputClaims>
    

Tek oturumu kapatmayı devre dışı bırakma

Bir uygulama oturumu kapatma isteği üzerine Azure AD B2C, SAML kimlik sağlayıcınızdan oturumu kapatmayı dener. Daha fazla bilgi için bkz. Azure AD B2C oturum kapatma. Tek oturumu kapatma davranışını devre dışı bırakmak için SingleLogoutEnabled meta verilerini false olarak ayarlayın.

<Metadata>
  ...
  <Item Key="SingleLogoutEnabled">false</Item>
</Metadata>

SAML protokolünde hata ayıklama

SAML kimlik sağlayıcısıyla federasyonu yapılandırmaya ve hata ayıklamaya yardımcı olmak için, SAML protokolü için Chrome için SAML DevTools uzantısı , Firefox için SAML-tracer veya Microsoft Edge veya Internet Explorer geliştirici araçları gibi bir tarayıcı uzantısı kullanabilirsiniz.

Bu araçları kullanarak Azure AD B2C ile SAML kimlik sağlayıcınız 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.
  • AttributeStatement kısmındaki iddiaları (savlar) alın.
  • Kimlik sağlayıcısının bir hata iletisi döndürip döndürmediğini denetleyin.
  • Onay bölümünün şifrelenip şifrelenmediğini denetleyin.

SAML isteği ve yanıt örnekleri

Güvenlik Onaylama İşaretleme Dili (SAML), kimlik sağlayıcısı ile hizmet sağlayıcısı arasında kimlik doğrulaması ve yetkilendirme verileri alışverişi için açık bir standarttır. Azure AD B2C bir SAML kimlik sağlayıcısıyla bir araya geldiğinde, SAML kimlik sağlayıcısına bir SAML isteği başlatan ve SAML yanıtı bekleyen bir hizmet sağlayıcısı işlevi görür.

Başarılı bir SAML yanıtı, dış SAML kimlik sağlayıcıları tarafından yapılan ve güvenlikle ilgili beyanlar olan onayları içerir. Azure AD B2C, bildirimleri ayrıştırır ve iddialara eşler.

Yetkilendirme isteği

Kullanıcı kimlik doğrulaması istemek için Azure AD B2C, dış SAML kimlik sağlayıcısına bir AuthnRequest öğe gönderir. Örnek bir SAML 2.0 AuthnRequest aşağıdaki örneğe benzer olabilir:

<samlp:AuthnRequest 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
    ID="_11111111-0000-0000-0000-000000000000" 
    Version="2.0" 
    IssueInstant="2023-03-20T07:10:00.0000000Z" 
    Destination="https://fabrikam.com/saml2" 
    ForceAuthn="false" 
    IsPassive="false" 
    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
    AssertionConsumerServiceURL="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" 
    ProviderName="https://fabrikam.com" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer 
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    </saml:Issuer>
</samlp:AuthnRequest>

Yanıt

İstenen oturum açma işlemi başarıyla tamamlandığında, dış SAML kimlik sağlayıcısı Azure AD B2C onay tüketici hizmeti uç noktasına bir yanıt postalar. Başarılı bir oturum açma girişimine verilen yanıt aşağıdaki örneğe benzer:

<samlp:Response 
    ID="_98765432-0000-0000-0000-000000000000" 
    Version="2.0" 
    IssueInstant="2023-03-20T07:11:30.0000000Z" 
    Destination="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" 
    InResponseTo="_11111111-0000-0000-0000-000000000000" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <Issuer 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://fabrikam.com/
    </Issuer>
    <samlp:Status>
        <samlp:StatusCode 
            Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <Assertion 
        ID="_55555555-0000-0000-0000-000000000000" 
        IssueInstant="2023-03-20T07:40:45.505Z" 
        Version="2.0" 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
        <Issuer>https://fabrikam.com/</Issuer>
        <Signature 
            xmlns="http://www.w3.org/2000/09/xmldsig#">
            ...
        </Signature>
        <Subject>
            <NameID 
                Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">ABCDEFG
            </NameID>
            ...
        </Subject>
        <AttributeStatement>
            <Attribute Name="uid">
                <AttributeValue>12345</AttributeValue>
            </Attribute>
            <Attribute Name="displayname">
                <AttributeValue>David</AttributeValue>
            </Attribute>
            <Attribute Name="email">
                <AttributeValue>david@contoso.com</AttributeValue>
            </Attribute>
            ....
        </AttributeStatement>
        <AuthnStatement 
            AuthnInstant="2023-03-20T07:40:45.505Z" 
            SessionIndex="_55555555-0000-0000-0000-000000000000">
            <AuthnContext>
                <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
            </AuthnContext>
        </AuthnStatement>
    </Assertion>
</samlp:Response>

Oturumu kapatma isteği

Bir uygulama oturumu kapatma isteği üzerine Azure AD B2C, SAML kimlik sağlayıcınızdan oturumu kapatmayı dener. Azure AD B2C, bir oturumun sonlandırıldığını belirtmek için dış IDP'ye bir LogoutRequest ileti gönderir. Aşağıdaki alıntıda örnek LogoutRequest bir öğe gösterilmektedir.

NameID öğesinin değeri, oturumu kapatılmakta olan kullanıcının NameID değeriyle eşleşir. SessionIndex öğesi, oturum açma SAML yanıtındaki SessionIndex ögesinin AuthnStatement özniteliğiyle eşleşir.

<samlp:LogoutRequest 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    ID="_22222222-0000-0000-0000-000000000000" 
    Version="2.0" 
    IssueInstant="2023-03-20T08:21:07.3679354Z" 
    Destination="https://fabrikam.com/saml2/logout" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer 
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    </saml:Issuer>
    <saml:NameID>ABCDEFG</saml:NameID>
    <samlp:SessionIndex>_55555555-0000-0000-0000-000000000000</samlp:SessionIndex>
</samlp:LogoutRequest>

Sonraki Adımlar