OWIN tabanlı web API'sini b2clogin.com veya özel etki alanına geçirme

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

Bu makalede , .NET için Açık Web Arabirimi'ni (OWIN) uygulayan web API'lerinde birden çok belirteç verene yönelik desteği etkinleştirmeye yönelik bir teknik açıklanmaktadır. Azure Active Directory B2C (Azure AD B2C) API'lerini ve uygulamalarını bir etki alanından diğerine geçirirken birden çok belirteç uç noktasını desteklemek yararlı olur. Örneğin, login.microsoftonline.com'danb2clogin.com'a veya özel bir etki alanına.

API'nize b2clogin.com, login.microsoftonline.com veya özel bir etki alanı tarafından verilen belirteçleri kabul etme desteği ekleyerek, login.microsoftonline.com tarafından verilen belirteçler için API desteğini kaldırmadan önce web uygulamalarınızı aşamalı olarak taşıyabilirsiniz.

Aşağıdaki bölümlerde , Microsoft OWIN ara yazılım bileşenlerini (Katana) kullanan bir web API'sinde birden çok verenin nasıl etkinleştirileceğine ilişkin bir örnek verilmiştir. Kod örnekleri Microsoft OWIN ara yazılımına özgü olsa da, genel teknik diğer OWIN kitaplıkları için geçerli olmalıdır.

Önkoşullar

Bu makaledeki adımlara devam etmeden önce aşağıdaki Azure AD B2C kaynaklarının yerinde olması gerekir:

Belirteç veren uç noktalarını edinin

Öncelikle API'nizde desteklemek istediğiniz her veren için belirteç veren uç nokta URI'lerini almanız gerekir. Azure AD B2C kiracınız tarafından desteklenen b2clogin.com ve login.microsoftonline.com uç noktalarını almak için Azure portalında aşağıdaki yordamı kullanın.

Mevcut kullanıcı akışlarınızdan birini seçerek başlayın:

  1. Azure portalında Azure AD B2C kiracınıza gidin

  2. İlkeler altında Kullanıcı akışları (ilkeler) seçeneğini seçin

  3. Var olan bir ilkeyi seçin, örneğin B2C_1_signupsignin1 ve ardından Kullanıcı akışını çalıştır'ı seçin

  4. Sayfanın üst kısmındaki Kullanıcı akışını çalıştır başlığı altında, köprüyü seçerek bu kullanıcı akışının OpenID Connect bulma uç noktasına gidin.

    Azure portalının Şimdi çalıştır sayfasında iyi bilinen URI köprüsü

  5. Tarayıcınızda açılan sayfada değeri kaydedin issuer , örneğin:

    https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

  6. Diğer etki alanını seçmek için Etki alanı seçin açılan listesini kullanın, ardından önceki iki adımı bir kez daha gerçekleştirin ve değerini kaydedin issuer .

Şimdi kaydedilmiş aşağıdakine benzer iki URI'niz olmalıdır:

https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

Özel ilkeler

Kullanıcı akışları yerine özel ilkeleriniz varsa, veren URI'leri almak için benzer bir işlem kullanabilirsiniz.

  1. Azure AD B2C kiracınıza erişin
  2. Kimlik Deneyimi Çerçevesi'ne tıklayın
  3. Bağlı taraf ilkelerinizden birini seçin, örneğin B2C_1A_signup_signin
  4. Alan adı seç açılır listesini kullanarak bir etki alanı seçin, örneğin yourtenant.b2clogin.com
  5. OpenID Connect bulma uç noktası altında görüntülenen köprüyü seçin
  6. issuer değerini kaydedin
  7. Diğer etki alanı için 4-6 arası adımları gerçekleştirin, örneğin login.microsoftonline.com

Örnek kodunu alma

Artık her iki belirteç uç noktası URI'sine sahip olduğunuza göre, her iki uç noktanın da geçerli yetkilendiriciler olduğunu belirtmek için kodunuzu güncelleştirmeniz gerekir. Bir örneği izleyip örnek uygulamayı indirin veya kopyalayın, ardından örneği her iki uç noktayı da geçerli verenler olarak destekleyecek şekilde güncelleştirin.

Arşivi indirin: active-directory-b2c-dotnet-webapp-and-webapi-master.zip

git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git

Web API'sinde birden çok vereni etkinleştirme

Bu bölümde, her iki jeton veren uç noktasının da geçerli olduğunu belirtmek için kodu güncelleştirirsiniz.

  1. Visual Studio'da B2C-WebAPI-DotNet.sln çözümünü açma

  2. TaskService projesinde, düzenleyicinizde TaskService\App_Start\Startup.Auth.cs dosyasını açın

  3. Dosyanın en üstüne aşağıdaki using yönergeyi ekleyin:

    using System.Collections.Generic;

  4. ValidIssuers özelliğini TokenValidationParameters tanıma ekleyin ve önceki bölümde kaydettiğiniz her iki URI'yi de belirtin:

    TokenValidationParameters tvps = new TokenValidationParameters
    {
        // Accept only those tokens where the audience of the token is equal to the client ID of this app
        ValidAudience = ClientId,
        AuthenticationType = Startup.DefaultPolicy,
        ValidIssuers = new List<string> {
            "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/",
            "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//,
            //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"
        }
    };
    

TokenValidationParametersMSAL.NET tarafından sağlanır ve Startup.Auth.cs kodun sonraki bölümünde OWIN ara yazılımı tarafından tüketilir. Birden çok geçerli veren belirtildiğinde, OWIN uygulama işlem hattı her iki belirteç uç noktasının da geçerli verenler olduğunu fark eder.

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    // This SecurityTokenProvider fetches the Azure AD B2C metadata &  from the OpenID Connect metadata endpoint
    AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});

Daha önce belirtildiği gibi, diğer OWIN kitaplıkları genellikle birden çok sağlayıcıyı desteklemek için benzer bir özellik sağlar. Her kitaplık için örnek sağlamak bu makalenin kapsamı dışında olsa da, çoğu kitaplık için benzer bir teknik kullanabilirsiniz.

Web uygulamasında uç noktaları değiştirme

Her iki URI de web API'niz tarafından desteklendiği için artık web uygulamanızı b2clogin.com uç noktasından belirteçleri alacak şekilde güncelleştirmeniz gerekir.

Örneğin, TaskWebApp projesinin TaskWebApp\ida:AadInstance dosyasındaki değeri değiştirerek örnek web uygulamasını yeni uç noktayı kullanacak şekilde yapılandırabilirsiniz.

ida:AadInstance değerini, TaskWebApp'taki Web.config içinde {your-b2c-tenant-name}.b2clogin.com yerine login.microsoftonline.com'ye başvuracak şekilde değiştirin.

Önce:

<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />

"Sonra, {your-b2c-tenant} değerini B2C kiracınızın adıyla değiştirin:"

<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />

Web uygulamasının yürütülmesi sırasında uç nokta dizeleri oluşturulduğunda, belirteçler istediğinde b2clogin.com tabanlı uç noktalar kullanılır.

Özel etki alanı kullanılırken:

<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />

Sonraki Adımlar

Bu makalede, birden çok veren uç noktasından belirteçleri kabul etmek için Microsoft OWIN ara yazılımını (Katana) uygulayan bir web API'sini yapılandırma yöntemi sunulmuştur. Fark edebileceğiniz gibi, hem TaskService hem de TaskWebApp projelerinin Web.Config dosyalarında, bu projeleri kendi kiracınızda oluşturmak ve çalıştırmak istiyorsanız değiştirilmesi gereken birkaç dize daha vardır. Projelerin nasıl çalıştığını görmek istiyorsanız, projeleri uygun şekilde değiştirebilirsiniz, ancak bunu yapmak için tam bir adım adım bu makalenin kapsamı dışındadır.

Azure AD B2C tarafından yayılan farklı güvenlik belirteçleri türleri hakkında daha fazla bilgi için bkz. Azure Active Directory B2C'de belirteçlere genel bakış.