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:
İlkeler'in altında Kullanıcı akışları (ilkeler) seçeneğini belirleyin
Var olan bir ilkeyi (örneğin B2C_1_signupsignin1) ve ardından Kullanıcı akışını çalıştır'ı seçin
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.
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/
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.
- Azure AD B2C kiracınıza gidin
- Kimlik Deneyimi Çerçevesi'ne tıklayın
- Bağlı olan taraf ilkelerinizden birini seçin, örneğin B2C_1A_signup_signin
- Etki alanı seçin açılan listesini kullanarak bir etki alanı seçin, örneğin yourtenant.b2clogin.com
- OpenID Connect bulma uç noktası altında görüntülenen köprüyü seçin
-
issuer
Değeri kaydetme - 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.
Visual Studio'da B2C-WebAPI-DotNet.sln çözümünü açma
TaskService projesinde, düzenleyicinizde TaskService\App_Start\Startup.Auth.cs dosyasını açın
Dosyanın en üstüne aşağıdaki
using
yönergeyi ekleyin:using System.Collections.Generic;
ValidIssuers
özelliğiniTokenValidationParameters
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.com
login.microsoftonline.com
iç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ış.