Aracılığıyla paylaş


Azure Active Directory B2C'de OAuth 2.0 istemci kimlik bilgileri akışını ayarlama

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

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.

OAuth 2.0 istemci kimlik bilgileri verme akışı, bir uygulamanın (gizli istemci) rest API gibi bir web kaynağını çağırırken kimlik doğrulaması yapmak için kullanıcının kimliğine bürünmek yerine kendi kimlik bilgilerini kullanmasına izin verir. Kullanıcının anında etkileşime geçmesi gerekmeyen ve arka planda çalışması gereken sunucular arası etkileşimler için genellikle bu izin türü kullanılır. Bu tür uygulamalar genellikle daemon'lar veya hizmet hesapları olarak adlandırılır.

İstemci kimlik bilgileri akışında, izinler bir yönetici tarafından doğrudan uygulamanın kendisine verilir. Uygulama bir kaynağa bir belirteç gönderdiğinde, kaynak, kimlik doğrulama sırasında kullanıcı olmadığı için uygulamanın kendisinin eylem gerçekleştirme yetkisine sahip olduğunu doğrular. Bu makalede, bir uygulamayı API'yi çağırmak için yetkilendirmek için gereken adımlar ve bu API'yi çağırmak için gereken belirteçlerin nasıl alındığı açıklanmıştır.

Uyarı

Bu özellik genel önizleme aşamasındadır.

Uygulama kaydına genel bakış

Uygulamanızın istemci kimlik bilgileriyle oturum açmasını sağlamak ve ardından bir web API'sini çağırmak için Azure AD B2C dizinine iki uygulama kaydedersiniz.

  • Uygulama kaydı, uygulamanızın Azure AD B2C ile oturum açmasını sağlar. Uygulama kayıt işlemi, uygulamanızı benzersiz olarak tanımlayan istemci kimliği olarak da bilinen bir uygulama kimliği oluşturur. Ayrıca, uygulamanızın belirteçleri güvenli bir şekilde almak için kullandığı bir istemci gizli dizisi de oluşturursunuz.

  • Web API kaydı, uygulamanızın güvenli bir web API'sini çağırmasını sağlar. Kayıt, web API kapsamlarını içerir. Kapsamlar, web API'niz gibi korumalı kaynaklara yönelik izinleri yönetmek için bir yol sağlar. Ardından uygulamanıza web API'sinin kapsamları için izinler verirsiniz. Erişim belirteci istendiğinde, uygulamanız isteğin .default kapsam parametresini belirtir. Azure AD B2C, uygulamanıza verilen web API kapsamlarını döndürür.

Uygulama mimarisi ve kayıtları aşağıdaki diyagramda gösterilmiştir:

Web A P I çağrı kayıtları ve belirteçleri içeren bir web uygulamasının diyagramı.

1. Adım: Web API'sini kaydetme

Bu adımda, web API'sini (App 2) kapsamlarıyla kaydedersiniz. Daha sonra uygulamanıza (Uygulama 1) bu kapsamlar için izin verirsiniz. Zaten böyle bir uygulama kaydınız varsa bu adımı atlayın ve sonraki adım olan 1.1. Adım Web API rollerini (kapsamları) tanımlama bölümüne geçin.

Web API'si uygulama kaydını (Uygulama Kimliği: 2) oluşturmak için şu adımları izleyin:

  1. Azure portalınaoturum açın.

  2. Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini 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ında Azure AD B2C'yi arayın ve seçin.

  5. Uygulama kayıtlarıöğesini seçin, ve ardından Yeni kayıtöğesini seçin.

  6. Ad alanına uygulama için bir ad girin (örneğin, my-api1). Yeniden Yönlendirme URI'sinin ve Desteklenen hesap türlerinin varsayılan değerlerini değiştirmeyin.

  7. Kaydıseçin.

  8. Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.

  9. Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) Kimliği değerini kaydedin.

    Web A P I uygulaması I D'nin nasıl alınacağını gösteren ekran görüntüsü.

1.1. Adım Web API'si rollerini (kapsamları) tanımlama

Bu adımda web API'si Uygulama Kimliği URI'sini yapılandıracaksınız ve ardından Uygulama rollerini tanımlayacaksınız. OAuth 2.0 kapsamları tarafından kullanılan ve API'nizi temsil eden bir uygulama kaydında tanımlanan uygulama rolleri. Uygulamanız .default kapsamıyla birlikte Uygulama Kimliği URI'sini kullanır. Uygulama rollerini tanımlamak için şu adımları izleyin:

  1. Oluşturduğunuz web API'sini seçin, örneğin my-api1.

  2. Yönetaltında, Bir API'yi Kullanıma Sunmaseçin.

  3. Uygulama Kimliği URI'si'nin yanındaki Ayarla bağlantısını seçin. Varsayılan değeri (GUID) benzersiz bir adla (örneğin api) değiştirin ve kaydet'i seçin.

  4. Uygulama Kimliği URI'sini kopyalayın. Aşağıdaki ekran görüntüsünde Uygulama Kimliği URI'sinin nasıl kopyalanması gösterilmektedir.

    Uygulama I D'sinin nasıl kopyalanacağını gösteren ekran görüntüsü.

  5. Yönet'in altında Bildirim'i seçerek uygulama bildirim düzenleyicisini açın. Düzenleyicide appRoles ayarını bulun ve applications öğesini hedefleyen uygulama rollerini tanımlayın. Her uygulama rolü tanımının değeri için id genel benzersiz tanımlayıcısı (GUID) olmalıdır. Microsoft PowerShell'de veya new-guid komutunu çalıştırarak yeni bir GUID oluşturun. Her value uygulama rolü tanımının özelliği, scp talep kapsamında görünür. value özelliği boşluk içeremez. Aşağıdaki örnekte iki uygulama rolü gösterilmektedir: okuma ve yazma:

    "appRoles": [
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Read",
      "id": "d6a15e20-f83c-4264-8e61-5082688e14c8",
      "isEnabled": true,
      "description": "Readers have the ability to read tasks.",
      "value": "app.read"
    },
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Write",
      "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9",
      "isEnabled": true,
      "description": "Writers have the ability to create tasks.",
      "value": "app.write"
    }],
    
  6. Bildirim değişikliklerini kaydetmek için sayfanın üst kısmında Kaydet'i seçin.

2. Adım: Uygulamayı kaydetme

Uygulamanızın istemci kimlik bilgileri akışını kullanarak Azure AD B2C ile oturum açmasını sağlamak için mevcut bir uygulamayı kullanabilir veya yeni bir uygulama kaydedebilirsiniz (Uygulama 1).

Mevcut bir uygulamayı kullanıyorsanız, uygulamanın accessTokenAcceptedVersion öğesinin 2 olarak doğru ayarlı olduğundan emin olun.

  1. Azure portalında Azure AD B2C'yi arayın ve seçin.
  2. Ardından Uygulama kayıtları bölümünü ve listeden mevcut uygulamanızı seçin.
  3. Soldaki menüde , Yönet'in altında Bildirim'i seçerek bildirim düzenleyicisini açın.
  4. accessTokenAcceptedVersion öğesini bulun ve değerini olarak 2ayarlayın.
  5. Değişiklikleri kaydetmek için sayfanın üst kısmında Kaydet'i seçin.

Yeni bir web uygulaması kaydı oluşturmak için şu adımları izleyin:

  1. Azure portalında Azure AD B2C'yi arayın ve seçin

  2. Uygulama kayıtlarıöğesini seçin, ve ardından Yeni kayıtöğesini seçin.

  3. Uygulama için bir Ad girin. Örneğin , ClientCredentials_app.

  4. Diğer değerleri olduğu gibi bırakın ve kaydet'i seçin.

  5. Daha sonraki bir adımda kullanmak üzere Uygulama (istemci) kimliğini kaydedin.

    Uygulama kimliğinin nasıl alınacağını gösteren ekran görüntüsü.

2.1. Adım İstemci gizli anahtarı oluşturma

Kayıtlı uygulama için bir istemci sırrı oluşturun. Uygulamanız belirteç istediğinde kimliğini kanıtlamak için istemci gizli anahtarını kullanır.

  1. Yönet altında Sertifikalar ve gizli anahtarlar'ı seçin.

  2. Yeni istemci gizli anahtarını seçin.

  3. Açıklama kutusuna istemci gizli anahtarı için bir açıklama girin (örneğin, clientsecret1).

  4. Süre Sonu altında, gizli anahtarın geçerli olacağı süreyi seçin ve ardından Ekle'yi seçin.

  5. Sırrın Değerini kaydedin. Bu değeri sonraki bir adımda yapılandırma için kullanacaksınız.

    Uygulama gizli anahtarının nasıl kopyalanacağını gösteren ekran görüntüsü.

2.2. Adım Web API'sine uygulama izinleri verme

Uygulamanıza (Uygulama 1) izinleri vermek için şu adımları izleyin:

  1. Uygulama kayıtları'nı ve ardından oluşturduğunuz uygulamayı (Uygulama 1) seçin.

  2. Yönet altında API izinleri'ni seçin.

  3. Yapılandırılan izinler'in altında İzin ekle'yi seçin.

  4. API'lerim sekmesini seçin.

  5. Web uygulamasına erişim verilmesi gereken API'yi (Uygulama 2) seçin. Örneğin , my-api1 girin.

  6. Uygulama izni'ne tıklayın.

  7. İzin'in altında uygulamayı genişletin ve daha önce tanımladığınız kapsamları seçin (örneğin, app.read ve app.write).

    Uygulamaya P I izinleri verme işlemini gösteren ekran görüntüsü.

  8. İzinler ekle'yi seçin.

  9. <Kiracı adınız için yönetici onayı ver seçeneğini seçin>.

  10. Evet'i seçin.

  11. Yenile'yi seçin ve her iki kapsam için durum altında ... için verildi ifadesinin göründüğünü doğrulayın.

3. Adım: Erişim belirteci alma

Kullanıcı akışları veya özel ilkeler için istemci kimlik bilgilerini etkinleştirmeye yönelik belirli bir eylem yoktur. Hem Azure AD B2C kullanıcı akışları hem de özel ilkeler istemci kimlik bilgileri akışını destekler. Henüz yapmadıysanız, bir kullanıcı akışı veya özel ilke oluşturun. Ardından, yetkilendirme isteği oluşturmak için sık kullandığınız API geliştirme uygulamasını kullanın. POST isteğinin gövdesi olarak aşağıdaki bilgilerle bu örneğe benzer bir çağrı oluşturun:

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token

  • Azure AD B2C kiracınızın <tenant-name> değerini değiştirin. Örneğin, contoso.b2clogin.com.
  • <policy> değerini kullanıcı akışınızın tam adıyla veya özel ilkeyle değiştirin. Tüm kullanıcı akışı türlerinin ve özel ilkelerin istemci kimlik bilgileri akışını desteklediğini unutmayın. Sahip olduğunuz herhangi bir kullanıcı akışını veya özel ilkeyi kullanabilir ya da kaydolma veya oturum açma gibi yeni bir ilke oluşturabilirsiniz.
Anahtar Değer
izin_tipi client_credentials
müşteri_kimlik Adım 2'deki Uygulama Kaydı İçin İstemci Kimliği.
istemci_sırrı 2.1. Adım: İstemci gizli dizisini oluşturun kısmındaki İstemci gizli dizisi değeri.
kapsam Uygulama Kimliği URI'si1.1. Adım Web API rollerini (kapsamları) tanımlayın ve .default. Örneğin https://contoso.onmicrosoft.com/api/.default, veya https://contoso.onmicrosoft.com/00001111-aaaa-2222-bbbb-3333cccc4444/.default.

Gerçek POST isteği aşağıdaki örneğe benzer:

İstek:

POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=11112222-bbbb-3333-cccc-4444dddd5555
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default

Yanıt:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
    "token_type": "Bearer",
    "not_before": 1645172292,
    "expires_in": 3600,
    "expires_on": 1645175892,
    "resource": "11112222-bbbb-3333-cccc-4444dddd5555"
}

Dönüş erişim belirteci talepleri hakkında bilgi edinin. Aşağıdaki tabloda, istemci kimlik bilgileri akışıyla ilgili talepler listelenir.

İddia Açıklama Değer
aud Belirtecin hedeflenen alıcısını tanımlar. API'nin İstemci Kimliği .
sub Uygulama ile ilişkili olan hizmet sorumlusu, isteği başlatandır. Yetkilendirme isteğinin client_id servis yetkilisidir.
azp Yetkili taraf - erişim belirtecinin verildiği taraf. İsteği başlatan uygulamanın İstemci Kimliği . Yetkilendirme isteğinde client_id belirttiğiniz değerle aynıdır.
scp Uygulama API'niz tarafından kullanıma sunulan kapsam kümesi (alan sınırlayıcısı). İstemci kimlik bilgileri akışında, yetkilendirme isteği .default kapsamını isterken, token API tarafından kullanıma sunulan (ve uygulama yöneticisi tarafından onaylanan) kapsamların listesini içerir. Örneğin, app.read app.write.

3.1. Adım: Betik kullanarak erişim belirteci alma

Yapılandırmanızı test etmek için aşağıdaki PowerShell betiğini kullanın:

$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret

$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body

Yapılandırmanızı test etmek için aşağıdaki cURL betiğini kullanın:

curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'

4. Adım: Belirteci özelleştirme

Bu özellik yalnızca özel ilkeler için kullanılabilir. Kurulum adımları için, önceki seçicide Özel ilke'yi seçin.

Özel ilkeler, jeton çıkarma sürecini genişletmenin bir yolunu sağlar. OAuth 2.0 İstemci kimlik bilgilerinin kullanıcı yolculuğunu özelleştirmek için, istemci kimlik bilgilerini yapılandırma yönergelerini izleyin. Ardından, JwtIssuer teknik profiline, oluşturduğunuz kullanıcı yolculuğuna bir referans içeren ClientCredentialsUserJourneyId meta veriyi ekleyin.

Aşağıdaki örnek, ClientCredentialsUserJourneyId öğesinin belirteç veren teknik profile nasıl ekleneceğini gösterir.

<TechnicalProfile Id="JwtIssuer">
  <Metadata>
    <Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
  </Metadata>
</TechnicalProfile>

Aşağıdaki örnekte bir istemci kimlik bilgileri kullanıcı yolculuğu gösterilmektedir. İlk ve son düzenleme adımları gereklidir.

<UserJourneys>
  <UserJourney Id="ClientCredentialsJourney">
    <OrchestrationSteps>
      <!-- [Required] Do the client credentials -->
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Optional] Call a REST API or claims transformation -->
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Required] Issue the access token -->
      <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys>