Azure Active Directory B2C'de özel ilkeler kullanarak AD FS'yi SAML kimlik sağlayıcısı olarak ekleme

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

Dekont

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.

Bu makalede, Azure Active Directory B2C'de (Azure AD B2C) özel ilkeler kullanarak AD FS kullanıcı hesabı için oturum açmayı etkinleştirme işlemi gösterilmektedir. Özel bir ilkeye SAML kimlik sağlayıcısı ekleyerek oturum açmayı etkinleştirirsiniz.

Önkoşullar

  • Active Directory B2C'de özel ilkeleri kullanmaya başlama bölümündeki adımları tamamlayın.
  • Henüz yapmadıysanız bir web uygulaması kaydedin.

Otomatik olarak imzalanan sertifika oluşturma

Henüz bir sertifikanız yoksa, otomatik olarak imzalanan bir sertifika kullanabilirsiniz. Otomatik olarak imzalanan sertifika, sertifika yetkilisi (CA) tarafından imzalanmayan ve CA tarafından imzalanan bir sertifikanın güvenlik garantilerini sağlamayan bir güvenlik sertifikasıdır.

Windows'da, sertifika oluşturmak için PowerShell'de New-SelfSignedCertificate cmdlet'ini kullanın.

  1. Otomatik olarak imzalanan bir sertifika oluşturmak için aşağıdaki PowerShell komutunu çalıştırın. bağımsız değişkenini -Subject uygulamanız ve Azure AD B2C kiracı adı gibi uygun şekilde contosowebapp.contoso.onmicrosoft.comdeğiştirin. Ayrıca, sertifika için -NotAfter farklı bir süre sonu belirtmek üzere tarihi ayarlayabilirsiniz.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Windows bilgisayarda Kullanıcı sertifikalarını yönet'i arayın ve seçin

  3. Sertifikalar - Geçerli Kullanıcı'nın altında Kişisel>Sertifikalar>yourappname.yourtenant.onmicrosoft.com'ni seçin.

  4. Sertifikayı seçin ve ardından Tüm Görevleri>Dışarı Aktar eylemini>seçin.

  5. İleri>Evet, özel anahtarı>dışarı aktar İleri'yi seçin.

  6. Dosya Biçimini Dışarı Aktar varsayılanlarını kabul edin ve İleri'yi seçin.

  7. Parolayı Etkinleştir seçeneğini belirleyin, sertifika için bir parola girin ve İleri'yi seçin.

  8. Sertifikanızı kaydedeceğiniz konumu belirtmek için Gözat'ı seçin ve istediğiniz bir dizine gidin.

  9. Farklı Kaydet penceresinde bir Dosya adı girin ve Kaydet'i seçin.

  10. İleri>Son seçeneğini belirleyin.

Azure AD B2C'nin .pfx dosya parolasını kabul etmesi için, parolanın AES256-SHA256 yerine Windows Sertifika Deposu Dışarı Aktarma yardımcı programındaki TripleDES-SHA1 seçeneğiyle şifrelenmesi gerekir.

İlke anahtarı oluşturma

Sertifikanızı Azure AD B2C kiracınızda depolamanız gerekir.

  1. Azure Portal oturum açın.
  2. Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden Azure AD B2C kiracınıza geçmek için üstteki menüden Ayarlar simgesini seçin.
  3. Azure portalının sol üst köşesindeki Tüm hizmetler'i seçin ve ardından Azure AD B2C'yi arayıp seçin.
  4. Genel Bakış sayfasında Kimlik Deneyimi Çerçevesi'ni seçin.
  5. İlke Anahtarları'nı ve ardından Ekle'yi seçin.
  6. Seçenekler için öğesini seçinUpload.
  7. İlke anahtarı için bir Ad girin. Örneğin, SAMLSigningCert. Ön ek B2C_1A_ , anahtarınızın adına otomatik olarak eklenir.
  8. Özel anahtarla sertifika .pfx dosyanıza gidin ve dosyayı seçin.
  9. Oluştur’a tıklayın.

Talep sağlayıcısı ekleme

Kullanıcıların BIR AD FS hesabı kullanarak oturum açmasını istiyorsanız, hesabı Azure AD B2C'nin bir uç nokta üzerinden iletişim kurabileceği bir talep sağlayıcısı olarak tanımlamanız gerekir. Uç nokta, belirli bir kullanıcının kimliğini doğrulamak için Azure AD B2C tarafından kullanılan bir dizi talep sağlar.

Ad FS hesabını, ilkenizin uzantı dosyasındaki ClaimsProviders öğesine ekleyerek talep sağlayıcısı olarak tanımlayabilirsiniz. Daha fazla bilgi için bkz . SAML kimlik sağlayıcısı tanımlama.

  1. TrustFrameworkExtensions.xml dosyasını açın.

  2. ClaimsProviders öğesini bulun. Yoksa kök öğesinin altına ekleyin.

  3. Aşağıdaki gibi yeni bir ClaimsProvider ekleyin:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-SAML2">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your AD FS account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="WantsEncryptedAssertions">false</Item>
            <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userPrincipalName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. değerini your-AD-FS-domain AD FS etki alanınızın adıyla değiştirin ve identityProvider çıkış talebi değerini DNS'nizle (etki alanınızı gösteren rastgele değer) değiştirin.

  5. <ClaimsProviders> bölümünü bulun ve aşağıdaki XML parçacığını ekleyin. İlkeniz teknik profili zaten içeriyorsa SM-Saml-idp sonraki adıma geçin. Daha fazla bilgi için bkz . çoklu oturum açma oturumu yönetimi.

    <ClaimsProvider>
      <DisplayName>Session Management</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="SM-Saml-idp">
          <DisplayName>Session Management Provider</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="IncludeSessionIndex">false</Item>
            <Item Key="RegisterServiceProviders">false</Item>
          </Metadata>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  6. Dosyayı kaydedin.

Kullanıcı yolculuğu ekleme

Bu noktada, kimlik sağlayıcısı ayarlanmıştır, ancak henüz oturum açma sayfalarından herhangi birinde kullanılamaz. Kendi özel kullanıcı yolculuğunuz yoksa, mevcut şablon kullanıcı yolculuğunun bir kopyasını oluşturun, aksi takdirde sonraki adıma geçin.

  1. Başlangıç paketinden TrustFrameworkBase.xml dosyasını açın.
  2. içeren Id="SignUpOrSignIn"UserJourney öğesinin tüm içeriğini bulun ve kopyalayın.
  3. TrustFrameworkExtensions.xml dosyasını açın ve UserJourneys öğesini bulun. Öğesi yoksa bir tane ekleyin.
  4. UserJourneys öğesinin alt öğesi olarak kopyaladığınız UserJourney öğesinin tüm içeriğini yapıştırın.
  5. Kullanıcı yolculuğunun kimliğini yeniden adlandırın. Örneğin, Id="CustomSignUpSignIn".

Kimlik sağlayıcısını kullanıcı yolculuğuna ekleme

Artık bir kullanıcı yolculuğunuz olduğuna göre, yeni kimlik sağlayıcısını kullanıcı yolculuğuna ekleyin. Önce bir oturum açma düğmesi eklersiniz, ardından düğmeyi bir eyleme bağlarsınız. Eylem, daha önce oluşturduğunuz teknik profildir.

  1. veya içeren düzenleme adımı öğesini Type="CombinedSignInAndSignUp"Type="ClaimsProviderSelection" kullanıcı yolculuğunda bulun. Genellikle ilk düzenleme adımıdır. ClaimsProviderSelections öğesi, kullanıcının oturum açabileceği kimlik sağlayıcılarının listesini içerir. Öğelerin sırası, kullanıcıya sunulan oturum açma düğmelerinin sırasını denetler. ClaimsProviderSelection XML öğesi ekleyin. TargetClaimsExchangeId değerini kolay bir ad olarak ayarlayın.

  2. Sonraki düzenleme adımında claimsexchange öğesi ekleyin. Kimliği hedef talep değişim kimliğinin değerine ayarlayın. TechnicalProfileReferenceId değerini daha önce oluşturduğunuz teknik profilin kimliğine güncelleştirin.

Aşağıdaki XML, kimlik sağlayıcısıyla bir kullanıcı yolculuğunun ilk iki düzenleme adımını gösterir:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-SAML2" />
  </ClaimsExchanges>
</OrchestrationStep>

Bağlı olan taraf ilkesini yapılandırma

Bağlı olan taraf ilkesi, örneğin SignUpSignIn.xml, Azure AD B2C'nin yürüteceği kullanıcı yolculuğunu belirtir. Bağlı olan taraf içinde DefaultUserJourney öğesini bulun. ReferenceId değerini, kimlik sağlayıcısını eklediğiniz kullanıcı yolculuğu kimliğiyle eşleşecek şekilde güncelleştirin.

Aşağıdaki örnekte, kullanıcı yolculuğu için CustomSignUpSignIn ReferenceId değeri olarak CustomSignUpSignInayarlanmıştır:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Özel ilkeyi karşıya yükleme

  1. Azure Portal oturum açın.
  2. Portal araç çubuğunda Dizin + Abonelik simgesini ve ardından Azure AD B2C kiracınızı içeren dizini seçin.
  3. Azure portalında Azure AD B2C'yi arayın ve seçin.
  4. İlkeler'in altında Kimlik Deneyimi Çerçevesi'ne tıklayın.
  5. Özel İlkeyi Karşıya Yükle'yi seçin ve değiştirdiğiniz iki ilke dosyasını şu sırayla karşıya yükleyin: uzantı ilkesi, örneğin TrustFrameworkExtensions.xml, ve gibi SignUpSignIn.xmlbağlı olan taraf ilkesi.

AD FS bağlı olan taraf güvenini yapılandırma

AD FS'yi Azure AD B2C'de kimlik sağlayıcısı olarak kullanmak için Azure AD B2C SAML meta verileriyle bir AD FS Bağlı Taraf Güveni oluşturmanız gerekir. 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

Özel etki alanı kullanırken aşağıdaki biçimi kullanın:

https://your-domain-name/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile

Aşağıdaki değerleri değiştirin:

  • kiracınızın adıyla (örneğin, your-tenant.onmicrosoft.com).
  • login.contoso.com gibi özel etki alanı adınız ile etki alanınız-adınız .
  • ilkenizin adını yazın. Örneğin, B2C_1A_signup_signin_adfs.
  • saml kimlik sağlayıcısı teknik profilinizin adıyla sizin-technical-profiliniz. Örneğin, Contoso-SAML2.

Bir tarayıcı açın ve URL'ye gidin. Doğru URL'yi yazdığınızdan ve XML meta veri dosyasına erişiminiz olduğundan emin olun. AD FS Yönetimi ek bileşenini kullanarak yeni bir bağlı olan taraf güveni eklemek ve ayarları el ile yapılandırmak için, federasyon sunucusunda aşağıdaki yordamı uygulayın. Yönetici istrators veya yerel bilgisayardaki eşdeğer üyelik, bu yordamı tamamlamak için gereken en düşük değerdir.

  1. Sunucu Yöneticisi'nde Araçlar'ı ve sonra AD FS Yönetimi'ni seçin.

  2. Bağımlı Taraf Güveni Ekle'yi seçin.

  3. Hoş Geldiniz sayfasında Talep kullanan'ı ve ardından Başlat'ı seçin.

  4. Veri Kaynağı Seç sayfasında Bağlı olan taraf çevrimiçi yayımlama veya yerel ağda verileri içeri aktar'ı seçin, Azure AD B2C meta veri URL'nizi sağlayın ve ardından İleri'yi seçin.

  5. Görünen Ad Belirtin sayfasında, Bir Görünen ad girin, Notlar'ın altına bu bağlı olan taraf güveni için bir açıklama girin ve İleri'yi seçin.

  6. Erişim Denetimi İlkesi Seç sayfasında bir ilke seçin ve ardından İleri'yi seçin.

  7. Güven Eklemeye Hazır sayfasında ayarları gözden geçirin ve ardından bağlı olan taraf güven bilgilerinizi kaydetmek için İleri'yi seçin.

  8. Son sayfasında Kapat'ı seçtiğinizde, bu eylem Talep Kurallarını Düzenle iletişim kutusunu otomatik olarak görüntüler.

  9. Kural Ekle'yi seçin.

  10. Talep kuralı şablonunda LDAP özniteliklerini talep olarak gönder'i seçin.

  11. Talep kuralı adı girin. Öznitelik deposu için Active Directory Seç'i seçin, aşağıdaki talepleri ekleyin, ardından Son ve Tamam'ı seçin.

    LDAP özniteliği Giden talep türü
    Kullanıcı Asıl Adı userPrincipalName
    Surname family_name
    Verilen Ad given_name
    E-posta Adresi e-posta
    Görünen Ad name

    Bazı adların giden talep türü açılan listesinde görüntülenmeyeceğini unutmayın. Bunları el ile yazmanız gerekir. (Açılan menü düzenlenebilir).

  12. Sertifika türünüz temelinde KARMA algoritmasını ayarlamanız gerekebilir. Bağlı olan taraf güveni (B2C Tanıtım) özellikleri penceresinde Gelişmiş sekmesini seçin, Güvenli karma algoritmasınıolarak SHA-256değiştirin ve Tamam'ı seçin.

  13. Sunucu Yöneticisi'nde Araçlar'ı ve sonra AD FS Yönetimi'ni seçin.

  14. Oluşturduğunuz bağlı olan taraf güvenini seçin, Federasyon Meta Verilerinden Güncelleştir'i ve ardından Güncelleştir'i seçin.

Özel ilkenizi test edin

  1. Azure Portal oturum açın.
  2. Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden Azure AD B2C kiracınıza geçmek için üstteki menüden Ayarlar simgesini seçin.
  3. Azure portalında Azure AD B2C'yi arayın ve seçin.
  4. İlkeler'in altında Kimlik Deneyimi Çerçevesi'ne tıklayın
  5. Bağlı olan taraf ilkenizi seçin, örneğin B2C_1A_signup_signin.
  6. Uygulama için daha önce kaydettiğiniz bir web uygulamasını seçin. Yanıt URL'si göstermelidirhttps://jwt.ms.
  7. Şimdi çalıştır düğmesini seçin.
  8. Contoso AD FS kimlik sağlayıcısıyla oturum açmak için kaydolma veya oturum açma sayfasında Contoso AD FS'yi seçin.

Oturum açma işlemi başarılı olursa, tarayıcınız Azure AD B2C tarafından döndürülen belirtecin içeriğini görüntüleyen öğesine yönlendirilir https://jwt.ms.

AD FS hizmeti sorunlarını giderme

AD FS, Windows uygulama günlüğünü kullanacak şekilde yapılandırılmıştır. Azure AD B2C'de özel ilkeler kullanarak AD FS'yi SAML kimlik sağlayıcısı olarak ayarlamayla ilgili zorluklarla karşılaşırsanız, AD FS olay günlüğünü denetlemek isteyebilirsiniz:

  1. Windows Search çubuğuna Olay Görüntüleyicisi yazın ve ardından Olay Görüntüleyicisi masaüstü uygulamasını seçin.
  2. Farklı bir bilgisayarın günlüğünü görüntülemek için Olay Görüntüleyicisi (yerel) öğesine sağ tıklayın. Başka bir bilgisayara Bağlan seçin ve Bilgisayar Seç iletişim kutusunu tamamlamak için alanları doldurun.
  3. Olay Görüntüleyicisi'da Uygulama ve Hizmet Günlükleri'ni açın.
  4. AD FS'yi ve ardından Yönetici'ı seçin.
  5. Bir olay hakkında daha fazla bilgi görüntülemek için olaya çift tıklayın.

SAML isteği beklenen imza algoritması olayıyla imzalı değil

Bu hata, Azure AD B2C tarafından gönderilen SAML isteğinin AD FS'de yapılandırılmış beklenen imza algoritmasıyla imzalanmadığını gösterir. Örneğin, SAML isteği imza algoritmasıyla rsa-sha256imzalanır, ancak beklenen imza algoritması olur rsa-sha1. Bu sorunu çözmek için hem Azure AD B2C hem de AD FS'nin aynı imza algoritmasıyla yapılandırıldığından emin olun.

1. Seçenek: Azure AD B2C'de imza algoritmasını ayarlama

Azure AD B2C'de SAML isteğini imzalamayı yapılandırabilirsiniz. XmlSignatureAlgorithm meta verileri, SAML isteğindeki parametrenin SigAlg (sorgu dizesi veya post parametre) değerini denetler. Aşağıdaki örnek, Azure AD B2C'yi imza algoritmasını rsa-sha256 kullanacak şekilde yapılandırılır.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>

2. Seçenek: AD FS'de imza algoritmasını ayarlama

Alternatif olarak, AD FS'de beklenen SAML istek imzası algoritmasını yapılandırabilirsiniz.

  1. Sunucu Yöneticisi'nde Araçlar'ı ve sonra AD FS Yönetimi'ni seçin.
  2. Daha önce oluşturduğunuz Bağlı Taraf Güveni'ni seçin.
  3. Özellikler'i ve ardından İlerle'yi seçin
  4. Güvenli karma algoritmasını yapılandırın ve değişiklikleri kaydetmek için Tamam'ı seçin.

HTTP-Redirect isteği, imzalı istek için gerekli 'signature' parametresini içermiyor (AADB2C90168)

Seçenek 1: Azure AD B2C'de ResponsesSigned değerini false olarak ayarlayın

Azure AD B2C'de imzalı ileti gereksinimini devre dışı bırakabilirsiniz. Aşağıdaki örnek, Azure AD B2C'yi imzalı istek için 'Signature' parametresi gerektirmemesi için yapılandırılır.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="ResponsesSigned">false</Item>
</Metadata>

2. Seçenek: AD FS'de bağlı olan tarafı hem İletiyi hem de Onay'ı imzalayacak şekilde ayarlayın

Alternatif olarak, bağlı olan tarafı aşağıda belirtildiği gibi AD FS'de yapılandırabilirsiniz:

  1. PowerShell'i Yönetici istrator olarak açın ve hem İleti hem de Onay'ı imzalamak için cmdlet'i çalıştırınSet-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion.
  2. Komutunu çalıştırın Set-AdfsRelyingPartyTrust -TargetName <RP Name> ve SamlResponseSignature özelliğinin MessageAndAssertion olarak ayarlandığını onaylayın.