Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ö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 false
ayarlayın. Meta veriler olarak false
ayarlanı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
, Sha384
veya 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 true
false
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 false
ayarlayı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 true
ayarlandığı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:
Benzersiz tanımlayıcısı olan bir ilke anahtarı oluşturun. Örneğin,
B2C_1A_SAMLEncryptionCert
.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>
Teknik profil meta verilerini WantsEncryptedAssertions olarak
true
ayarlayın.<Metadata> ... <Item Key="WantsEncryptedAssertions">true</Item> </Metadata>
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:
BuildingBlocks içindeki ClaimsSchema öğesine bir talep türü ekleyin.
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
- Application Insights'ı kullanarak özel ilkelerinizle ilgili sorunları tanılamayı öğrenin.