Azure AD B2C ile Azure API Management API'lerinin güvenliğini sağlama
Azure API Management API'nize erişimi Azure Active Directory B2C (Azure AD B2C) ile kimlik doğrulaması yapılmış istemcilerle kısıtlamayı öğrenin. Azure API Management'ta erişimi yalnızca geçerli bir Azure AD B2C tarafından verilen erişim belirteci içeren isteklerle kısıtlayan bir gelen ilkesi oluşturmak ve test etmek için bu makaledeki yönergeleri izleyin.
Önkoşullar
Başlamadan önce aşağıdaki kaynaklara sahip olduğunuzdan emin olun:
- Azure AD B2C kiracısı
- Kiracınızda kayıtlı bir uygulama
- Kiracınızda oluşturulan kullanıcı akışları
- Azure API Management'ta yayımlanmış bir API
- (İsteğe bağlı) Güvenli erişimi test etmek için bir Postman platformu
Azure AD B2C uygulama kimliğini alma
Azure AD B2C ile Azure API Management'ta bir API'nin güvenliğini sağlarken, Azure API Management'ta oluşturduğunuz gelen ilkesi için çeşitli değerlere ihtiyacınız vardır. İlk olarak, Azure AD B2C kiracınızda daha önce oluşturduğunuz bir uygulamanın uygulama kimliğini kaydedin. Önkoşulları karşılamak için oluşturduğunuz uygulamayı kullanıyorsanız webapp1 için uygulama kimliğini kullanın.
Azure AD B2C kiracınıza bir uygulama kaydetmek için yeni, birleşik Uygulama kayıtları deneyimimizi veya eski Uygulamalar deneyimimizi kullanabilirsiniz. Yeni kayıt deneyimi hakkında daha fazla bilgi edinin.
- Azure Portal oturum açın.
- 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.
- Sol bölmede Azure AD B2C'yi seçin. Alternatif olarak, Tüm hizmetler'i ve ardından Azure AD B2C'yi arayıp seçebilirsiniz.
- Uygulama kayıtları'ı ve ardından Sahip olunan uygulamalar sekmesini seçin.
- Değeri webapp1 veya daha önce oluşturduğunuz başka bir uygulama için Uygulama (istemci) kimliği sütununa kaydedin.
Belirteç veren uç noktası alma
Ardından, Azure AD B2C kullanıcı akışlarınızdan biri için iyi bilinen yapılandırma URL'sini alın. Ayrıca, Azure API Management'ta desteklemek istediğiniz belirteç veren uç nokta URI'sine de ihtiyacınız vardır.
İlkeler'in altında Kullanıcı akışları'yı seçin.
Var olan bir ilkeyi (örneğin, B2C_1_signupsignin1) ve ardından Kullanıcı akışını çalıştır'ı seçin.
URL'yi sayfanın üst kısmındaki Kullanıcı akışını çalıştır başlığı altında görüntülenen köprüye kaydedin. Bu URL, kullanıcı akışı için openID Bağlan iyi bilinen bulma uç noktasıdır ve azure API Management'ta gelen ilkesini yapılandırırken bunu sonraki bölümde kullanacaksınız.
OpenID Bağlan iyi bilinen yapılandırma sayfasına gitmek için köprüyü seçin.
Tarayıcınızda açılan sayfada değeri kaydedin
issuer
. Örnek:https://<tenant-name>.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Azure API Management'ta API'nizi yapılandırırken sonraki bölümde bu değeri kullanacaksınız.
Bir sonraki bölümde kullanılmak üzere kaydedilmiş iki URL'niz olmalıdır: OpenID Bağlan iyi bilinen yapılandırma uç noktası URL'si ve veren URI'si. Örnek:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration
https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/
Azure API Management'ta gelen ilkesini yapılandırma
Artık Azure API Management'ta API çağrılarını doğrulayan gelen ilkesini eklemeye hazırsınız. Erişim belirtecinde hedef kitleyi ve vereni doğrulayan bir JSON web belirteci (JWT) doğrulama ilkesi ekleyerek yalnızca geçerli belirteci olan API çağrılarının kabul edilmesini sağlayabilirsiniz.
API’ler seçeneğini belirleyin.
Azure AD B2C ile güvenliğini sağlamak istediğiniz API'yi seçin.
Tasarım sekmesini seçin.
Gelen işleme'nin altında/> öğesini seçerek <ilke kodu düzenleyicisini açın.
İlkenin içine
<inbound>
aşağıdaki<validate-jwt>
etiketi yerleştirin ve aşağıdakileri yapın:a.
url
öğesindeki<openid-config>
değeri ilkenizin iyi bilinen yapılandırma URL'si ile güncelleştirin.
b.<audience>
öğesini daha önce B2C kiracınızda oluşturduğunuz uygulamanın uygulama kimliğiyle güncelleştirin (örneğin, webapp1).
c.<issuer>
öğesini daha önce kaydettiğiniz belirteç veren uç noktasıyla güncelleştirin.<policies> <inbound> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" /> <audiences> <audience>44444444-0000-0000-0000-444444444444</audience> </audiences> <issuers> <issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer> </issuers> </validate-jwt> <base /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
Güvenli API erişimini doğrulama
API'nize yalnızca kimliği doğrulanmış arayanların erişebildiğinden emin olmak için Api'yi Postman ile çağırarak Azure API Management yapılandırmanızı doğrulayabilirsiniz.
API'yi çağırmak için hem Azure AD B2C tarafından verilen erişim belirtecine hem de Azure API Management abonelik anahtarına ihtiyacınız vardır.
Bir erişim belirteci alma
Öncelikle Postman'deki üst bilgide kullanmak için Azure AD B2C tarafından verilen bir belirteci Authorization
kullanmanız gerekir. Önkoşullardan biri olarak oluşturduğunuz kaydolma/oturum açma kullanıcı akışının Şimdi çalıştır özelliğini kullanarak bir tane alabilirsiniz.
İlkeler'in altında Kullanıcı akışları'yı seçin.
Var olan bir kaydolma/oturum açma kullanıcı akışını seçin (örneğin, B2C_1_signupsignin1).
Uygulama için webapp1'i seçin.
Yanıt URL'si için öğesini seçin
https://jwt.ms
.Kullanıcı akışı çalıştır'ı seçin.
Oturum açma işlemini tamamlayın. adresine yönlendirilmelisiniz
https://jwt.ms
.Tarayıcınızda görüntülenen kodlanmış belirteç değerini kaydedin. Postman'deki Yetkilendirme üst bilgisi için bu belirteç değerini kullanırsınız.
API abonelik anahtarı alma
Yayımlanan API'yi çağıran bir istemci uygulaması (bu örnekte Postman), API'ye yönelik HTTP isteklerine geçerli bir API Management abonelik anahtarı içermelidir. Postman HTTP isteğinize eklenecek bir abonelik anahtarı almak için:
- Azure portalında Azure API Management hizmet örneğine gidin.
- Abonelikler'i seçin.
- Ürün: Sınırsız'ın yanındaki üç noktayı (...) ve ardından Anahtarları göster/gizle'yi seçin.
- Ürün için Birincil Anahtarı kaydedin. Postman'deki HTTP isteğinizdeki üst bilgi için
Ocp-Apim-Subscription-Key
bu anahtarı kullanırsınız.
Güvenli API çağrısını test edin
Erişim belirteci ve Azure API Management abonelik anahtarı kaydedildiyse artık API'ye güvenli erişimi doğru yapılandırıp yapılandırmadığınızı test etmeye hazırsınız.
Postman'de yeni
GET
bir istek oluşturun. İstek URL'si için, önkoşullardan biri olarak yayımladığınız API'nin konuşmacılar listesi uç noktasını belirtin. Örnek:https://contosoapim.azure-api.net/conference/speakers
Ardından aşağıdaki üst bilgileri ekleyin:
Anahtar Değer Authorization
Daha önce ön ekli Bearer
olarak kaydettiğiniz kodlanmış belirteç değeri ("Taşıyıcı" ifadesinin arkasına boşluk ekleyin)Ocp-Apim-Subscription-Key
Daha önce kaydettiğiniz Azure API Management abonelik anahtarı. GET isteği URL'niz ve Üst Bilgileriniz aşağıdaki görüntüde gösterilenlere benzer şekilde görünmelidir:
Postman'de, isteği yürütmek için Gönder düğmesini seçin. Her şeyi doğru yapılandırdıysanız, konferans konuşmacıları koleksiyonuyla birlikte bir JSON yanıtı verilmelidir (burada gösterilmiştir, kesilmiş):
{ "collection": { "version": "1.0", "href": "https://conferenceapi.azurewebsites.net:443/speakers", "links": [], "items": [ { "href": "https://conferenceapi.azurewebsites.net/speaker/1", "data": [ { "name": "Name", "value": "Scott Guthrie" } ], "links": [ { "rel": "http://tavis.net/rels/sessions", "href": "https://conferenceapi.azurewebsites.net/speaker/1/sessions" } ] }, [...]
Güvenli olmayan API çağrısını test edin
Başarılı bir istekte bulunduktan sonra api'nize yapılan çağrıların beklendiği gibi reddedildiğinden emin olmak için hata durumunu test edin. Testi gerçekleştirmenin bir yolu, belirteç değerine birkaç karakter eklemek veya değiştirmek ve ardından öncekiyle aynı GET
isteği çalıştırmaktır.
Geçersiz bir belirtecin benzetimini yapmak için belirteç değerine birkaç karakter ekleyin. Örneğin, burada gösterildiği gibi belirteç değerine "INVALID" ekleyebilirsiniz:
İsteği yürütmek için Gönder düğmesini seçin. Geçersiz bir belirteçle beklenen sonuç yetkisiz durum
401
kodudur:{ "statusCode": 401, "message": "Unauthorized. Access token is missing or invalid." }
Durum 401
kodu görüyorsanız yalnızca Azure AD B2C tarafından verilen geçerli erişim belirtecine sahip çağıranların Azure API Management API'nize başarılı isteklerde bulunabileceğini doğruladınız.
Birden çok uygulamayı ve vereni destekleme
Birkaç uygulama genellikle tek bir REST API ile etkileşim kurar. API'nizin birden çok uygulamaya yönelik belirteçleri kabul edebilmesi için uygulama kimliklerini <audiences>
Azure API Management gelen ilkesindeki öğesine ekleyin.
<!-- Accept tokens intended for these recipient applications -->
<audiences>
<audience>44444444-0000-0000-0000-444444444444</audience>
<audience>66666666-0000-0000-0000-666666666666</audience>
</audiences>
Benzer şekilde, birden çok belirteç vereni desteklemek için <issuers>
uç nokta URI'lerini Azure API Management gelen ilkesindeki öğesine ekleyin.
<!-- Accept tokens from multiple issuers -->
<issuers>
<issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
<issuer>https://login.microsoftonline.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
</issuers>
b2clogin.com geçiş
Eski login.microsoftonline.com
uç nokta tarafından verilen belirteçleri doğrulayan bir Azure API ManagementM API'niz varsa API'yi ve onu çağıran uygulamaları b2clogin.com tarafından verilen belirteçleri kullanacak şekilde geçirmeniz gerekir.
Aşamalı geçiş gerçekleştirmek için bu genel işlemi izleyebilirsiniz:
- Hem b2clogin.com hem de login.microsoftonline.com tarafından verilen belirteçler için Azure API Management gelen ilkenize destek ekleyin.
- b2clogin.com uç noktasından belirteçleri almak için uygulamalarınızı birer birer güncelleştirin.
- Tüm uygulamalarınız b2clogin.com doğru belirteçleri aldıktan sonra API'den login.microsoftonline.com tarafından verilen belirteçler desteğini kaldırın.
Aşağıdaki örnek Azure API Management gelen ilkesi, hem b2clogin.com hem de login.microsoftonline.com tarafından verilen belirteçlerin nasıl kabul edildiği gösterilmektedir. Ayrıca, ilke iki uygulamadan API isteklerini destekler.
<policies>
<inbound>
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
<audiences>
<audience>44444444-0000-0000-0000-444444444444</audience>
<audience>66666666-0000-0000-0000-666666666666</audience>
</audiences>
<issuers>
<issuer>https://login.microsoftonline.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
<issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
</issuers>
</validate-jwt>
<base />
</inbound>
<backend> <base /> </backend>
<outbound> <base /> </outbound>
<on-error> <base /> </on-error>
</policies>
Sonraki adımlar
Azure API Management ilkeleri hakkında ek bilgi için bkz . Azure API Management ilke başvuru dizini.
OWIN tabanlı web API'lerini ve uygulamalarını b2clogin.com geçirme hakkında bilgi için bkz . OWIN tabanlı web API'sini b2clogin.com geçirme.