Aracılığıyla paylaş


Azure Active Directory B2C kullanarak genel OpenID Bağlan ile kaydolma ve oturum açma ayarlama

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.

OpenID Bağlan, güvenli kullanıcı oturum açma için kullanılabilecek OAuth 2.0 üzerinde oluşturulmuş bir kimlik doğrulama protokolüdür. Bu protokolü kullanan kimlik sağlayıcılarının çoğu Azure AD B2C'de desteklenir.

Bu makalede, kullanıcı akışlarınıza özel OpenID Bağlan kimlik sağlayıcılarını nasıl ekleyebileceğiniz açıklanmaktadır.

Önemli

Uç noktalarınız Azure AD B2C güvenlik gereksinimlerine uygun olmalıdır. Eski TLS sürümleri ve şifreleri kullanım dışıdır. Daha fazla bilgi için bkz . Azure AD B2C TLS ve şifre paketi gereksinimleri.

Önkoşullar

Kimlik sağlayıcısını ekleme

  1. Azure portalda Azure AD B2C kiracınızın genel yöneticisi olarak 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 sol üst köşesinde Tüm hizmetler’i seçin ve Azure AD B2C’yi arayıp seçin.
  4. Kimlik sağlayıcıları'yı ve ardından Yeni OpenID Bağlan sağlayıcı'yı seçin.
  5. Bir Ad girin. Örneğin Contoso yazın.

OpenId Bağlan kimlik sağlayıcısını ilkenizin uzantı dosyasındaki ClaimsProviders öğesine ekleyerek tanımlayın.

  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>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Kimlik sağlayıcısını yapılandırma

Her OpenID Bağlan kimlik sağlayıcısı, oturum açmayı gerçekleştirmek için gereken bilgilerin çoğunu içeren bir meta veri belgesini açıklar. Meta veri belgesi, kullanılacak URL'ler ve hizmetin genel imzalama anahtarlarının konumu gibi bilgileri içerir. OpenID Bağlan meta veri belgesi her zaman ile .well-known/openid-configurationbiten bir uç noktada bulunur. Eklemek istediğiniz OpenID Bağlan kimlik sağlayıcısı için meta veri URL'sini girin.

Meta veri url'sinde OpenID Bağlan meta veri belgesinin URL'sini girin.

Teknik profil meta verilerine <Item Key="METADATA"> OpenID Bağlan meta veri belgesinin URL'sini girin.

İstemci kimliği ve gizli dizi

Kullanıcıların oturum açmasına izin vermek için, kimlik sağlayıcısı geliştiricilerin hizmetlerinde bir uygulama kaydetmesini gerektirir. Bu uygulama, istemci kimliği ve istemci gizli dizisi olarak adlandırılan bir kimliğe sahiptir.

İstemci gizli dizisi isteğe bağlıdır. Ancak, Yanıt türücodebelirtecin kodunu değiştirmek için gizli diziyi kullanan bir istemci gizli dizisi sağlamanız gerekir.

İstemci kimliğini ve istemci gizli dizisini eklemek için bu değerleri kimlik sağlayıcısından kopyalayın ve ilgili alanlara girin.

Teknik profil meta verilerine <Item Key="client_id"> istemci kimliğini girin.

İlke anahtarı oluşturma

İstemci gizli dizisi gerekiyorsa, daha önce Azure AD B2C kiracınızda kaydettiğiniz istemci gizli dizisini depolayın.

  1. Azure Portal oturum açın.

  2. Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizin + abonelik filtresini seçin.

  3. Portal ayarlarında | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.

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

  5. Genel Bakış sayfasında Kimlik Deneyimi Çerçevesi'ni seçin.

  6. İlke Anahtarları'nı ve ardından Ekle'yi seçin.

  7. Seçenekler için öğesini seçinManual.

  8. İlke anahtarı için bir Ad girin. Örneğin, ContosoSecret. Ön ek B2C_1A_ , anahtarınızın adına otomatik olarak eklenir.

  9. Gizli Dizi alanına daha önce kaydettiğiniz gizli dizinizi girin.

  10. Anahtar kullanımı için öğesini seçinSignature.

  11. Oluştur’a tıklayın.

  12. CryptographicKeys XML öğesine aşağıdaki öğeyi ekleyin:

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Scope

Kapsam, örneğin openid profilekimlik sağlayıcınızdan toplamak istediğiniz bilgileri ve izinleri tanımlar. Kimlik belirtecini kimlik sağlayıcısından almak için kapsamın openid belirtilmesi gerekir.

Kimlik belirteci olmadan, kullanıcılar özel kimlik sağlayıcısını kullanarak Azure AD B2C'de oturum açamaz. Diğer kapsamlar boşlukla ayrılmış olarak eklenebilir. Diğer kapsamları görmek için özel kimlik sağlayıcısının belgelerine bakın.

Kapsam alanına kimlik sağlayıcısının kapsamlarını girin. Örneğin, openid profile.

Teknik profil meta verilerine <Item Key="scope"> kimlik sağlayıcısının kapsamlarını girin. Örneğin, openid profile.

Yanıt türü

Yanıt türü, özel kimlik sağlayıcısının ilk çağrısında authorization_endpoint ne tür bilgilerin geri gönderildiğini açıklar. Aşağıdaki yanıt türleri kullanılabilir:

  • code: Yetkilendirme kodu akışına göre bir kod Azure AD B2C'ye geri döndürülür. Azure AD B2C, belirtecin kodunu değiştirmek için öğesini çağırmaya token_endpoint devam eder.
  • id_token: Özel kimlik sağlayıcısından Azure AD B2C'ye bir kimlik belirteci geri döndürülür.

Yanıt türünde, kimlik sağlayıcısı ayarlarınıza göre , veya id_tokenöğesini seçincode.

Teknik profil meta verilerinde<Item Key="response_types">, veya id_token kimlik sağlayıcısı ayarlarınıza göre öğesini seçincode.

Yanıt modu

Yanıt modu, verileri özel kimlik sağlayıcısından Azure AD B2C'ye geri göndermek için kullanılacak yöntemi tanımlar. Aşağıdaki yanıt modları kullanılabilir:

  • form_post: En iyi güvenlik için bu yanıt modu önerilir. Yanıt HTTP yöntemi aracılığıyla POST iletilir ve kod veya belirteç biçimi kullanılarak application/x-www-form-urlencoded gövdede kodlanır.
  • query: Kod veya belirteç sorgu parametresi olarak döndürülür.

Yanıt modunda, kimlik sağlayıcısı ayarlarınıza göre , veya queryöğesini seçinform_post.

Teknik profil meta verilerinde<Item Key="response_mode">, kimlik sağlayıcısı ayarlarınıza göre , veya queryöğesini seçinform_post.

Etki alanı ipucu

Etki alanı ipucu , kullanıcının kullanılabilir kimlik sağlayıcıları listesinden seçim yapmasını sağlamak yerine doğrudan belirtilen kimlik sağlayıcısının oturum açma sayfasına atlamak için kullanılabilir.

Bu tür bir davranışa izin vermek için etki alanı ipucu için bir değer girin. Özel kimlik sağlayıcısına atlamak için, oturum açmak üzere Azure AD B2C'yi çağırırken isteğinizin sonuna parametresini domain_hint=<domain hint value> ekleyin.

Etki alanı ipucunda , etki alanı ipucunda kullanılan bir etki alanı adı girin.

Teknik profil XML öğesinde <Domain>contoso.com</Domain> , etki alanı ipucunda kullanılan bir etki alanı adı girin. Örneğin, contoso.com.

Talep eşlemesi

Özel kimlik sağlayıcısı Azure AD B2C'ye bir kimlik belirteci gönderdikten sonra, Azure AD B2C'nin alınan belirteçten gelen talepleri Azure AD B2C'nin tanıdığı ve kullandığı taleplerle eşleyebilmesi gerekir. Aşağıdaki eşlemelerin her biri için, kimlik sağlayıcısının belirteçlerinde geri döndürülen talepleri anlamak için özel kimlik sağlayıcısının belgelerine bakın:

  • Kullanıcı Kimliği: Oturum açmış kullanıcının benzersiz tanımlayıcısını sağlayan talebi girin.
  • Görünen Ad: Kullanıcı için görünen adı veya tam adı sağlayan talebi girin.
  • Verilen Ad: Kullanıcının adını sağlayan talebi girin.
  • Soyadı: Kullanıcının soyadını sağlayan talebi girin.
  • E-posta: Kullanıcının e-posta adresini sağlayan talebi girin.

öğesi, OutputClaims kimlik sağlayıcınız 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şleyin. öğesinin <OutputClaims> altında, özniteliğini PartnerClaimType kimlik sağlayıcınız tarafından tanımlanan karşılık gelen talep adıyla yapılandırın.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Oturum açmış kullanıcının benzersiz tanımlayıcısını sağlayan talebi girin.
displayName Kullanıcı için görünen adı veya tam adı sağlayan talebi girin.
givenName Kullanıcının adını sağlayan talebi girin.
surName Kullanıcının soyadını sağlayan talebi girin.
email Kullanıcının e-posta adresini sağlayan talebi girin.
identityProvider Belirteç verenin adını sağlayan talebi girin. Örneğin, iss. Kimlik sağlayıcısı belirteçte veren talebi içermiyorsa, özniteliğini kimlik sağlayıcınızın DefaultValue benzersiz bir tanımlayıcısıyla ayarlayın. Örneğin, DefaultValue="contoso.com".

Kimlik sağlayıcısını kullanıcı akışına ekleme

  1. Azure AD B2C kiracınızda Kullanıcı akışları'yı seçin.
  2. Kimlik sağlayıcısını eklemek istediğiniz kullanıcı akışına tıklayın.
  3. Sosyal kimlik sağlayıcıları'nın altında, eklediğiniz kimlik sağlayıcısını seçin. Örneğin, Contoso.
  4. Kaydet'i seçin.

Kullanıcı akışınızı test edin

  1. İlkenizi test etmek için Kullanıcı akışını çalıştır'ı seçin.
  2. Uygulama için daha önce kaydettiğiniz testapp1 adlı web uygulamasını seçin. Yanıt URL'si göstermelidirhttps://jwt.ms.
  3. Kullanıcı akışını çalıştır düğmesini seçin.
  4. Kaydolma veya oturum açma sayfasından, oturum açmak istediğiniz kimlik sağlayıcısını seçin. Örneğin, Contoso.

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.

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-OpenIdConnect" />
  </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.
  1. Bağlı olan taraf ilkenizi seçin, örneğin B2C_1A_signup_signin.
  2. Uygulama için daha önce kaydettiğiniz bir web uygulamasını seçin. Yanıt URL'si göstermelidirhttps://jwt.ms.
  3. Şimdi çalıştır düğmesini seçin.
  4. Google hesabıyla oturum açmak için kaydolma veya oturum açma sayfasında Contoso'ya tıklayın.

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.

Bilinen Sorunlar

  • Azure AD B2C, OpenID connect kimlik sağlayıcılarıyla şifrelenmiş belirteçler alışverişi için JWE'yi (JSON Web Şifrelemesi) desteklemez.

Sonraki adımlar

Daha fazla bilgi için bkz. OpenId Bağlan teknik profil başvuru kılavuzu.