Aracılığıyla paylaş


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

Bu makalede , .NET için Open Web Arabirimi'ni (OWIN) uygulayan web API'lerinde birden çok belirteç veren için destek sağlama tekniği açıklanmaktadır. Birden çok belirteç uç noktasını desteklemek, Azure Active Directory B2C (Azure AD B2C) API'lerini ve uygulamalarını bir etki alanından diğerine geçirirken yararlıdır. Örneğin, login.microsoftonline.com'danb2clogin.com 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, api'den login.microsoftonline.com verilen belirteçler için desteği kaldırmadan önce web uygulamalarınızı aşamalı bir şekilde geçirebilirsiniz.

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ı alma

Ö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 aşağıdaki yordamı kullanın.

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

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

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

  3. Var olan bir ilkeyi (ö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, o kullanıcı akışının OpenID Connect bulma uç noktasına gitmek için köprüyü seçin.

    Azure portal Ş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 kaydedinissuer.

Ş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 gidin
  2. Kimlik Deneyimi Çerçevesi'ne tıklayın
  3. Bağlı olan taraf ilkelerinizden birini seçin, örneğin B2C_1A_signup_signin
  4. Etki alanı seçin açılan 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ğeri kaydetme
  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'niz de olduğuna göre, her iki uç noktanın da geçerli verenler olduğunu belirtmek için kodunuzu güncelleştirmeniz gerekir. Bir örneği gözden geçirebilmek için ö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 belirteç 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/"
        }
    };
    

TokenValidationParameters MSAL.NET tarafından sağlanır ve Startup.Auth.cs dosyasındaki 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 algılar.

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 vereni 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ç alacak şekilde güncelleştirmeniz gerekir.

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

ida:AadInstance TaskWebApp'inWeb.config değerini yerine başvurması {your-b2c-tenant-name}.b2clogin.comlogin.microsoftonline.comiçin değiştirin.

Önce:

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

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

<!-- 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ç 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 oluşturmak ve kendi kiracınızda ç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 bu konuda ayrıntılı 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ış.