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 SPNameQualifier
NameQualifier
öznitelikler sunulmuyorsa PartnerClaimType talebi olarak assertionSubjectName
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ğ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 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 verilerindeki WantSignedRequests değeri olarak ve false
WantAuthnRequestsSigned 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 , , Sha384
Sha512
veya 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-POST
ayarlandığı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-POST
de yapılandırabilirsiniz. veya false
için IncludeKeyInfo meta verilerini true
kullanı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 subject
ayarlanmalı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 NameIDPolicy
true
.
<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 false
ayarlar. Oturum sıfırlanırsa (örneğin, in OIDC kullanılarak prompt=login
), ForceAuthN
değer olarak true
ayarlanı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 true
ayarlandığı 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.
WantsSignedAssertionsfalse
ayarı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 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 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 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 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:
Benzersiz tanımlayıcıya sahip 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. 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>
WantsEncryptedAssertions teknik profil meta verilerini 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. 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:
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>
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 false
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 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
- Application Insights'ı kullanarak özel ilkelerinizle ilgili sorunları tanılamayı öğrenin.