Share via


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

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çıklanır.

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 tamamen 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.

Talep 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 iletisinde hata ayıklama. Talep eklemek için önce bir talep tanımlayın, ardından talebi çıkış talepleri koleksiyonuna ekleyin.

Özniteliğini ayarladığınız sürece kimlik sağlayıcısı tarafından döndürülmeyen talepler DefaultValue de 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 bir değere sahip talep çözümleyicileri de kullanabilirsiniz.

Konu adı

Konu'daki SAML onay adı kimliğini normalleştirilmiş bir talep olarak okumak için PartnerClaimType talep 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 hem hem de SPNameQualifierNameQualifier öznitelikler sunulmuyorsa PartnerClaimType talebi olarak assertionSubjectNameayarlayı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ğundan). Her iki SAML isteği için bağlamaları yapılandırma hakkında bilgi için kimlik sağlayıcısı belgelerinize bakın.

Aşağıdaki XML, iki bağlamaya sahip bir Microsoft Entra meta veri çoklu oturum açma hizmeti örneğidir. HTTP-POST, HTTP-Redirect SAML kimlik sağlayıcısı meta verilerinde ilk olarak göründüğünden ö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>

Onay 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, bağlı olan tarafın temel ilkesine işaret eder. Örneğin, bağlı ilke B2C_1A_signup_signin ise, ACS B2C_1A_signup_signin temel ilkesidir, örneğin B2C_1A_TrustFrameworkBase.

Aşağıdaki XML, Azure AD B2C ilkesi meta veri onaylama tüketici hizmeti öğesi örneğidir.

<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 verilerindeki WantSignedRequests değeri olarak ve falseWantAuthnRequestsSigned kimlik sağlayıcısı meta verileri olarak ayarlanmışsa false 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ırSha1. Kullanılacak algoritmayı yapılandırmak için XmlSignatureAlgorithm meta verilerini kullanın. Olası değerler , , Sha384Sha512veya Sha1 (varsayılan) değerleridirSha256. 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 olarak HTTP-POSTayarlandığını gösterdiğinde, Azure AD B2C SAML isteğinin gövdesinde imzayı ve algoritmayı içerir. Bağlama olarak ayarlandığında Microsoft Entra kimliğini sertifikanın ortak anahtarını içerecek şekilde HTTP-POSTde yapılandırabilirsiniz. veya falseiçin IncludeKeyInfo meta verilerini truekullanın. Aşağıdaki örnekte, Microsoft Entra kimliği 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 <InputClaims> öğeyi öğesinin <CryptographicKeys>hemen arkasına ekleyin. PartnerClaimType değeri olarak subjectayarlanmalıdır.

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

Talep değerini doldurmak için gibi {OIDC:LoginHint}bağlam taleplerini kullanabilirsiniz.

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

Ad Kimliği ilke biçimi

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ğiyle ilgili yönergeler için kimlik sağlayıcınızın belgelerine bakın. Ardından meta verileri ilgili ilke biçiminde ekleyin NameIdPolicyFormat . Örnek:

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

Aşağıdaki SAML yetkilendirme isteği ad kimliği ilkesini 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 verilmeyeceğini belirtmek için NameIDPolicy özelliğini de belirtebilirsinizAllowCreate. Rehberlik için kimlik sağlayıcınızın belgelerine bakın.

Azure AD B2C varsayılan olarak özelliği atlarAllowCreate. Meta verileri kullanarak NameIdPolicyAllowCreate bu davranışı değiştirebilirsiniz. Bu meta verilerin değeri veya falseşeklindedirtrue.

Aşağıdaki örnekte özelliğinin olarak nasıl ayarlanacağı AllowCreate gösterilmektedir NameIDPolicytrue.

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

Aşağıdaki örnekte, yetkilendirme isteğindeki NameIDPolicy öğesinin AllowCreate değeriyle bir yetkilendirme isteği gösterilmektedir.

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

Kimlik doğrulamayı zorlama

SamL kimlik doğrulama isteğinde özelliğini geçirerek dış SAML IDP'yi kullanıcıdan kimlik doğrulaması istemeye ForceAuthN 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 olarak falseayarlar. Oturum sıfırlanırsa (örneğin, in OIDC kullanılarak prompt=login ), ForceAuthN değer olarak trueayarlanır. ForceAuthN Meta verileri, dış IDP'ye true yönelik tüm istekler için değeri zoracak şekilde ayarlama.

Aşağıdaki örnekte, özelliğinin ForceAuthN olarak trueayarlandığı gösterilmektedir:

<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 Dış SAML IDP'ye yapılan tüm istekler için sağlayıcı adını içerecek şekilde meta verileri ayarlayın. Aşağıdaki örnekte olarak ayarlanan Contoso appözellik gösterilmektedirProviderName:

<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ğrulaması bağlam sınıfı başvuruları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ğrulaması 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. Virgülle ayrılmış liste olarak birden çok URI 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ğrulama 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 veri 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 içine XML verileri ekleyerek uzantı öğelerini <![CDATA[Your Custom XML]]>dahil edebilirsiniz. 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>

Not

SAML belirtimi başına, uzantı verileri ad alanı nitelemeli XML (örneğin, örnekte gösterilen 'urn:ext:custom' gibi) olmalı 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 için tüm gelen onayların imzalanması gerekir. WantsSignedAssertionsfalseayarını 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 profilinde ş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 AZURE AD B2C teknik profilinin meta verilerinde sağlanan ortak anahtarla SAML yanıt onayını ş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ıya sahip 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. Kimlik, SamlAssertionDecryption SAML yanıtının onayını şifrelemek ve şifresini çözmek için şifreleme anahtarının kullanımını gösterir.

    <CryptographicKeys>
            ...
      <Key Id="SamlAssertionDecryption" StorageReferenceId="B2C_1A_SAMLEncryptionCert"/>
    </CryptographicKeys>
    
  3. WantsEncryptedAssertions teknik profil meta verilerini olarak trueayarlayı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. Use özelliği sertifikanızın ortak anahtarını içerecek şekilde encryption ayarlanmış KeyDescriptor'ı görmeniz gerekir.

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

Giriş ve çıkış talepleri koleksiyonuna, özniteliğini ayarladığınız sürece kimlik sağlayıcısı tarafından döndürülmeyen DefaultValue 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>
    

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

Bir uygulama oturumu kapatma isteğinde Azure AD B2C, SAML kimlik sağlayıcınızdan oturumu kapatmayı dener. Daha fazla bilgi için bkz. Azure AD B2C oturumu oturumu kapatma. Tek oturum kapatma davranışını devre dışı bırakmak için, SingleLogoutEnabled meta verilerini olarak falseayarlayı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 hatalarını ayıklamaya yardımcı olmak için, SAML protokolü için Chrome için SAML Geliştirici Araçları uzantısı, FireFox için SAML izlemesi veya Microsoft Edge veya IE 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. Örnek:

  • 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.
  • bölümünün altındaki AttributeStatement talepleri (onayları) alın.
  • Kimlik sağlayıcısının bir hata iletisi döndürip döndürmediğini denetleyin.
  • Onaylama bölümünün şifrelenip şifrelenmediğini denetleyin.

SAML istek ve yanıt örnekleri

Security Assertion Markup Language (SAML), kimlik sağlayıcısı ile hizmet sağlayıcısı arasında kimlik doğrulaması ve yetkilendirme verisi alışverişi için kullanılan bir açık 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ı olarak görev yapar.

Başarılı bir SAML yanıtı, dış SAML kimlik sağlayıcıları tarafından yapılan deyimler olan güvenlik onaylarını içerir. Azure AD B2C, onayları ayrıştırıp taleplere 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 onaylama 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>

Oturum kapatma isteği

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

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

<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