Azure Active Directory B2C özel ilkesinde SAML kimlik sağlayıcısı teknik profili tanımlama
Not
Azure Active Directory B2C'de özel ilkeler öncelikli olarak karmaşık senaryoları ele almak için tasarlanmıştır. Çoğu senaryoda yerleşik kullanıcı akışlarını kullanmanızı öneririz. Bunu yapmadıysanız , Active Directory B2C'de özel ilkeleri kullanmaya başlama bölümünde özel ilke başlangıç paketi hakkında bilgi edinin.
Azure Active Directory B2C (Azure AD B2C), SAML 2.0 kimlik sağlayıcısı için destek sağlar. Bu makalede, bu standartlaştırılmış protokolü destekleyen bir talep sağlayıcısıyla etkileşime yönelik teknik profilin özellikleri açıklanmaktadır. SAML teknik profili ile ADFS ve Salesforce gibi SAML tabanlı bir kimlik sağlayıcısıyla federasyon oluşturabilirsiniz. Bu federasyon, kullanıcılarınızın mevcut sosyal veya kurumsal kimlikleriyle oturum açmasına olanak tanır.
Meta veri değişimi
Meta veriler, SAML protokolünde hizmet sağlayıcısı veya kimlik sağlayıcısı gibi bir SAML grubunun yapılandırmasını ortaya çıkarmak için kullanılan bilgilerdir. Meta veriler, hizmetlerin oturum açma ve oturum kapatma, sertifikalar, oturum açma yöntemi ve daha fazlası gibi konumunu tanımlar. Kimlik sağlayıcısı, Azure AD B2C ile nasıl iletişim kuracaklarını öğrenmek için meta verileri kullanır. Meta veriler XML biçiminde yapılandırılır ve diğer tarafın meta verilerin bütünlüğünü doğrulayabilmesi için dijital imzayla imzalanabilir. Azure AD B2C bir SAML kimlik sağlayıcısıyla bir araya geldiğinde, bir SAML isteği başlatan ve SAML yanıtı bekleyen bir hizmet sağlayıcısı olarak görev yapar. Ve bazı durumlarda, kimlik sağlayıcısı tarafından başlatılan olarak da bilinen istenmeyen SAML kimlik doğrulamayı kabul eder.
Meta veriler her iki taraf için de "Statik Meta Veriler" veya "Dinamik Meta Veriler" olarak yapılandırılabilir. Statik modda, meta verilerin tamamını bir taraftan kopyalar ve diğer tarafa ayarlarsınız. Dinamik modda, diğer taraf yapılandırmayı dinamik olarak okurken meta verilerin URL'sini ayarlarsınız. İlkeler aynıdır, kimlik sağlayıcınızda Azure AD B2C teknik profilinin meta verilerini ve Azure AD B2C'de kimlik sağlayıcısının meta verilerini ayarlarsınız.
Her SAML kimlik sağlayıcısının hizmet sağlayıcısını kullanıma sunma ve ayarlamaya yönelik farklı adımları vardır. Bu durumda B2C Azure AD ve kimlik sağlayıcısındaki Azure AD B2C meta verilerini ayarlayabilirsiniz. Bunun nasıl yapılacağını öğrenmek için kimlik sağlayıcınızın belgelerine bakın.
Aşağıdaki örnekte, Azure AD B2C teknik profilinin SAML meta verilerinin URL adresi gösterilmektedir:
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile
Aşağıdaki değerleri değiştirin:
- kiracı adınız (örneğin, fabrikam.b2clogin.com).
- ilkenizin adını yazın. SAML sağlayıcısı teknik profilini yapılandırdığınız ilkeyi veya bu ilkeden devralan bir ilkeyi kullanın.
- saml kimlik sağlayıcısı teknik profil adı ile sizin-technical-profile.
Dijital imzalama sertifikaları değişimi
Azure AD B2C ile SAML kimlik sağlayıcınız arasında güven oluşturmak için özel anahtarla geçerli bir X509 sertifikası sağlamanız gerekir. Özel anahtar (.pfx dosyası) içeren sertifikayı Azure AD B2C ilke anahtar deposuna yüklersiniz. Azure AD B2C, sağladığınız sertifikayı kullanarak SAML oturum açma isteğini dijital olarak imzalar.
Sertifika aşağıdaki yollarla kullanılır:
- Azure AD B2C, sertifikanın Azure AD B2C özel anahtarını kullanarak bir SAML isteği oluşturur ve imzalar. SAML isteği, sertifikanın Azure AD B2C ortak anahtarını kullanarak isteği doğrulayan kimlik sağlayıcısına gönderilir. Azure AD B2C ortak sertifikasına teknik profil meta verileri aracılığıyla erişilebilir. Alternatif olarak, .cer dosyasını SAML kimlik sağlayıcınıza el ile yükleyebilirsiniz.
- Kimlik sağlayıcısı, kimlik sağlayıcısının sertifikanın özel anahtarını kullanarak Azure AD B2C'ye gönderilen verileri imzalar. Azure AD B2C, kimlik sağlayıcısının genel sertifikasını kullanarak verileri doğrular. Her kimlik sağlayıcısının kurulum için farklı adımları vardır. Bunun nasıl yapılacağını öğrenmek için kimlik sağlayıcınızın belgelerine bakın. Azure AD B2C'de ilkenizin kimlik sağlayıcısının meta verilerini kullanarak sertifika ortak anahtarına erişmesi gerekir.
Otomatik olarak imzalanan sertifika çoğu senaryo için kabul edilebilir. Üretim ortamları için, bir sertifika yetkilisi tarafından verilen bir X509 sertifikası kullanılması önerilir. Ayrıca, bu belgenin ilerleyen bölümlerinde açıklandığı gibi, üretim dışı bir ortam için saml imzalamayı her iki tarafta da devre dışı bırakabilirsiniz.
Aşağıdaki diyagramda meta veriler ve sertifika değişimi gösterilmektedir:
Dijital şifreleme
SAML yanıt onayını şifrelemek için kimlik sağlayıcısı her zaman Azure AD B2C teknik profilindeki bir şifreleme sertifikasının ortak anahtarını kullanır. Azure AD B2C'nin verilerin şifresini çözmesi gerektiğinde şifreleme sertifikasının özel bölümünü kullanır.
SAML yanıt onayını şifrelemek için:
- Özel anahtarla (.pfx dosyası) geçerli bir X509 sertifikasını Azure AD B2C ilke anahtar deposuna yükleyin.
- Teknik profil CryptographicKeys koleksiyonuna tanımlayıcısı
SamlAssertionDecryption
olan bir CryptographicKey öğesi ekleyin. StorageReferenceId değerini 1. adımda oluşturduğunuz ilke anahtarının adı olarak ayarlayın. -
WantsEncryptedAssertions teknik profil meta verilerini olarak
true
ayarlayın. - Kimlik sağlayıcısını 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.
Aşağıdaki örnekte, şifreleme için kullanılan SAML meta verilerinin Anahtar Tanımlayıcısı bölümü gösterilmektedir:
<KeyDescriptor use="encryption">
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>valid certificate</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
Protokol
Protocol öğesinin Name özniteliğinin olarak SAML2
ayarlanması gerekir.
Giriş talepleri
InputClaims öğesi, SAML Kimlik Doğrulama İsteğinin Konusu içinde bir NameId göndermek için kullanılır. Bunu başarmak için aşağıda gösterildiği gibi PartnerClaimType olarak ayarlanmış subject
bir giriş talebi ekleyin.
<InputClaims>
<InputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="subject" />
</InputClaims>
Çıkış talepleri
OutputClaims öğesi, bölümü altında SAML kimlik sağlayıcısı tarafından döndürülen taleplerin AttributeStatement
listesini içerir. İlkenizde tanımlanan talebin adını kimlik sağlayıcısında tanımlanan adla eşlemeniz gerekebilir. Özniteliğini ayarladığınız DefaultValue
sürece kimlik sağlayıcısı tarafından döndürülmeyecek talepleri de ekleyebilirsiniz.
Konu adı çıkış talebi
Konu'daki SAML onay adı kimliğini normalleştirilmiş bir talep olarak okumak için PartnerClaimType talebi değerini özniteliğin 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.
Aşağıdaki örnekte SAML kimlik sağlayıcısı tarafından döndürülen talepler gösterilmektedir:
- IssuerUserId talebi assertionSubjectName talebiyle eşlenir.
- first_name talebi givenName talebiyle eşlenir.
- last_name talebi soyad talebiyle eşlenir.
- displayName talebi ad talebiyle eşlenir.
- Ad eşlemesi olmadan e-posta talebi.
Teknik profil, kimlik sağlayıcısı tarafından döndürülmeyecek talepleri de döndürür:
- Kimlik sağlayıcısının adını içeren identityProvider talebi.
- socialIdpAuthentication varsayılan değerine sahip authenticationSource talebi.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>
OutputClaimsTransformations öğesi, çıkış taleplerini değiştirmek veya yenilerini oluşturmak için kullanılan OutputClaimsTransformation öğelerinin bir koleksiyonunu içerebilir.
Meta veri
Öznitelik | Gerekli | Açıklama |
---|---|---|
PartnerEntity | Yes | SAML kimlik sağlayıcısının meta verilerinin URL'si. Veya kimlik sağlayıcısı meta verilerini kopyalayın ve CDATA öğesinin <![CDATA[Your IDP metadata]]> içine ekleyin. Kimlik sağlayıcısı meta verilerinin eklenmesi önerilmez. Kimlik sağlayıcısı ayarları değiştirebilir veya sertifikayı güncelleştirebilir. Kimlik sağlayıcısı meta verileri değiştirildiyse, yeni meta verileri alın ve ilkenizi yenisiyle güncelleştirin. |
WantsSignedRequests | No | Teknik profilin tüm giden kimlik doğrulama isteklerinin imzalanması gerekip gerekmediğini gösterir. Olası değerler: true veya false .
true varsayılan değerdir. Değeri olarak ayarlandığındatrue , SamlMessageSigning şifreleme anahtarının belirtilmesi gerekir ve giden kimlik doğrulama isteklerinin tümü imzalanır. Değer olarak ayarlanırsafalse , 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 verilerinde çıktısı olan metadata 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 ayarlanırsa false veya belirtilmezse isteği imzalamaz. |
XmlSignatureAlgorithm | No | Azure AD B2C'nin SAML isteğini imzalamak için kullandığı yöntem. Bu meta veriler, SAML isteğindeki SigAlg parametresinin (sorgu dizesi veya post parametresi) değerini denetler. Olası değerler: Sha256 , Sha384 , Sha512 veya Sha1 (varsayılan). İ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. |
WantsSignedAssertions | No | Teknik profilin tüm gelen onayların imzalanması gerekip gerekmediğini gösterir. Olası değerler: true veya false .
true varsayılan değerdir. Değer olarak ayarlanırsatrue , kimlik sağlayıcısı tarafından Azure AD B2C'ye gönderilen tüm onaylar bölümü saml:Assertion imzalanmalıdır. Değer olarak ayarlanırsa false kimlik sağlayıcısı onayları imzalamamalıdır, ancak imzalasa bile Azure AD B2C imzayı doğrulamaz. Bu meta veriler ayrıca kimlik sağlayıcısıyla paylaşılan Azure AD B2C teknik profilinin meta verilerinde çıktısı olan WantsAssertionsSigned meta veri bayrağını da denetler. Onay doğrulamasını devre dışı bırakırsanız, yanıt imzası doğrulamasını da devre dışı bırakmak isteyebilirsiniz (daha fazla bilgi için bkz . ResponsesSigned). |
Yanıtlar İmzalandı | No | Olası değerler: true veya false .
true varsayılan değerdir. Değer olarak ayarlanırsa false kimlik sağlayıcısı SAML yanıtını imzalamamalıdır, ancak imzalasa bile Azure AD B2C imzayı doğrulamaz. Değer olarak ayarlanırsatrue , kimlik sağlayıcısı tarafından Azure AD B2C'ye gönderilen SAML yanıtı imzalanır ve doğrulanması gerekir. SAML yanıt doğrulamasını devre dışı bırakırsanız onay imzası doğrulamasını da devre dışı bırakmak isteyebilirsiniz (daha fazla bilgi için bkz . WantSignedAssertions). |
WantsEncryptedAssertions | No | Teknik profilin tüm gelen onayların şifrelenmesini gerektirip gerektirmediğini gösterir. Olası değerler: true veya false .
false varsayılan değerdir. Değer olarak ayarlanırsatrue , kimlik sağlayıcısı tarafından Azure AD B2C'ye gönderilen onaylar imzalanmalıdır ve SamlAssertionDecryption şifreleme anahtarı belirtilmelidir. Değer olarak ayarlanırsatrue , 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. Onay şifrelemesini etkinleştirirseniz yanıt imzası doğrulamasını da devre dışı bırakmanız gerekebilir (daha fazla bilgi için bkz . ResponsesSigned). |
NameIdPolicyFormat | No | İstenen konuyu temsil etmek için kullanılacak ad tanımlayıcısı üzerindeki kısıtlamaları belirtir. Atlanırsa, istenen konu için kimlik sağlayıcısı tarafından desteklenen herhangi bir tanımlayıcı türü kullanılabilir. Örneğin, urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified .
NameIdPolicyFormat, NameIdPolicyAllowCreate ile kullanılabilir. Hangi ad kimliği ilkelerinin desteklendiği konusunda rehberlik için kimlik sağlayıcınıza ait belgelere bakın. |
NameIdPolicyAllowCreate | No |
NameIdPolicyFormat kullanırken NameIDPolicy özelliğini de belirtebilirsinizAllowCreate . Bu meta verilerin değeri, true false kimlik sağlayıcısının oturum açma akışı sırasında yeni bir hesap oluşturmasına izin verilip verilmeyeceğini belirtmektir. Bunun nasıl yapılacağını öğrenmek için kimlik sağlayıcınıza ait belgelere bakın. |
AuthenticationRequestExtensions | No | Azure AD B2C ile kimlik sağlayıcısı arasında üzerinde anlaşmaya varılan isteğe bağlı protokol iletisi uzantısı öğeleri. Uzantı XML biçiminde sunulur. XML verilerini CDATA öğesinin <![CDATA[Your IDP metadata]]> içine eklersiniz. Uzantılar öğesinin desteklenip desteklenmediğini görmek için kimlik sağlayıcınızın belgelerine bakın. |
IncludeAuthnContextClassReferences | No | Kimlik doğrulaması bağlam sınıflarını tanımlayan bir veya daha fazla URI başvurusu belirtir. Örneğin, kullanıcının yalnızca kullanıcı adı ve parolayla oturum açmasına izin vermek için değerini olarak urn:oasis:names:tc:SAML:2.0:ac:classes:Password ayarlayın. Korumalı oturum (SSL/TLS) üzerinden kullanıcı adı ve parola üzerinden oturum açmaya izin vermek için belirtin PasswordProtectedTransport . Desteklenen AuthnContextClassRef URI'leri hakkında yönergeler için kimlik sağlayıcınızın belgelerine bakın. Virgülle ayrılmış liste olarak birden çok URI belirtin. |
IncludeKeyInfo | No | Bağlama olarak ayarlandığında HTTP-POST SAML kimlik doğrulama isteğinin sertifikanın ortak anahtarını içerip içermediğini gösterir. Olası değerler: true veya false . |
IncludeClaimResolvingInClaimsHandling | No | Giriş ve çıkış talepleri için, talep çözümlemesinin teknik profile dahil edilip edilmeyeceğini belirtir. Olası değerler: true veya false (varsayılan). Teknik profilde bir talep çözümleyicisi kullanmak istiyorsanız, bunu olarak true ayarlayın. |
SingleLogoutEnabled | No | Teknik profilde oturum açma sırasında federasyon kimlik sağlayıcılarının oturumunu kapatmayı deneyip denemediğini gösterir. Daha fazla bilgi için bkz. Azure AD B2C oturumu oturumu kapatma. Olası değerler: true (varsayılan) veya false . |
ForceAuthN | No | Dış SAML IDP'sinin kullanıcıdan kimlik doğrulaması isteyip istemediğinizi belirlemek için SAML kimlik doğrulama isteğindeki ForceAuthN değerini geçirir. Varsayılan olarak, Azure AD B2C ilk oturum açmada ForceAuthN değerini false olarak ayarlar. Oturum sıfırlanırsa (örneğin, in OIDC kullanılarak prompt=login ) ForceAuthN değeri olarak true ayarlanır. Meta veri öğesini aşağıda gösterildiği gibi ayarlamak, dış IDP'ye yapılan tüm isteklerin değerini zorlar. Olası değerler: true veya false . |
ProviderName | No | SAML kimlik doğrulama isteğindeki ProviderName değerini geçirir. |
Şifreleme anahtarları
CryptographicKeys öğesi aşağıdaki öznitelikleri içerir:
Öznitelik | Gerekli | Açıklama |
---|---|---|
SamlMessageSigning | Yes | SAML iletilerini imzalamak için kullanılacak X509 sertifikası (RSA anahtar kümesi). Azure AD B2C, istekleri imzalamak ve kimlik sağlayıcısına göndermek için bu anahtarı kullanır. |
SamlAssertionDecryption | No* | X509 sertifikası (RSA anahtar kümesi). SAML kimlik sağlayıcısı, SAML yanıtı onayını şifrelemek için sertifikanın genel bölümünü kullanır. Azure AD B2C, onaylama işleminin şifresini çözmek için sertifikanın özel bölümünü kullanır. * Dış IDP SAML onaylarını şifrelerse gereklidir. |
MetadataSigning | No | SAML meta verilerini imzalamak için kullanılacak X509 sertifikası (RSA anahtar kümesi). Azure AD B2C, meta verileri imzalamak için bu anahtarı kullanır. |
Sonraki adımlar
Azure AD B2C'de SAML kimlik sağlayıcılarıyla çalışma örnekleri için aşağıdaki makalelere bakın: